公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。
(注:本题有多组输入)
一行,输入7个整数(0~100),代表7个成绩,用空格分隔。
一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。
99 45 78 67 72 88 60
73.00
#include<stdio.h> int main() { int input = 0; int max = 0; int min = 100; int i = 0; int j = 0; int sum = 0; float average = 0.0f; int arr[6]={}; while(scanf("%d %d %d %d %d %d %d\n",&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6])!=EOF) //输入数据 { sum = 0; //循环数据重置 average = 0; max = 0; min = 100; for(i=0;i<7;i++) //比大小 { if(max <= arr[i]) { max= arr[i]; } if(min>=arr[i]) { min = arr[i]; } sum = sum +arr[i]; } average = (sum - max - min) /5.0; //计算 printf("%.2f\n",average); //输出 } return 0; }
#include <stdio.h> int main() { int scores[7]; // 存储7位考官的分数 while (scanf("%d", &scores[0]) != EOF) { // 读取第一分数,不是EOF就继续读 // 读取剩下的6个分数 for (int i = 1; i < 7; i++) { scanf("%d", &scores[i]); } // 初始化最小值和最大值 int minScore = scores[0]; int maxScore = scores[0]; int sum = 0; // 总分 // 遍历分数,找到最小值和最大值,同时计算总分 for (int i = 0; i < 7; i++) { if (scores[i] < minScore) { minScore = scores[i]; // 更新最小值 } if (scores[i] > maxScore) { maxScore = scores[i]; // 更新最大值 } sum += scores[i]; // 累加分数 } // 去掉一个最高分和一个最低分 sum -= (maxScore + minScore); // 计算平均分 double average = (double)sum / 5; // 5是因为去掉了两个分数 // 输出平均分,保留两位小数 printf("%.2f\n", average); } return 0; }
#include <stdio.h> int main() { int score = 0; int i = 0; float ave = 0; float sum = 0; int max = 0; int min = 100; while (scanf("%d", &score) != EOF ) { sum += score; if (max < score) { max = score; } if (min > score) { min = score; } i++; if (i%7==0) { ave = (sum - max - min) / 5; printf("%.2f\n", ave); sum=0; max=0; min=100; } } }
int main() { int score = 0; int n = 0; int sum = 0; int max = 0; int min = 100; while ((scanf("%d", &score)) == 1){ n++; if (score > max) max = score; if (score < min) min = score; sum += score; if (n == 7) { printf("%.2f\n", (sum - max - min) / 5.0); n = 0; sum = 0; max = 0; min = 100; } } return 0; }
#include <stdio.h> int max(int a[7])//定义求最大值的函数 { int b=a[0]; for(int i=0;i<7;i++) { if(a[i]>b) { b=a[i]; } } return b; } int min(int a[7])//定义求最小值的函数 { int c=a[0]; for(int i=0;i<7;i++) { if(a[i]<c) { c=a[i]; } } return c; } int main() { int a[7]; int b,c; while (scanf("%d %d %d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6])!=EOF) { getchar(); int count=0; float ave=0.0; b=max(a); c=min(a); for (int i=0; i<7; i++) { //1.这个是自行判断了最大值最小值并将他们踢出去 // if(a[i]!=b && a[i]!=c) // { // count=count+a[i]; // } //2.直接算出总和然后将最大值最小值减去 count=count+a[i]; } ave=(count-b-c)/5.0; printf("%.2f\n",ave); } return 0; }
#include <stdio.h> #include<stdlib.h> int compare(const void* e1, const void* e2) //排序数组 { return *(int*)e1 - *(int*)(e2); } int main() { int arr[7] = { 0 }; while(scanf("%d %d %d %d %d %d %d",&arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6]) !=EOF) { qsort(arr, 7, sizeof(int), compare); //排序数组升序 int count = 0; for (int i = 1; i < 6; i++) //去掉第一个元素和最后一个元素 { count += arr[i]; } double average = count / 5.0; //求平均分 printf("%.2lf\n", average); }
#include <stdio.h> int main() { int score[7]; while (scanf("%d%d%d%d%d%d%d", &score[0], &score[1], &score[2], &score[3], &score[4], &score[5], &score[6])!=EOF) { int max = 0; int min = 100; for (int i = 0; i < 7; i++) { if (score[i] < min) min = score[i]; if (score[i] > max) max = score[i]; } float sum = 0; for (int i = 0; i < 7; i++) { sum += score[i]; } printf("%.2f\n", (sum - max - min) / 5.0); } return 0; }
#include<stdio.h> int main() { int a[7]; int max,min; // 设置a[0]为最小值,a[1]为最大值 int temp = 0, temp1 = 0; while (scanf("%d%d%d%d%d%d%d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) != EOF) { for (int i = 0; i < 7; i++) { if (a[i] < a[0]) { temp = a[0]; a[0] = a[i]; a[i] = temp; } if(a[i]>a[1]){ temp1 = a[1]; a[1] = a[i]; a[i] = temp1; } } float sum =0; for(int i=2;i<7;i++){ sum+=a[i]; } printf("%.2f\n",sum/5.0); } }我写的相对大佬们来说冗余了一点,每次输入都是不断交换最大值最小值。
#define NUM_PEO 7//考官数量 #include <stdio.h> int main() { int score[NUM_PEO] = { 0 }; double average = 0; int sum = 0; int i = 0; int max = 0; int min = 0; while (scanf("%d", score) == 1)//第一个数,存放成功,进入循环 { //假设最低分、最高分较为第一个分数 //这样后面一次次对比,就可以找出真正的最低分、最高分 min = score[0]; max = score[0]; sum = 0; //输入剩余分数,并找出最高、最低分 for (i = 1; i < NUM_PEO; i++) { scanf("%d", &score[i]); min = min > score[i] ? score[i] : min; max = max > score[i] ? max : score[i]; } //处理数据:计算去出2个极端分数后的平均分 for (i = 0; i < NUM_PEO; i++) { sum += score[i]; } average = (double)(sum - max - min) / (NUM_PEO - 2); printf("%.2lf\n", average); } return 0; }