tucc 发表于 2021-12-26 23:12:05

大哥救命,问题在最后

#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;
}
1.getchar()!='\n'是不是将\n前的字符串全部存在str里?
2.while ((str2 = getchar()) != '\n')的作用是不是一直循环直至字符串结束?
3.str里的i++最后的结果为字符串的字母数量?
4.if的条件和if里的i++各有什么作用?
5.他是怎么将字母转为数字的?

傻眼貓咪 发表于 2021-12-27 08:52:05

1.)没错
2.)没错(正确的说应该是直到换行为止)
3.)没错(i 初始值为 0,每次赋值,i 加 1,最终变成字母数量)
4.)不知道是谁写的代码,基本没有作用,反正都要 break,最后打印结果又 -1
5.)不用转,一般字母本来就对应 ASCII 编码

tucc 发表于 2021-12-27 16:19:31

傻眼貓咪 发表于 2021-12-27 08:52
1.)没错
2.)没错(正确的说应该是直到换行为止)
3.)没错(i 初始值为 0,每次赋值,i 加 1,最终变成 ...

那他用字母减字母会得出相应的asicii码?

傻眼貓咪 发表于 2021-12-27 16:42:51

如果一样字符相减就会是 0
如果不一样字符相减,比如:'z' - 'a' = 122 - 97 = 25
ASCII 'a' 是 97、'z' 是 122

tucc 发表于 2021-12-27 17:26:31

傻眼貓咪 发表于 2021-12-27 16:42
如果一样字符相减就会是 0
如果不一样字符相减,比如:'z' - 'a' = 122 - 97 = 25
ASCII 'a' 是 97、'z'...

的确有点多余,我把i加一减一去除还是可以正常运行
页: [1]
查看完整版本: 大哥救命,问题在最后