A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这里总结了4种方式,越往后越绕。。。。。。。
  1. /*
  2. 要求:编写一个函数:char_contains(char str[], char c)用来判断字符串是否含有字符c,含有就返回1,否则返回0
  3. */

  4. #include <stdio.h>
  5. #include <string.h>

  6. int char_contains(char str[], char c);

  7. int main()
  8. {
  9.     char name[] = "itcast";
  10.    
  11.     int result = char_contains(name, '8');
  12.    
  13.     printf("%d\n", result);
  14.    
  15.    
  16.     return 0;
  17. }

  18. /*
  19. // 方式1:for语句
  20. int char_contains(char str[], char c)
  21. {
  22.     // 1.遍历整个字符串数组
  23.     for (int i = 0; i < strlen(str); i++) {
  24.         
  25.         //2.如果发现某个字符和参数c一样,就返回1,并且退出函数
  26.         if (str[i] == c) {
  27.             return 1;
  28.         }
  29.         // 注意:return 0不是写在这里
  30.     }
  31.    
  32.     //3.说明str里面不包含字符c
  33.     return 0; // 写在这里说明代码遍历完也没return1,就返回0
  34. } */

  35. /*
  36. // 方式2:while语句
  37. int char_contains(char str[], char c)
  38. {
  39.     // 1.遍历整个字符串数组
  40.     int i = 0;
  41.     while (str[i] != '\0') {
  42.         //2.如果发现某个字符和参数c一样,就返回1,并且退出函数
  43.         if (str[i] == c) {
  44.             return 1;
  45.         }
  46.         
  47.         i++;
  48.     }
  49.    
  50.     //3.说明str里面不包含字符c
  51.     return 0; // 写在这里说明代码遍历完也没return1,就返回0
  52. }*/

  53. /*
  54. // 方式3:while语句(简化)
  55. int char_contains(char str[], char c)
  56. {
  57.     // 1.遍历整个字符串数组
  58.     int i = 0;
  59.     while (str[i]) { // while (str[i] != 0)——>while (str[i])
  60.         //2.如果发现某个字符和参数c一样,就返回1,并且退出函数
  61.         if (str[i] == c) {
  62.             return 1;
  63.         }
  64.         
  65.         i++;
  66.     }
  67.    
  68.     //3.说明str里面不包含字符c
  69.     return 0; // 写在这里说明代码遍历完也没return1,就返回0
  70. }*/

  71. /*
  72. // 方式3:while语句(再次简化)
  73. int char_contains(char str[], char c)
  74. {
  75.     // 1.遍历整个字符串数组
  76.     int i = -1;
  77.     while (str[++i]) { // while (str[i] != 0)——>while (str[i])
  78.         //2.如果发现某个字符和参数c一样,就返回1,并且退出函数
  79.         if (str[i] == c) {
  80.             return 1;
  81.         }
  82.         
  83.     }
  84.    
  85.     //3.说明str里面不包含字符c
  86.     return 0; // 写在这里说明代码遍历完也没return1,就返回0
  87.    
  88. }*/


  89. // 方式4:while语句(精简)
  90. int char_contains(char str[], char c)
  91. {
  92.     // 1.遍历整个字符串数组
  93.     int i = -1;
  94.     while (str[++i] != c && str[i] != '\0') ; // str[++i] != c && str[i] != '\0'(此时前面的str[++i]和后面的str[i]为数组中的同一个字符  ++i:先加1在参与运算)即如果当前值不与c相等且不是\0,条件就成立,便执行循环体(空语句)
  95.    
  96.     // 2.判断
  97.      return str[i] == '\0' ? 0 : 1; // 如果遍历到\0即字符串最后一个字符,说明前面的值都没有与c相同的字符,就返回0,否则返回1(此时并没有遍历到\0)
  98.     //return str[i] != '\0'; // 上面的变形
  99.    
  100. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马