【趣学C语言和数据结构100例】

[复制链接]
发表于 2024-10-22 22:52:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
【趣学C语言和数据结构100例】

问题描述


  • 编写一个程序,将两个字符串 s1 和 s2 比力
  • 编写一个程序,将字符数组 s2 中的全部字符复制到字符数组 s1 中,不用 strcpy 函数。复制时,‘0’ 也要赋值已往。“0”之后的字符不复制。
  • 编写一个程序,求字符数组 s 的长度,不用 strlen 函数。数组 s 从键盘输入,长度不超过 50。
  • 输入一行字符,统计此中有多少个单词,单词之间用空格分开。
  • 利用递归方法求 5!
代码分析

21.字符串比力
分析:gets输入2个字符串s1和s2,如果s1>s2,输出一个整数:若 s1=s2,输出 0:若sl<s2,输出一个负数:输出的正数或负数的绝对值应是相比力的两个字符串相对应字符的 ASCI 码的差值。所以条件为!(ret=s1[index]-s2[index]) && s1[index]!=‘\0’ && s2[index]!=‘\0’。
22.字符串赋值,不用 strcpy 函数
分析:scanf输入2个字符串s1和s2,条件为s2[index] != ‘\0’,注意’0’ 也要赋值已往。跳出循环后, s1[index] = s2[index];。
23.字符串长度,不用 strlen 函数
分析:scanf输入1个字符串s1,条件为s[index++]!=‘\0’,用来计数。
24. 统计单词个数
分析:gets输入1个字符串s1,利用for循环,每次遇到’ '(空格),则计数。
25.初识递归
分析:递归在与定义func,并在func中利用func,和递归的结束条件。本题为递归求 5!,1.定义func(n),2.返回值为:return nfunc(n-1),递归的结束条件if(n1 || n0){return 1;} 否则一直return nfunc(n-1)
代码实现

  1. #include <stdio.h>
  2. //25的递归
  3. int fact(int x){
  4.         int sum=0;
  5.         if(x==1 || x==0){
  6.                 sum=1;
  7.         }
  8.         else{
  9.                 sum=x*fact(x-1);       
  10.         }
  11.         return sum;
  12. }
  13. int main()
  14. {
  15. //        21.编写一个程序,将连个字符串 s1 和 s2 比较,
  16. //        如果s1>s2,输出一个整数:若 s1=s2,输出 0:若sl<s2,输出一个负数:
  17. //        若s1>s2,输出一两个一个正数。不要用 strcmp 函数:字符串用 gets 函数读入。
  18. //        输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的 ASCI 码的差值。
  19. //        例如,“A"和“C”相比,由于"A”<“℃”,应输出负数,同时由于'A'与'C的 ASCI 码差值为 2,
  20. //        因此应输出"-2"。同理:“And”和"Aid"相比较,根据第2个字符比较结果,“n"比"i"大 5,因此应输出"5”
  21.         char s1[100] = {0};
  22.     char s2[50] = {0};
  23.     int index = 0,ret=0;
  24.     printf("输入字符串 s1: ");
  25.     gets(s1);
  26.     printf("输入字符串 s2: ");
  27.     gets(s2);
  28.     while(!(ret=s1[index]-s2[index])  &&  s1[index]!='\0'  &&  s2[index]!='\0'){
  29.             index++;
  30.         }
  31.         printf("%d\n",ret);
  32. //        22.编写一个程序,将字符数组s2 中的全部字符复制到字符数组 s1 中,不用 strcpy 函数。复制时, '0’也要赋值过去。“0’之后的字符不复制。
  33.         char s1[100] = {0};
  34.     char s2[50] = {0};
  35.     int index = 0;
  36.     printf("输入字符串 s1: ");
  37.     scanf("%s", s1);
  38.     printf("输入字符串 s2: ");
  39.     scanf("%s", s2);
  40.     while (s2[index] != '\0') {
  41.         s1[index] = s2[index];
  42.         index++;
  43.     }
  44.     s1[index] = s2[index];
  45.     printf("字符数组s2 中的全部字符复制到字符数组 s1的字符串:%s\n", s1);
  46. //        23.编写一个程序,求字符数组s的长度,不用 stlen 函数。数组s山键盘输入,长度不超过 50.
  47.         char s[100] = {0};
  48.     int index = 0;
  49.     printf("输入字符串 s: ");
  50.     scanf("%s", s);
  51.     while(s[index++]!='\0'){
  52.         }
  53.     printf("宁符数组s的长度:%d\n", index-1);
  54. //        24.输入一行字符,统计其中有多少个单词,单词之间用空格分开。
  55.         char s[100] = {0};
  56.     int num = 0;
  57.     printf("输入字符串 s: ");
  58.     gets(s);
  59.     for(int i=0;s[i]!='\0';i++){
  60.             if(s[i]==' '){
  61.                         num++;
  62.                 }
  63.         }
  64.     printf("宁符数组s的长度:%d\n", num);
  65.    
  66. //        25.利用递归方法求 5!
  67.         int n,num;
  68.         printf("输入递归方法的数:");
  69.         scanf("%d",&n);
  70.         num=fact(n);
  71.         printf("递归法求%d!的值为:%d",n,num);
  72.        
  73.         return 0;
  74. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-10 03:05 , Processed in 0.084419 second(s), 28 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表