绝对计划铁雄喜欢谁:关于C语言的一个问题,高手请进

来源:百度文库 编辑:高校问答 时间:2024/04/28 21:39:32
要求将从键盘输入的三个数从小到大排列起来,我的编写是这样的
mail()
{int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);
if(a>b) {d=a;a=b;b=d;}
if(a>c) {d=a;a=c;c=d;}
if(b>c) {d=b;b=c;c=d;}
printf("a=%d,b=%d,c=%d",a,b,c);}
这样对否?我在tc上的试验是不成功的,帮忙看看出问题了没有。
我知道不成功的原因了,那是当输入数字时第一个数跟下一个数间应用“,”隔开,呵呵,谢谢了,还有fanyangye的答案这“if(a>b) {d=a;a=b;b=d;}
if(b>c) {d=b;b=c;c=d;}
if(a>b) {d=a;a=b;b=d;} ”第一个if语句和第三个if语句有错误 ,我在我的机器上的试验是不成功的。不过还是要谢谢他。

修改:
main()
{int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);
if(a>b) {d=a;a=b;b=d;}
if(b>c) {d=b;b=c;c=d;}
if(a>b) {d=a;a=b;b=d;}
printf("a=%d,b=%d,c=%d",a,b,c);}

这样就好了.

补充:
回提问者:
我自己运行的都对,你再试试,
这样的原理是:
前两个if是把最大数的移到最后
第三个if是再比较前两个,把次大的放在后面.
请运行之后看结果再说我的对于不对.
另外你的输入数时是三个数,各数之间要有逗号

就是主函数的名字写错了啊,应该为main()啊,另外你的程序我试过了,没有问题啊.

mail改成main

按照你编程的原来思维
改成如下:
if(a>b&&a>c&&b>c) {c、a交换}
else if(a>b&&a>c&&b<c) {b、a交换,b、c交换}
else if(a>b&&b<c) {b、a交换}
else if(a<c&&b>c) {b、c交换}
else if(a>c&&b>c) {b、a交换,a、c交换}
以上的交换顺序不可以颠倒

原先之所以不成功(一是IF条件不对,二是没有ELSE选择)

这个算法太差进了

int max = a;
int min = b;
int mid;
if(a < b)
{
if(b < c)
max = c;
else
max = b;
if( a < c)
min = a;
else
min = c;
}
mid = a + b + c - max - min;

兄弟,边头文件,你怎么测试也不会成功的呀 #include "stdio.h",还有main是主函数的意思,那mail是什么,"邮件啊" ,还有看你用的是2.0还是3.0,main前面可不可以省略掉void,出入实在是太多了,下次仔细点吧,我也是C语言的爱好者,以后大家共同进步吧,如果可以成为朋友,可以加我QQ:415247034