ftimes 发表于 2016-1-16 22:27:40

求大神看看这是什么问题导致的

这是一道编程题,大概是输入三个整数,从大到小赋给abc三个变量,然后从大到小输出,附上代码


#include "stdafx.h"


int main()
{
        int a, b, c, x, y, z;
        printf("请输入三个整数:");
        scanf("%d%d%d", &x, &y, &z);
        if (x > y&&x > z)
        {
                if (y > z)
                {
                        a = x, b = y, c = z;
                }
                else if (z > y)
                {
                        a = x, b = z, c = y;
                }
        }
        else if (y > x&&y > z)
        {
                if (x > z)
                {
                        a = y, b = x, c = z;

                }
                else if (x < z)
                {
                        a = y, b = z, c = x;
                }
        }
        else if (z > x&&z > y)
        {
                if (x > y)
                {
                        a = z, b = x, c = y;
                }
                else if (x < y)
                {
                        a = z, b = y, c = x;
                }
        }
        printf("从大到小排列分别为%d,%d,%d",a, b, c);
}


在VS2015中,输入三个整数按回车后出错,如图(今天不能上传图片了,找了个图床,不知道能不能用)
http://i4.tietuku.com/9ed1d1d495a5750e.png

中断后,提示这句代码错误

http://i4.tietuku.com/d4e0ede5f82c8463.png

无奈之下转到VC++6.0尝试 ,可以运行,但运行结果出错

http://i4.tietuku.com/686dc490bedf8eef.png

然后却偶然发现,将逗号换成空格可以运行

http://i4.tietuku.com/0f4723e59386d9da.png

请问大神这是什么情况,之前的程序我都是用逗号隔开的,为什么这个非要用空格,另外,有没有更简洁的办法实现这道题?

distooy 发表于 2016-1-16 22:37:13

同问 之前我也遇到这种情况了

人造人 发表于 2016-1-17 02:15:47

scanf 函数
用法:
http://bbs.fishc.com/forum.php?mod=viewthread&tid=67391&extra=page%3D1%26filter%3Dtypeid%26typeid%3D583

ftimes 发表于 2016-1-17 19:17:50

人造人 发表于 2016-1-17 02:15
scanf 函数
用法:
http://bbs.fishc.com/forum.php?mod=viewthread&tid=67391&extra=page%3D1%26filter% ...

非常感谢,虽然论坛上的这个没看懂,但是找到问题之后自己又查了很多资料,感觉C语言博大精深

bravo 发表于 2016-1-17 19:32:25

没有赋初值吧
其实你干脆在申明的时候就全置0得了
我个人觉得这么比较安全...

嘎拉哈 发表于 2016-1-17 22:19:50

不能输入,的 ,算一个数字 你这样的话就溢出了
页: [1]
查看完整版本: 求大神看看这是什么问题导致的