题目:键盘输入4个整数,找出其中最大值。
本题可以用嵌套的if语句来做:
#include <stdio.h>
int main()
{int a, b, c, d, max;
scanf(“%d%d%d%d”, &a,&b,&c,&d);
if(a >= b){
if(a >= c)
if(a >= d)
max = a;
else
max = d;
else
if(c >= d)
max = c;
else
max = d;
}
else{
if(b >= c)
if(b >= d)
max = b;
else
max = d;
else
if(c >= d)
max = c;
else
max = d;
}
printf(“%d\n”, max);
getch();
return 0;
}
这个程序写起来很麻烦,且逻辑关系复杂,不容易看懂,显然这不是一个好算法。改为下面的方法:用逻辑运算符连接关系表达式。
#include <stdio.h>
int main()
{int a, b, c, d, max;
scanf(“%d%d%d%d”, &a, &b, &c, &d);
if(a >= b && a >= c && a>= d)
max = a;
if(b >= a && b >= c && b >= d)
max = b;
if(c >= a && c >= b && c >= d)
max = c;
if(d >= a && d >= b && d >= c)
max = d;
printf(“%d\n”, max);
getch();
return 0;
}
这个程序看起来清楚一些了,但是随着整数个数(现在是4)的增加,每个if后面的条件都会变的很长,所以这种方法也不可取。
遇到这种需要比较很多数据的时候,我们通常都是采用“打擂台”的方法来处理:
#include <stdio.h>
int main()
{int a, b, c, d, max;
scanf(“%d%d%d%d”, &a,&b,&c,&d);
max = a; //a先当第一任擂主
if(b > max) //如果b比擂主大,则b成为擂主,否则擂主不变
max = b;
if(c > max)
max = c;
if(d > max)
max = d;
printf(“%d\n”, max);
getch();
return 0;
}
这样写出来的程序简单易懂,且很容易扩展:如果数据个数增加了,按同样的方法再添些代码即可。更重要的是,每个数据的处理方式都是相同的,这一点便于我们今后把他们合并成一个循环。