下面两段C程序有什么区别?

[复制链接]
查看11 | 回复3 | 2010-9-19 15:20:57 | 显示全部楼层 |阅读模式
#include
main()
{
float a,b,c,t;
scanf("%f%f%f",&a,&b,&c);
if (a>b)
{t=a;a=b;b=t;}
if (a>c)
{t=a;a=c;c=t;}
if (b>c)
{t=b;b=c;c=t;}
printf("%5.2f,%5.2f,%5.2f",a,b,c);
getch();
}
#include
main()
{
float a,b,c,t;
scanf("%f%f%f",&a,&b,&c);
if (a>b)t=a;a=b;b=t;
if (a>c)t=a;a=c;c=t;
if (b>c)t=b;b=c;c=t;
printf("%5.2f,%5.2f,%5.2f",a,b,c);
getch();
}

回复

使用道具 举报

千问 | 2010-9-19 15:20:57 | 显示全部楼层
if语句后面的语句,如果没有加上{},那就只会执行紧跟的最近那一条,其它的语句与if的判断结果无关。说明:if (a>b)t=a;a=b;b=t;这中写法,如果a>b为true,则t=a;会被执行,而a=b;b=t;不管a>b为true还是为false都会执行if (a>b)(t=a;a=b;b=t;)这中写法,如果a>b为true,则t=a;a=b;b=t;都会被执行,如果a>b为false,则t=a;a=b;b=t;都不会执行
回复

使用道具 举报

千问 | 2010-9-19 15:20:57 | 显示全部楼层
第一个程序从第一个if开始判断,不管a是不是大于c,后面的2个if依然会执行。继续判断。而第二个程序则在判断第一个if时就要看是不是满足a>c,如果a>c成立,那么后面2个if才会运行判断,否则直接跳出。
回复

使用道具 举报

千问 | 2010-9-19 15:20:57 | 显示全部楼层
主要是括号里的 if (a>b){t=a;a=b;b=t;} 如果条件不成立{t=a;a=b;b=t;}都不执行
if (a>b)t=a;a=b;b=t;如果条件不成立t=a;不执行。a=b;b=t;还是会执行的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行