C语言的问题.高手进

来源:百度知道 编辑:UC知道 时间:2024/05/10 07:22:40
问题:输入3个数,输出其中最小的,我这样写的:
#include<stdio.h>
void main()
{
int a,b,c,result;
clrscr();
scanf("%d,%d,%d",&a,&b,&c);
if(a<b<c) result=a;
if(a<c<b) result=a;
if(b<c<a) result=b;
if(b<a<c) result=b;
if(c<b<a) result=c;
if(c<a<b) result=c;
printf("the smallist number is:%d",result);
printf("press any key to return");
getch();
}
可是无论3个数是多少,它总是显示最后一个,为什么?
应该怎样写?

#include<stdio.h>
void main()
{
int a,b,c,result;
clrscr();
scanf("%d,%d,%d",&a,&b,&c);
if(a<b&&b<c) result=a;
if(a<c&&c<b) result=a;
if(b<c&&c<a) result=b;
if(b<a&&a<c) result=b;
if(c<b&&b<a) result=c;
if(c<a&&a<b) result=c;
printf("the smallist number is:%d",result);
printf("press any key to return");
getch();
}

c语言中.a<b<c这种写法是不对的.
它会先算a<b的真假.然后拿0和1去和C比较.

main()
{int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b){t=a;a=b;b=t;}/*保证a和b中a是最小的*/
if(a>c){t=a;a=b;b=t;}/* 保证a和c中a是最小的*/
printf("%d",a);}
这样a就是最小了.
如果你不想改变a,b,c的初始直.那就用指针,改变指针志向

晕了,a<b<c,这里是写程序,不是数学表达式,非要写就要这样:(a<b) && (b<c)
而且这个程序还不如用另一个算法:用一个临时变量max存储a,然后比较b和max,比它大就max=b,然后比较c,依次类推,N个数取最大都没问题.