林江楠 发表于 2021-10-25 18:59:40

可能我不理解break的含义

#include <stdio.h>

#define MAX 1024

int main()
{
      char str1;
      char str2;
      int i = 0;
      unsigned int n;

      printf("请输入第一个字符串:");
      while ((str1 = getchar()) != '\n')
                ;

      printf("请输入第二个字符串:");
      i = 0;
      while ((str2 = getchar()) != '\n')
                ;

      printf("请输入比较的字符数:");
      scanf("%u", &n);

      for (i = 0; i < n; i++)
      {
                if (str1 - str2)
                {
                        i++;
                        break;
                }
      }

      printf("比较的结果是:%d\n", str1 - str2);

      return 0;
}


for循环里的if语句表达式为真的情况下,break直接跳出循环了,怎末判断后面的字符。

不理解这个地方,还有我不能编出这个程序,是我太笨了吗?

每次都有看不懂的题目

jackz007 发表于 2021-10-25 19:24:53

本帖最后由 jackz007 于 2021-10-25 19:32 编辑

      这个题应该是输出两个字符串中的第一个不同的字符,所以,在逐字符比较的过程中,当两个字符串的对应字符不相等时,就立即使用 break 语句直接终止循环,至于后面的字符,自然就不需要再继续比较了。
       如果两个字符串一致,那么,printf() 输出的就是两个字符串结束标志 '\0' 的差值 0。如果不一致,输出的就是两个字符串中头一个不同字符 ASCII 编码的差值。

hujiamiao1990 发表于 2021-10-25 19:51:13

#include <stdio.h>

#define MAX 1024

int main()
{
      char str1;
      char str2;
      int i = 0;
      unsigned int n;

      printf("请输入第一个字符串:");
      while ((str1 = getchar()) != '\n')
                ;

      printf("请输入第二个字符串:");
      i = 0;
      while ((str2 = getchar()) != '\n')
                ;

      printf("请输入比较的字符数:");
      scanf("%u", &n);

      for (i = 0; i < n; i++)
      {
                if (str1 - str2)
                {
                        i++;//这里和打印的-1多余了
                        break;
                }
      }

      printf("比较的结果是:%d\n", str1 - str2);//i如果是0的话括号中会是[-1]

      return 0;
}

林江楠 发表于 2021-10-25 20:09:36

hujiamiao1990 发表于 2021-10-25 19:51


i++不多余把,i= 0的话i-1等于0
这是小甲鱼给的标准答案,也许这就是他的强大之处
页: [1]
查看完整版本: 可能我不理解break的含义