公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。
(注:本题有多组输入)
一行,输入7个整数(0~100),代表7个成绩,用空格分隔。
一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。
99 45 78 67 72 88 60
73.00
int main()
{
int i = 0;
int j = 0;
int n = 0;
int t = 0;
int nums[7];
while (1)
{
for (i = 0; i < 7; i++)
{
if (scanf("%d", &nums[i]) == EOF)
{
return 0;
}
}
for (i = 0; i < 7; i++)
{
for (n = 0; n < 6 - i; n++)
{
if (nums[n] < nums[n + 1])
{
t = nums[n];
nums[n] = nums[n + 1];
nums[n + 1] = t;
}
}
}
int sum = 0;
for (i = 1; i < 6; i++)
{
sum = sum + nums[i];
}
double avg = sum / 5.0;
printf("%.2f\n", avg);
}
return 0;
}输入数,先排序,再去掉两端值取平均值,多组输入模块是问AI改的
#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);
}
}
我写的相对大佬们来说冗余了一点,每次输入都是不断交换最大值最小值。