首页 > 试题广场 >

公务员面试

[编程题]公务员面试
  • 热度指数: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>
#include <stdlib.h>
int cmp_int(const void* e1, const void* e2) {
    return *(int*)e1 - *(int*)e2;
}
int main() {
    int arr[7];
    int max = 0, min = 0;
    while (~scanf("%d %d %d %d %d %d %d", arr, arr + 1, arr + 2, arr + 3, arr + 4,
                  arr + 5, arr + 6)) {
        qsort(arr, 7, 4, cmp_int);
        printf("%.2f\n", (arr[1] + arr[2] + arr[3] + arr[4] + arr[5]) / 5.0);
    }
    return 0;
}

发表于 2022-06-26 14:01:53 回复(0)
#include<stdio.h>
int main(){
    int s[7] , high , low , mid_var , sum ;
    float ave;
    while( scanf("%d %d %d %d %d %d %d",&s[0],&s[1],&s[2],&s[3],&s[4],&s[5],&s[6]) != EOF )
    {
        sum = 0;
        for( int i = 0; i < 7 ; i++)
        {
            sum = sum + s[i];
        }
        //求最大值
        for(int i = 0 ; i < 6 ; i++)
        {
            if( s[i] > s[i+1] )
            {
                mid_var = s[i];
                s[i] = s[i+1];
                s[i+1] = mid_var;
            }
            high = s[6];
        }
        //求最小值
        for(int i = 0 ; i < 6 ; i++)
        {
            if( s[i] < s[i+1] )
            {
                mid_var = s[i];
                s[i] = s[i+1];
                s[i+1] = mid_var;
            }
            low = s[6];
        }
        ave = ( sum - high - low ) / 5.0;
        printf("%.2f \n",ave);
    }
    return 0;
}

发表于 2022-06-15 13:43:49 回复(0)
#include <stdio.h>

void Sort(int arr[]){
    for(int i = 0; i < 7; i++){
        for(int j = i+1; j < 7; j++){
            if(arr[i] > arr[j]){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
    }}}}

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){
        int sum = 0;
        Sort(arr);
        for(int i = 1; i <= 5; i++){
            sum += arr[i];
        }
        printf("%.2f\n", (float)sum / 5);
    }
    return 0;
}

发表于 2022-05-24 23:51:49 回复(0)
#include<bits/stdc++.h>
using namespace std;
int main(){
    int minn = 1000;
    int maxn = -1;
    int n,sum = 0;
    while(cin>>n){
        for(int i=1;i<=7;i++){
             minn = min(minn, n);
             maxn = max(maxn, n);
             sum += n;
            if(i != 7)
            cin>>n;
        }
        //printf("%d %d\n",minn,maxn);
        double ans = 1.0*(sum -(minn + maxn))/5;
        printf("%.2lf\n",ans);
        sum = 0;
        minn = 1000;
        maxn = -1;
        n = 0;
    }
    
    
    return 0;
}

发表于 2022-02-09 15:04:35 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    int arr[7];
    while(scanf("%d %d %d %d %d %d %d", &arr[0],&arr[1],&arr[2],&arr[3],&arr[4],&arr[5],&arr[6])!=EOF)
    {
        int max = 0;
        int min = 0;
        int sub = 0;
        int i = 0;
        for (i = 0;i < 7;i++)
        {
            if (arr[i] > max)
            {
                max = arr[i];
            }
            if (min == 0 || arr[i] < min)
            {
                min = arr[i];
            }
            sub += arr[i];
        }
        printf("%.2f\n", (sub-max-min) / 5.0);
    }
    return 0;
}

发表于 2021-12-12 12:31:46 回复(0)
这道题如果得出的答案小数的精确度如果不够的话,那么需要看自己的计算总和的量是不是定义为float类型,如果不是既可以改成float类型,也可以在求平均数的时候/5.00
发表于 2021-11-18 19:04:27 回复(0)
先构建一个数组,往数组输入7个分数,然后对该数组安由小到大排序,从第二个数开始取到第五个。最后输出这5个分数的平均成绩
#include<bits/stdc++.h>
using namespace std;
int main(){
    int score[7];
    for(int i = 0; i < 7; i++)
        cin >> score[i];
    sort(score, score + 7);
    double ans;
    for(int i = 1; i <= 5; i++){
        ans += score[i];
    }
    ans /= 5;
    cout << fixed << setprecision(2) << ans << endl;
    return 0;
}


发表于 2020-06-01 15:56:38 回复(0)
import java.io.*;
import java.util.Arrays; 
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split(" ");
        int[] scores = new int[str.length];
        double sum = 0;
        double avg = 0;
        for(int i = 0; i < str.length; i++) {
            scores[i] = Integer.parseInt(str[i]);
            sum = sum + scores[i];
        }
            Arrays.sort(scores);
            int max=scores[scores.length-1];
            int min=scores[0];
        avg = (sum - max - min) / (scores.length - 2);
        System.out.printf("%.2f",avg);
    }
}

发表于 2020-05-07 08:57:32 回复(0)
#include <stdio.h>
int main()
{
    int i,max=-1,min=101,a[7];
    double sum=0;
    for(i=0;i<7;i++){
        scanf("%d",&a[i]);
        if(max<a[i]) max=a[i];
        if(min>a[i]) min=a[i];
        sum+=a[i];
    }
    sum-=max;
    sum-=min;
    sum/=5;
    printf("%.2f\n",sum);
}

发表于 2020-04-10 21:13:32 回复(5)
C
Bur头像 Bur
#include <stdio.h>
int main()
{
	int a, max = 0, small = 100, sum = 0, count = 0;
	while (scanf("%d", &a) != EOF)
	{
		if (a > max)//判定最高分
		{
			max = a;
		}
		if (a < small)//判定最低分
		{
			small = a;
		}
		sum += a;
		count++;//计数器
		if (count == 7)//计数器=7时代表一组的分数好了可以进行计算
		{
			printf("%.2f\n", (sum - max - small) / 5.0);
			count = 0;//重置
			max = 0;//重置
			small = 100;//重置
			sum = 0;//重置
		}
		
	}

	return 0;
}

发表于 2021-12-31 11:00:33 回复(3)
#include <iostream>
using namespace std;

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)
    {
        int max = -1, min = 101, sum = 0;
        for (int i = 0; i < 7; i ++ )
        {
            if (a[i] > max) max = a[i];
            if (a[i] < min) min = a[i];
            sum += a[i];    
        }
        double res = 1.0 * (sum - max  - min) / 5.0;
        printf("%.2lf\n", res);
    }
}

发表于 2022-02-26 14:22:10 回复(0)
#include<cstdio>
int main()
{
    int i,j,tmp;
    float a[7],sum=0;
    scanf("%f %f %f %f %f %f %f",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
    //类似冒泡排序找出最大值放在a[6]
    for(i=0;i<6;i++)
    {
        if(a[i]>a[i+1])
        {
            tmp=a[i];
            a[i]=a[i+1];
            a[i+1]=tmp;
        }
    }
    //找出最小值放在a[0]
    for(j=5;j>0;j--)
    {
        if(a[j]<a[j-1])
        {
            tmp=a[j-1];
            a[j-1]=a[j];
            a[j]=tmp;
        }
    }
    for(tmp=j+1;tmp<i;tmp++)
    {
        sum+=a[tmp];//此时j=0,i=6,求出a[1]~a[5]的和
    }
    printf("%.2f",sum/5);
    return 0;
}

发表于 2020-03-31 17:12:16 回复(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 arr[7] = { 0 };
    double ave = 0;
    int sum = 0;
    int max = 0;
    int min = 100;
    int i = 0;
    
    while(scanf("%d",&arr[i]) != EOF)
    {        
        if(arr[i] > max)
        {
            max = arr[i];
        }
        
        if(arr[i] < min)
        {
            min = arr[i];
        }
        
        sum += arr[i];
        
        i++;
        
        if(i == 7)
        {
            ave = (sum - max - min) / 5.0;
            printf("%.2f\n",ave);
            i = 0;
            max = 0;
            min = 100;
            sum = 0;
        }
    }
    
    return 0;
}
发表于 2022-05-31 16:55:16 回复(0)
#include<stdio.h>
//思路: 记录最大值,最小值 最后减去再计算
int main()
{
    int i=0;
    double sum=0;
    int max=0;
    int min=100;
    int n;
    while(scanf("%d ",&n)!=EOF)//多组输入
    {
        if(n>max)
        {
            max=n;
        }
        if(n<min)
        {
            min=n;
        }
        sum+=n;
        i++;
        if(i==7)
        {
            double ave=(sum-max-min)/5.0;
            printf("%.2lf\n",ave);
            //初始化
            i=0;
            sum=0;
            max=0;
            min=100;
        }
    }
}
发表于 2022-03-06 10:24:10 回复(0)
#include<stdio.h>
int main(void){
    int arr[7];
    int temp;
    double avg_score;
    
    while(scanf("%d %d %d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], 
                &arr[4], &arr[5], &arr[6]) != EOF){
        for(int i = 0; i < sizeof(arr) / sizeof(int) - 1; i++){  // 循环取数进行比较
            for(int j = i; j < sizeof(arr) / sizeof(int); j++){  // 循环逐一进行比较
                if(arr[i] > arr[j]){  // 冒泡排序:从小到大排列
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        
        for(int i = 1; i < 6; i++){  // 计算总分
            avg_score += arr[i];
        }
        
        printf("%.2f\n", avg_score / 5);  // 计算平均分并打印
        avg_score = 0;  // 重置平均分为0
    }
}

发表于 2022-02-04 23:19:34 回复(1)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        float num = 0;
        while (sc.hasNext()){
        	//得到字符数组
            String st=sc.nextLine();
            String[] str=st.split(" ");
            //创建整数组
            int[] score=new int[str.length];
            //放进数组
            for(int i=0;i<str.length;i++) {
            	score[i]=Integer.parseInt(str[i]);}
            //先排序,再截取,不用截取,遍历的时候不找他们就行了
            Arrays.sort(score);
            for(int i=1;i<score.length-1;i++) {
            	num+=score[i];}
            System.out.printf("%.2f",num/(score.length-2));
        }
    }
}

发表于 2020-09-24 20:05:15 回复(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)
#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 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)