当前位置: 首页 > news >正文

c语言编程题经典100例——(41~45例)

1,实现动态内存分配。

在C语言中,动态内存分配使用malloccallocreallocfree函数。以下是一个示例:

#include <stdio.h>  
#include <stdlib.h>  int main() {  int *ptr = NULL; // 初始化为空  int n = 5; // 假设我们想要分配5个整数的空间  // 使用malloc分配内存  ptr = (int*)malloc(n * sizeof(int));   if(ptr == NULL)                       {  printf("Memory not allocated.\n");  exit(0);  }  else  {  printf("Memory successfully allocated using malloc.\n");  for(int i = 0; i < n; ++i)  // 为新分配的内存赋值  ptr[i] = i + 1;  printf("The elements of the array are: ");  for(int i = 0; i < n; ++i)  // 打印数组元素  printf("%d, ", ptr[i]);  }  free(ptr); // 使用完之后,使用free函数释放内存  return 0;  
}

这个程序首先使用malloc函数动态分配了足够的内存来存储5个整数。然后,它检查是否成功分配了内存。如果内存分配失败,程序将打印错误消息并退出。如果内存分配成功,程序将使用这块内存来存储一些数据,并打印出这些数据。最后,当程序不再需要这块内存时,它使用free函数来释放这块内存。

2,实现字符串的操作(反转、连接、截取等)。

C 语言提供了许多用于字符串操作的标准函数,以下是一些示例:

a 字符串反转:

#include <stdio.h>  
#include <string.h>  void reverse_string(char* str) {  int len = strlen(str);  char temp;  for(int i = 0; i < len / 2; i++) {  temp = str[i];  str[i] = str[len - i - 1];  str[len - i - 1] = temp;  }  
}  int main() {  char str[] = "Hello, World!";  reverse_string(str);  printf("%s\n", str);  // 输出:!dlroW ,olleH  return 0;  
}

这个函数通过交换字符串的前半部分和后半部分来反转字符串。

b 字符串连接:

#include <stdio.h>  
#include <string.h>  void string_concat(char* dest, const char* src) {  strcat(dest, src);  // 使用标准库函数strcat来实现连接  
}  int main() {  char dest[50] = "Hello, ";  const char* src = "World!";  string_concat(dest, src);  printf("%s\n", dest);  // 输出:Hello, World!  return 0;  
}

这个函数使用标准库函数strcat来连接两个字符串。注意,目标字符串需要有足够的空间来存储结果。

        c 字符串截取:

#include <stdio.h>  
#include <string.h>  void substring(char* str, int start, int end) {  // 使用标准库函数strncpy来实现截取  strncpy(str, str + start, end - start + 1);  str[end - start + 1] = '\0';  // 添加字符串结束标志  
}  int main() {  char str[] = "Hello, World!";  substring(str, 7, 12);  // 从第7个字符开始,截取到第12个字符(不包括第12个字符)  printf("%s\n", str);  // 输出:World!  return 0;  
}

这个函数使用标准库函数strncpy来截取字符串的一部分。注意,目标字符串需要有足够的空间来存储结果,并且截取的结束位置是不包括在内的。

3,实现日期格式化。

在C语言中,可以使用标准库函数strftime()来格式化日期。这个函数可以将日期格式化为指定的字符串格式。

下面是一个示例代码,演示如何使用strftime()函数来格式化日期:

#include <stdio.h>  
#include <time.h>  int main() {  time_t t = time(NULL);  // 获取当前时间  struct tm* tm = localtime(&t);  // 转换为本地时间  char date[20];  strftime(date, sizeof(date), "%Y-%m-%d", tm);  // 格式化日期  printf("今天的日期是:%s\n", date);  return 0;  
}

在这个示例中,我们首先使用time()函数获取当前时间,并将其转换为structtm类型,以便于进行日期格式化。然后,我们使用strftime()函数将日期格式化为指定的字符串格式,这里使用了%Y-%m-%d格式,表示年-月-日。最后,我们使用printf()函数输出格式化后的日期字符串。

需要注意的是,strftime()函数的第一个参数是一个指向字符数组的指针,用于存储格式化后的日期字符串。第二个参数是字符数组的大小,以字节为单位。第三个参数是日期字符串的格式,可以使用不同的格式化标记来指定不同的日期格式。第四个参数是一个指向structtm类型的指针,用于指定要格式化的日期和时间。

4,实现进制转换(十进制转其他进制)。

以下是一个使用C语言实现将十进制数转换为其他进制的示例代码:

#include <stdio.h>  void decimalToBase(int decimal, int base) {  int remainder = decimal % base;  int quotient = decimal / base;  if (quotient == 0) {  printf("%d", remainder);  } else {  decimalToBase(quotient, base);  printf("%d", remainder);  }  
}  int main() {  int decimal, base;  printf("Enter a decimal number: ");  scanf("%d", &decimal);  printf("Enter the base to convert to (2-16): ");  scanf("%d", &base);  printf("The base %d representation of %d is: ", base, decimal);  decimalToBase(decimal, base);  printf("\n");  return 0;  
}

在这个示例中,我们定义了一个decimalToBase()函数,用于将十进制数转换为其他进制。该函数使用递归算法实现。首先,我们计算出十进制数除以目标基数的商和余数。如果商为0,则说明当前余数就是转换后的最低位;否则,递归调用decimalToBase()函数,继续处理商,最后输出余数。在main()函数中,我们通过调用decimalToBase()函数,将输入的十进制数转换为指定的其他进制。用户需要输入要转换的十进制数和目标进制。程序将输出转换后的结果。需要注意的是,此示例中仅支持将十进制数转换为2-16的进制。如果需要支持更大的进制范围,需要相应地调整代码。

5,实现数字转字符串。

在C语言中,将数字转换为字符串可以通过几种不同的方法,包括使用sprintf()函数,或使用一个一个字符地构建字符串。这里有两种简单的示例:

方法一:使用sprintf()函数

#include <stdio.h>  int main() {  int num = 12345;  char str[20];  sprintf(str, "%d", num);  printf("The string is: %s\n", str);  return 0;  
}

在这个例子中,sprintf()函数被用来将整数num转换为字符串,并存储在str中。

方法二:一个一个字符地构建字符串

这种方法涉及到数字转化的每个数字除以10,然后取余数得到该位的数字,再通过ASCII码将数字转换为字符。

#include <stdio.h>  void intToStr(int num) {  char str[20];  int i = 0;  while(num != 0) {  int digit = num % 10;  str[i++] = '0' + digit; // 通过ASCII码将数字转换为字符  num /= 10;  }  str[i] = '\0'; // 在字符串末尾添加结束符  printf("The string is: %s\n", str);  
}  int main() {  int num = 12345;  intToStr(num);  return 0;  
}

在这个例子中,我们定义了一个名为intToStr的函数,该函数将整数转换为字符串。然后在main函数中调用该函数。

http://www.lryc.cn/news/250785.html

相关文章:

  • 计算机毕业设计|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现
  • java学习part27线程死锁
  • (二)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • 区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测
  • LD_PRELOAD劫持、ngixn临时文件、无需临时文件rce
  • 循环神经网络训练情感分析
  • 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
  • 【C/C++笔试练习】公有派生、构造函数内不执行多态、抽象类和纯虚函数、多态中的缺省值、虚函数的描述、纯虚函数的声明、查找输入整数二进制中1的个数、手套
  • Linux shell中的函数定义、传参和调用
  • YoloV8改进策略:基于RevCol,可逆的柱状神经网络的完美迁移,YoloV8的上分利器
  • 九章量子计算机:引领量子计算的新篇章
  • 什么是vue的计算属性
  • Linux中文件的打包压缩、解压,下载到本地——zip,tar指令等
  • C语言——深入理解指针(4)
  • Linux基础命令(超全面,建议收藏!)
  • LeetCode刷题---合并两个有序链表
  • SQL Server 2008 使用concat报错
  • 视频后期效果制作工具Mocha Pro 2022 Plugins mac中文版软件介绍
  • 人工智能时代:AIGC的横空出世
  • 基于ChatGPT等大模型快速爬虫提取网页内容
  • JavaScript WebAPI(三)(详解)
  • LeetCode哈希表:最长连续序列
  • SpringBoot+redis实现接口防刷
  • 5G承载网和大客户承载的演进
  • 智慧工地一体化解决方案(里程碑管理)源码
  • 熬夜会秃头——beta冲刺Day2
  • 【linux】信号——信号保存+信号处理
  • 雷军:我的程序人生路
  • Linux 磁盘分区处理
  • 利用ogr2ogr从PostGIS中导出/导入Tab/Dxf/Geojson等格式数据