编写程序,帮桐桐找出全班同学身高的最大值和最小值。
问题分析
输入:班级总人数;依次输入班上每位同学的身高值(float型)。
输出:最大身高值和最小身高值(float型)。
这是一个依次比较大小的问题,具体步骤为:
1) 准备两个位置 A 和 B,A 位置站立身高最高的,B 位置站立身高最矮的;
2) 第一位同学先站在 A 位置,第二位同学跟站在 A 位置的同学比身高,如果第二位同学高,则替换站在 A 位置的同学,否则,第二位同学站在 B 位置;
3) 接着第三位同学跟站在 A 位置的同学比身高,如果第三位同学高,则替换站在 A 位置的同学,否则,第三位同学再跟站在 B 位置的同学比身高,如果第三位同学矮,则替换站在 B 位置的同学;
4) 后面每一位同学都像第三位同学一样,依次跟站在 A 位置或 B 位置的同学比身高并替换站立,直至所有同学都参加过身高比较,最后 A 位置站立的就是身高最高的同学,而 B 位置站立的就是身高最矮的同学。
算法描述
代码清单 1:找出 n 位同学身高的最大值和最小值
#include
#include
int main( )
{
int n,i;
float x,max_height,min_height;
printf("输入全班同学人数(个):\n");
scanf("%d",&n);
printf("输入第1位同学的身高(cm):\n");
scanf("%f",&x);
max_height = x; //初始化最大身高值
min_height = x; //初始化最小身高值
for(i=1;i
{
printf("输入第%d位同学的身高(cm):\n",i+1);
scanf("%f",&x);
if(x > max_height) max_height = x;
else if(x < min_height) min_height = x;
}
printf("全班%d位同学身高最大值:%.2fcm\n",n,max_height);
printf("全班%d位同学身高最小值:%.2fcm\n",n,min_height);
system("pause");
return 0;
}
运行结果为:
输入全班同学人数(个):
6
输入第1位同学的身高(cm):
181
输入第2位同学的身高(cm):
178
输入第3位同学的身高(cm):
178
输入第4位同学的身高(cm):
176
输入第5位同学的身高(cm):
156
输入第6位同学的身高(cm):
179
全班6位同学身高最大值:181.00cm
全班6位同学身高最小值:156.00cm
在程序中求多个数的最大值,在初始化最大值变量时,为了便于被后面出现的较大值替换,一般将其初始化为尽可能小的值(比如 0);同理,如果求最小值,在初始化最小值变量时,一般将其初始化为尽可能大的值(比如 32767)。
本例中,将最大值和最小值都初始化为第一个值,这样做的目的是为了提高程序的运行效率(减少了比较的次数)。