阿波呀 发表于 2020-6-9 23:27:42

输出结果跟书里的不对呀,求解

#include<stdio.h>
main()
{
        int a,b,c;
        printf("输入a 和 b 的值:");
   scanf("%d%d",&a,&b);
        c=a;
        a=b;
        b=c;
        printf("a=%d,b=%d\n",a,b);
}

输入a=34b=21
书的结果是   b=34   a=21

这边运行结果是

a=0   b=34

Cute_Traver_Cat 发表于 2020-6-9 23:43:08

我这里运行没问题,答案正确

小甲鱼的铁粉 发表于 2020-6-10 00:00:55

楼主 代码是需要规范的
#include<stdio.h>
int main()
{
      int a,b,c;
      printf("输入a 和 b 的值:");
      scanf("%d%d",&a,&b);
      c=a;
      a=b;
      b=c;
      printf("a=%d,b=%d\n",a,b);
      return 0;
}

chxchxkkk 发表于 2020-6-10 09:30:20

看上去是没问题的

阿波呀 发表于 2020-6-10 16:20:35

小甲鱼的铁粉 发表于 2020-6-10 00:00
楼主 代码是需要规范的

return 0;
这一行代表啥

阿波呀 发表于 2020-6-10 16:26:54

小甲鱼的铁粉 发表于 2020-6-10 00:00
楼主 代码是需要规范的

输入你这个代码输出的答案也不对,依然是a=0 ,B=34

liwenyang 发表于 2020-6-10 17:47:02

输值时用空格隔开就行

小甲鱼的铁粉 发表于 2020-6-10 19:39:50

阿波呀 发表于 2020-6-10 16:26
输入你这个代码输出的答案也不对,依然是a=0 ,B=34

输入的时候不是输入“a=34,b=21"
而是"34 21"这样输入

小甲鱼的铁粉 发表于 2020-6-10 19:40:42

不是代码的问题,是你操作的时候在运行框里输入的问题

Neverturnback 发表于 2020-6-11 08:39:28

1、这个代码本身是没有问题的,问题是出在了在那个黑窗口的输入。
2、从你的输出0, 34来看,第一个输入是有效的,第二个输入是无效的(或者是没有达到预期的),而且从你的描述上来看,你的确输入了34,21两个数字,所以问题应该出在这两个数字之间用什么隔开了。
3、平常一般两个输入之间都是用空格“ ”或者逗号“,”隔开的,我试了一下,发现用空格隔开的时候是能正常输出的,但是用逗号隔开的时候a的值变成了随机值(int的最小值),所以我很好奇你中间用什么隔开了,导致输出的结果是 0 34
4、我想了下既然有输出并且输出不是随机值,说明scanf成功读取了个值给b,然后我去对照ascii码表,对应0值的字符是空格,所以我想你在两个数字之间是不是使用了多个空格。
5、通过实验,我发现无论中间用多少个空格最终都能正确读取数值,我感到很困惑。后来我总结了一下可能的原因①我们两个的编译器版本不一样,我虽然能正确读取数值,但是你的编译器不可以。②你用了其它的字符导致了这个结果③我一开始的猜想就是错误,你的这个输出结果是其它BUG产生的。
6、如果可以,请务必告诉我你的两个输入数值之间是用什么字符隔开的!

松花蛋 发表于 2020-6-11 11:16:22

两个输入符号之间加空格,或者逗号,输入的时候记得用英文逗号,推荐用空格隔开
页: [1]
查看完整版本: 输出结果跟书里的不对呀,求解