首页 > 试题广场 >

公务员面试

[编程题]公务员面试
  • 热度指数:74131 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。
(注:本题有多组输入

输入描述:
一行,输入7个整数(0~100),代表7个成绩,用空格分隔。


输出描述:
一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。
示例1

输入

99 45 78 67 72 88 60

输出

73.00
#include <stdio.h>

int main() {
    int a[7]={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) {
    int max=a[0];
    int min=a[0];
    int sum=0;
    for(int i=0;i<7;i++){
         if (max<=a[i]) {
            max=a[i];
         }else if (min>=a[i]) {
            min=a[i];
         }
         sum+=a[i];
    }
    float ave = (sum - max - min) / 5.0;
    printf("%.2f\n",ave);
    }
    return 0;
}
发表于 2025-02-28 22:58:07 回复(0)
#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;
}

发表于 2024-12-13 15:30:35 回复(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;
}
发表于 2024-12-10 20:44:47 回复(0)
int main()
{
    int a[7]={0};
    int i,j,temp;
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(j=0;j<6;j++)
    {
for(i=0;i<6-j;i++)
        {
    if(a[i]<a[i+1])//if(n[i]>n[i+1]) 从小到大 
    {
        temp=a[i];
        a[i]=a[i+1];
        a[i+1]=temp;
    }
        }
    }
    printf("%.2f\n",(a[1]+a[2]+a[3]+a[4]+a[5])/5.0);
}
}
发表于 2024-09-20 17:32:59 回复(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;
            }
        }
        
    }

发表于 2024-08-31 18:40:18 回复(0)
#include<stdio.h>
int main()
{
int n=0;
int max=0;
int min=100;
int score=0;
int c=0;

while(scanf("%d",&score)!=EOF)
{
    n++;
    if(score>max)
max=score;
if(score<min)
min=score;
c=c+score;
if(n==7)
{
    printf("%.2f\n",(c-max-min)/5.0);
    n=0;
    c=0;
    max=0;
    min=100;
}//算完一个就清零
}

    return 0;
}
发表于 2024-08-11 00:46:01 回复(0)
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;
}

发表于 2024-08-04 10:43:48 回复(0)
#include <stdio.h>
int main() {
    int a[7];
    while (scanf("%d%d%d%d%d%d%d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5],&a[6]) != EOF) {
        double ave = 0;
        int sum = 0;
        //选择排序,从小到大
        /*for (int i = 0; i < 6; i++) {
            for (int j = i + 1; j < 7; j++) {
                if (a[i] > a[j]) {
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
            }
        }*/
        //冒泡排序,从小到大
        for(int i=0;i<6;i++){
            for(int j=0;j<6-i;j++){
                if(a[j]>a[j+1]){
                    int t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }
        for (int i = 1; i < 6; i++) {
            sum += a[i];
        }
        ave = sum / 5.0;
        printf("%.2lf\n", ave);
    }
    return 0;
}
发表于 2024-07-12 16:05:53 回复(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;
}

发表于 2024-05-22 09:23:17 回复(0)
#include <stdio.h>  // 本人小白直接硬算
int main()
{
    int a,b,c,d,e,f,g;
    int max,min;
    float result;
    while(scanf("%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g) != EOF)
    {
        max=a;
        if(b>max)
        {
            max=b;
        }
        if(c>max)
        {
            max=c;
        }
        if(d>max)
        {
            max=d;
        }
        if(e>max)
        {
            max=e;
        }
        if(f>max)
        {
            max=f;
        }
        if(g>max)
        {
            max=g;
        }

        min=a;
        if(b<min)
        {
            min=b;
        }
        if(c<min)
        {
            min=c;
        }
        if(d<min)
        {
            min=d;
        }
        if(e<min)
        {
            min=e;
        }
        if(f<min)
        {
            min=f;
        }
        if(g<min)
        {
            min=g;
        }
    result=(a+b+c+d+e+f+g-max-min)/5.0;
    printf("%.2f\n",result);

    }
    return 0;
}
发表于 2024-05-20 17:52:08 回复(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);
	}
	

发表于 2024-05-15 02:36:22 回复(0)
#include <stdio.h>

int main() {
    int a[7]={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)
    {
        int max = a[0], min = a[0];
        //求最大值
        for (int i=0; i<7; i++)
        {
            if(max <a[i])
            {
                max=a[i];
            }
        }

        //求最小值
        for (int j=0; j<7; j++)
        {
            if(min>a[j])
            {
                min=a[j];
            }
        }
       

    //求平均值
    // printf("%d\n", max);
    // printf("%d\n", min);
    printf("%.2f\n", (a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]-max-min)/5.0);
    }
    return 0;
}
发表于 2024-05-02 11:03:07 回复(0)
#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;
}

编辑于 2024-04-05 10:32:11 回复(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);
    }

}
我写的相对大佬们来说冗余了一点,每次输入都是不断交换最大值最小值。
编辑于 2024-03-27 11:47:00 回复(0)
#include <stdio.h>

int main()
{
    int grade[7];
    int max = 0;
    int min = 100;
    int sum = 0;
    float average = 0;

    while (scanf("%d %d %d %d %d %d %d", &grade[0], &grade[1], &grade[2], &grade[3], &grade[4], &grade[5], &grade[6]) != EOF)
    {
        for(int i = 0; i < 7; i++)//找出最大数,最小数
        {
            if(grade[i] > max)
                max = grade[i];
            if(grade[i] < min)
                min = grade[i];
            sum += grade[i];
        }
        average = (sum - max - min) / 5.0;//计算去掉最高分和最低分的平均成绩
        printf("%.2f\n", average);
       
        max = 0; min = 100; sum = 0;
    }
    return 0;
}
发表于 2024-02-15 22:43:02 回复(0)
#include <stdio.h>

int main() {
    int min, max, arr[7], i = 0, sum = 0;
    double aver;

    while (1) {
        if (scanf("%d", &arr[i]) == EOF) {break;} 
        if (i == 0) {
            max = arr[i];
            min = arr[i];
        } 
        else {
            if (arr[i] > max) {
                max = arr[i];
            } 
            else if (arr[i] < min) {
                min = arr[i];
            }
        }
        sum = sum + arr[i];
        i++;
        //数字大于7个,打印上一轮结果,并初始化
        if (i >= 7) {
            aver = (sum - max - min) / 5.0;
            printf("%.2lf\n", aver);
            i = 0; 
            sum = 0;
        }
    }
    return 0;
}
编辑于 2024-02-08 06:14:56 回复(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;
}

编辑于 2024-02-06 20:30:07 回复(0)
#include <stdio.h>

void sort(float* a, int l) { //a为数组地址,l为数组长度。
    int i, j;
    float v;
    //排序主体
    for (i = 0; i < l - 1; i ++)
        for (j = i + 1; j < l; j ++) {
            if (a[i] > a[j]) { //如前面的比后面的大,则交换。
                v = a[i];
                a[i] = a[j];
                a[j] = v;
            }
        }
}

int main() {
    float a[7] = {0};
    while (1) {
        for (int i = 0; i <= 6; i++) {
            if (scanf("%f", &a[i]) == EOF) {
                goto END;
            }
        }
        sort(a, 7);
        printf("%.2f\n", (a[1] + a[2] + a[3] + a[4] + a[5]) / 5);
    }
END:
    return 0;
}
编辑于 2024-01-21 11:29:48 回复(0)
#include <stdio.h>

int main()
{
    int s=0;
    int sum=0;
    int max=0;
    int min=100;
    int count=0;
    while(~scanf("%d",&s))
    {
        sum+=s;
        if(max<s)
        {
            max=s;
        }
        if(min>s)
        {
            min=s;
        }
        count++;
        if(count==7)
        {
            printf("%.2lf\n",(sum-max-min)/5.0);
            //重置数据
            sum=0;
            max=0;
            min=100;
            count=0;
        }
    }
    return 0;
}
发表于 2023-11-22 23:23:50 回复(0)