输出结果跟书里的不对呀,求解
#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 我这里运行没问题,答案正确 楼主 代码是需要规范的
#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;
} 看上去是没问题的 小甲鱼的铁粉 发表于 2020-6-10 00:00
楼主 代码是需要规范的
return 0;
这一行代表啥 小甲鱼的铁粉 发表于 2020-6-10 00:00
楼主 代码是需要规范的
输入你这个代码输出的答案也不对,依然是a=0 ,B=34 输值时用空格隔开就行
阿波呀 发表于 2020-6-10 16:26
输入你这个代码输出的答案也不对,依然是a=0 ,B=34
输入的时候不是输入“a=34,b=21"
而是"34 21"这样输入 不是代码的问题,是你操作的时候在运行框里输入的问题 1、这个代码本身是没有问题的,问题是出在了在那个黑窗口的输入。
2、从你的输出0, 34来看,第一个输入是有效的,第二个输入是无效的(或者是没有达到预期的),而且从你的描述上来看,你的确输入了34,21两个数字,所以问题应该出在这两个数字之间用什么隔开了。
3、平常一般两个输入之间都是用空格“ ”或者逗号“,”隔开的,我试了一下,发现用空格隔开的时候是能正常输出的,但是用逗号隔开的时候a的值变成了随机值(int的最小值),所以我很好奇你中间用什么隔开了,导致输出的结果是 0 34
4、我想了下既然有输出并且输出不是随机值,说明scanf成功读取了个值给b,然后我去对照ascii码表,对应0值的字符是空格,所以我想你在两个数字之间是不是使用了多个空格。
5、通过实验,我发现无论中间用多少个空格最终都能正确读取数值,我感到很困惑。后来我总结了一下可能的原因①我们两个的编译器版本不一样,我虽然能正确读取数值,但是你的编译器不可以。②你用了其它的字符导致了这个结果③我一开始的猜想就是错误,你的这个输出结果是其它BUG产生的。
6、如果可以,请务必告诉我你的两个输入数值之间是用什么字符隔开的! 两个输入符号之间加空格,或者逗号,输入的时候记得用英文逗号,推荐用空格隔开
页:
[1]