题目来源:牛客网编程入门训练--BC76 公务员考试
输入描述:
一行,输入7个整数(0~100),代表7个成绩,用空格分隔。
输出描述:
一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。
解题思路:此题的核心考察点就是分别找出一连串数字中的最大值与最小值。
就拿该题举列,找出7个数字中的最大值与最小值,我们就设置循环变量i,循环7次,设最大值为0,循环比较,比他大的值就交换; 同理,设最小值为100(因为此题是满分100分,所以设置最小值为100,其他题目将最小值设置为满足条件的稍大值即可),也是循环比较7次,有比100小的值就交换。最终即可找出最大值与最小值。
下面给出优化后的代码,需要注意的点在代码中以注释形式给出:
#include <stdio.h>
int main()
{
int i = 0;
int sc = 0; // 成绩
int sum = 0;
int max = 0; //假设最大值为0
int min = 100; // 假设最小值为100
for (i = 0; i < 7; i++)
{
scanf("%d", &sc);
sum += sc;
if (sc > max)
{
max = sc;
}
if (sc < min)
{
min = sc;
}
}
double avg = (sum - max - min) / 5.0;
printf("%.2lf\n", avg);
return 0;
}
over ~