taylor swift腿长:关于C语言的......帮帮忙!

来源:百度文库 编辑:高校问答 时间:2024/04/30 08:35:42
程序一;
main()
{
int a,b;
scanf("%d%d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
程序二:
main()
{
int a,b;
scanf("%d,%d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}

如果A取2,B取5,程序一得到的答案是466啊?
程序二得到的是5,程序二才是对的啊!
但是程序一的466是怎么来的呢?

比较之后你会发现scanf函数两个不一样,其中有一个逗号,第一个题中,无需输入逗号,输入一个数后按回车再输入另一个数.
第二题中有一个逗号,说明输入时连逗号也一起输进去,所以结果就不同啦.

main()
{
int a,b;
scanf("%d%d",&a,&b);
if(a>b)
printf("%d\n",a);
else
printf("%d\n",b);
}
我用TC编译的结果是对的啊
输入一个数后按回车再输入下一个数

其实中间有没有逗号无所谓啦~如果有,就一定要输入比如“2,5”这样的形式,一定要用逗号分隔!如果不输入逗号就用空格(比如“2 5”)或者回车分隔都行。
你在第一个程序中也输入了“2,5吧”?这个时候“,”被算做一个数字(就是ASCLL值,不知道你听说过没有),所以就会出错。我猜“,”的ASCLL值一定是466吧?呵呵~
其实第一个程序没有错,只要输入“2 5”(中间是空格)或者“2(回车)5”就可以输出“5”了。

我猜想,你在执行第一个程序的时候,一定用了非空格以外的分隔符。那样的话,就会有一些乱数。比如输入2,5就会出现3129.
当直接用“%D%D”时,系统默认分隔符为空格。应输入2 5
如果按这样输入,结果是正确的,我把你的代码复制下来,然后试过了。没问题!呵呵。

scanf("%d,%d",&a,&b);
没有这么写的。不要逗号

scanf("%d%d",&a,&b);
这样是对的。

“,”的ASCLL值一定是466 ????????????

不是吧!!
好像是 44