看清之后才看轻 发表于 2020-10-13 17:13:15

为什么这个数组赋值不是asc码值,而是1?

#include <stdio.h>

int main()
{
        int i = 0, cp, c, sum, a, b;
        printf("请输入第一个字符串:\n");
        while(a = getchar() != '\n')
        {
                printf("%d",a);
                i++;
        }
        printf("请输入第二个字符串:\n");
        i = 0;
        while(b = getchar() != '\n')
        {
                printf("%d",b);
                i++;
        }
        printf("请输入比较的字符数:\n");
        scanf("%d",&cp);
        for(i = 0;i < cp;i++)
        {
                c = a - b;
                sum += c;
        }
        printf("比较的结果是%d",sum);
}

昨非 发表于 2020-10-13 17:27:15

本帖最后由 昨非 于 2020-10-13 17:41 编辑

误答

xieglt 发表于 2020-10-13 17:32:38

       
       //a = getchar() != '\n'   这条语句先作判定,然后再赋值,因此当 getchar() != '\n'为真时,总是返回1,所以数组元素的值总是1
       //加上括号应该就没问题了。
      while((a = getchar()) != '\n')
        {
                printf("%d",a);
                i++;
        }
        printf("请输入第二个字符串:\n");
        i = 0;
        while((b = getchar()) != '\n')
        {
                printf("%d",b);
                i++;
        }

风过无痕1989 发表于 2020-10-13 17:53:58

你们的运作快

#include <stdio.h>

int main()
{
      int i = 0, cp, c, sum;
      char ch, a, b;
      printf("请输入第一个字符串:\n");
      while((ch = getchar())!= '\n')
      {
                a = ch;
                                printf("%d",a);
                i++;
      }
      printf("请输入第二个字符串:\n");
      i = 0;
      while((ch = getchar()) != '\n')
      {
                b =ch;
                                printf("%d",b);
                i++;
      }
      printf("请输入比较的字符数:\n");
      scanf("%d",&cp);
      for(i = 0;i < cp;i++)
      {
                c = a - b;
                sum += c;
      }
      printf("比较的结果是%d",sum);
}
页: [1]
查看完整版本: 为什么这个数组赋值不是asc码值,而是1?