萌笨笨萌 发表于 2020-4-27 16:07:20

比较字符数组课后习题

比较字符串课后作业

#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;
}
请问最后的循环语句要表达的是什么意思?
谢谢

sunrise085 发表于 2020-4-27 16:07:21

萌笨笨萌 发表于 2020-4-27 16:43
请问下最后结果输出的是字符串所有的比较结果还是什么

遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值
例如你输入的这个ghj和GHJ,循环的时候,先读到g和G发现不一样,然后就break跳出循环了,最后得到的就是'g'-'G' 的值,32

sunrise085 发表于 2020-4-27 16:38:17

while循环是从第一个字符开始逐个比较两个字符串,遇到第一个不相等的字符就break
if就是判断两个字符串对应的字符是否相等,若相等继续比较下一个字符,若不相等,就跳出循环
if中的i++是为结尾的printf做准备的,
因为若是比较的n个字符都相等的话,那是i的值是n,而第n个字符的下标应该是n-1,所以printf中应该是i-1
然而若是比较到不相等的字符了,下标是i,i还没到最后的个字符,那时候break跳出循环了,
这时循环外printf的第i-1字符是一样的,所以就在break之前先使i++,然后,for循环外就一致了

萌笨笨萌 发表于 2020-4-27 16:43:35

sunrise085 发表于 2020-4-27 16:38
while循环是从第一个字符开始逐个比较两个字符串,遇到第一个不相等的字符就break
if就是判断两个字符串对 ...

请问下最后结果输出的是字符串所有的比较结果还是什么

萌笨笨萌 发表于 2020-4-27 16:50:57

sunrise085 发表于 2020-4-27 16:07
遇到第一个不相同的字符就break了。差值是第一个不相同的字符的ASCII差值
例如你输入的这个ghj和GHJ,循 ...

break是跳出if语句还是for语句我记得是
break 语句

那么在循环体中,如果我们想要让程序在中途跳出循环,那么我们同样可以使用 break 语句来实现。

执行 break 语句,直接跳出循环体。

有一点需要注意的是,对于嵌套循环来说,break 语句只负责跳出所在的那一层循环,要跳出外层循环则需要再布置一个 break 语句才行。

sunrise085 发表于 2020-4-27 16:52:29

萌笨笨萌 发表于 2020-4-27 16:50
break是跳出if语句还是for语句我记得是
break 语句



。。。。。。。
break只能跳出循环。。。。if语句不成空间,不用break,也不能break

萌笨笨萌 发表于 2020-4-27 16:53:27

sunrise085 发表于 2020-4-27 16:52
。。。。。。。
break只能跳出循环。。。。if语句不成空间,不用break,也不能break

哦哦对好的谢谢
页: [1]
查看完整版本: 比较字符数组课后习题