牛客网刷题 | BC93 公务员面试

news2025/1/14 18:18:47

目前主要分为三个专栏,后续还会添加:

        专栏如下:                 C语言刷题解析       C语言系列文章       我的成长经历

感谢阅读!

初来乍到,如有错误请指出,感谢!


描述

公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。

(注:本题有多组输入)

输入描述:

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

输出描述:

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

示例1


解题思路 :

/* 解题思路 : 使用数组来解决这题

               假设最低分为100 最高分为0

               定义 min 和 max 变量 用来存放最高分和最低分

*/
 

初始化变量: 首先,我们需要初始化一个数组来存储每组的7个分数,以及两个变量来存储最高分和最低分。

读取输入: 使用 while 循环和 scanf 函数来持续读取用户的输入,直到输入结束。在循环中,我们需要为每组输入分配一个数组来存储分数。

找到最高分和最低分: 在读取每组分数后,我们需要遍历这7个分数,找到最高分和最低分。这可以通过遍历数组并更新两个变量(一个用于存储最高分,一个用于存储最低分)来实现。

计算剩余分数的总和: 在确定了最高分和最低分后,我们需要计算除去这两个分数后剩余5个分数的总和。这可以通过再次遍历数组,累加除了最高分和最低分之外的分数来实现。

计算平均分: 得到剩余5个分数的总和后,我们将其除以5来计算平均分。

格式化输出: 计算出平均分后,我们需要将其格式化为保留两位小数的格式,并使用 printf 函数输出。

循环结束条件: 输入直到用户停止输入,因此 while 循环需要一个合适的结束条件,通常是用户输入结束或者输入的数据不再满足每行7个整数的要求。


代码 1 :

/* 解题思路 : 使用数组来解决这题
               假设最低分为100 最高分为0 
               定义 min 和 max 变量 用来存放最高分和最低分
*/
# include <stdio.h> // 包含标准输入输出库

int main () {
    // 定义变量sum用来累加输入的分数
    int sum = 0;
    // 初始化min为100,假设最低分为100
    int min = 100;
    // 初始化max为0,假设最高分为0
    int max = 0;
    // 初始化一个数组arr,用来存储7个考官的分数,初始值为0
    int arr[7] = {0};

    // 循环7次,用于接收用户输入的每个分数
    for(int i = 0; i < 7; i++) 
    {
        // 使用scanf函数读取用户输入的整数,并存储在数组arr的对应位置
        scanf("%d", &arr[i]);
        // 如果当前输入的分数大于max,则更新max为这个分数
        if(arr[i] > max) 
        {
            max = arr[i];
        }
        // 如果当前输入的分数小于min,则更新min为这个分数
        if(arr[i] < min) 
        {
            min = arr[i];
        }
        // 将当前输入的分数累加到sum中
        sum += arr[i];
    }
    // 计算去掉一个最高分和一个最低分后的平均分
    // 使用5.0作为除数确保进行浮点数除法,得到精确的小数结果
    double val = (sum - max - min) / 5.0;
    // 输出计算得到的平均分,保留两位小数
    printf("%.2lf\n", val);
    // 程序结束,返回0
    return 0;
}

代码 2 :

#include <stdio.h>

int main() {
    int scores[7]; // 存储每组7个分数的数组
    double average; // 存储计算出的平均分

    // 持续读取输入直到用户停止输入
    while (scanf("%d %d %d %d %d %d %d", &scores[0], &scores[1], &scores[2], &scores[3], &scores[4], &scores[5], &scores[6]) == 7) {
        // 初始化最高分和最低分为数组的第一个元素
        int maxScore = scores[0], minScore = scores[0];

        // 遍历数组找到最高分和最低分
        for (int i = 1; i < 7; ++i) {
            if (scores[i] > maxScore) maxScore = scores[i];
            if (scores[i] < minScore) minScore = scores[i];
        }

        // 计算除去最高分和最低分后剩余分数的总和
        int sum = 0;
        for (int i = 0; i < 7; ++i) {
            if (scores[i] != maxScore && scores[i] != minScore) {
                sum += scores[i];
            }
        }

        // 计算平均分
        average = (double)sum / 5;

        // 输出平均分,保留两位小数
        printf("%.2f\n", average);
    }

    return 0;
}

代码 3 :

#include <stdio.h> // 引入标准输入输出库,用于程序中的输入输出操作

int main() {
    int a, max = 0, small = 100, sum = 0, count = 0;
    // 初始化变量
    // a: 用于存储每次输入的分数
    // max: 用于存储当前遇到的最大分数,初始设为0
    // small: 用于存储当前遇到的最小分数,初始设为100
    // sum: 用于累加所有输入的分数
    // count: 用于计数输入的分数数量

    while (scanf("%d", &a) != EOF) // 使用while循环持续读取输入,直到EOF(文件结束符)
    {
        if (a > max) // 如果当前输入的分数a大于已知的最大分数max
        {
            max = a; // 更新max为当前输入的分数a
        }
        if (a < small) // 如果当前输入的分数a小于已知的最小分数small
        {
            small = a; // 更新small为当前输入的分数a
        }
        sum += a; // 将当前输入的分数a累加到sum中
        count++; // 计数器count加1,表示已输入一个分数

        if (count == 7) // 当计数器count等于7时,表示一组7个分数已经输入完毕
        {
            printf("%.2f\n", (sum - max - small) / 5.0); // 计算并输出这组分数的平均分,去掉一个最高分和一个最低分后
            // 重置所有变量以准备下一组分数的输入
            count = 0; // 重置计数器
            max = 0; // 重置最大分数
            small = 100; // 重置最小分数
            sum = 0; // 重置分数总和
        }
    }

    return 0; // 程序正常结束,返回0
}

代码 4 :

#include<stdio.h> // 引入标准输入输出库,用于程序中的输入输出操作

int main() {
    int arr[7] = {0}; // 初始化一个数组arr,用于存储7个考官的打分,初始值设为0
    int i = 0 , j = 0; // 初始化循环变量i和j
    float sum = 0 , aver = 0; // 初始化总分数sum和平均分aver,这里使用float类型以保留小数结果

    /* 输入成绩 */
    for( i = 0 ; i < 7 ; i++) {
        scanf("%d ",&arr[i]); // 循环读取7个整数,存储到数组arr中
    }

    /* 根据冒泡排序法排序 */
    /* 排除1到7名,数组里表示是0到6名 */
    for(i = 0 ; i < 7 ; i++) {
        for(j = 0 ; j < 7 - 1 - i ; j++) {
            if(arr[j] > arr[j+1]) { // 如果当前元素arr[j]大于下一个元素arr[j+1]
                int tmp = 0; 
                tmp = arr[j]; // 交换两个元素的位置,以实现排序
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }

    /* 这里只取2到6名的成绩加和,数组里面表示是1到5 */
    for( i = 1 ; i < 6; i++) { // 从数组的第二个元素开始累加,因为冒泡排序后,最小的元素在arr[0]
        sum += arr[i]; // 累加分数,计算去掉最高分和最低分后剩余分数的总和
    }

    /* 计算即可 */
    aver = sum / 5.00; // 计算平均分,除以5.00确保进行浮点数除法,保留小数点后两位
    printf("%.2f",aver); // 输出计算得到的平均分,保留两位小数
    return 0; // 程序正常结束,返回0
}

扩展:如何在数组中寻找最大值和最小值

 暴力搜索法(逐一遍历)

这是最直接的方法,通过遍历数组中的每个元素来找到最大值和最小值。

int findMaxAndMin(int arr[], int size) {
    if (size <= 0) return -1; // 错误处理,数组大小应该大于0

    int max = arr[0]; // 假设第一个元素是最大值
    int min = arr[0]; // 假设第一个元素是最小值

    for (int i = 1; i < size; ++i) {
        if (arr[i] > max) {
            max = arr[i]; // 发现更大的值,更新最大值
        }
        if (arr[i] < min) {
            min = arr[i]; // 发现更小的值,更新最小值
        }
    }

    return max; // 通常这个方法会返回最大值,最小值通过另一个变量返回
}

暴力搜索法,也常被称为穷举法,是一种简单直观的算法设计策略,用于解决搜索问题,包括在数组中寻找最大值和最小值。以下是使用暴力搜索法寻找数组中最大值和最小值的基本思路:

1. 初始化

  • 假设数组的第一个元素既是最大值也是最小值。
  • 用变量 max 存储最大值,用变量 min 存储最小值,并初始化为数组的第一个元素。

2. 遍历数组

  • 从数组的第二个元素开始遍历整个数组(索引从1开始,直到数组的最后一个元素)。

3. 更新最大值和最小值

  • 对于数组中的每个元素,执行以下操作:
    • 如果当前元素大于 max,则将 max 更新为当前元素的值。
    • 如果当前元素小于 min,则将 min 更新为当前元素的值。

4. 重复步骤3

  • 继续遍历数组,直到所有元素都被检查过。

5. 输出结果

  • 遍历完成后,max 变量包含数组中的最大值,min 变量包含数组中的最小值。
  • 可以返回这两个值,或者根据需要进行其他操作。

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1691285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT】

安装笔记-系列文章目录 安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 文章目录 安装笔记-系列文章目录安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 前言一、软件介绍名称&#xff1a;OpenWRT主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-23.05…

C语言在VS中使用scanf报错?

我们在使用VS时&#xff0c;用scanf函数&#xff0c;VS会报以下错误&#xff1a; 以下是解决方法&#xff1a; 来到输出窗口&#xff0c;复制以下语句&#xff1a;_CRT_SECURE_NO_WARNINGS 第一种暂时方法 1.在代码的第一行&#xff0c;写下&#xff1a;#define _CRT_SECURE_…

vuejs路由和组件系统

前端路由原理 createRouter * hash* window.addEventListener(hashChange)* 两种实现路由切换的模式&#xff1a;UI组件&#xff08;router-link&#xff0c;router-view&#xff09;&#xff0c;Api&#xff08;push()方法&#xff09; * history * HTML5新增的API &#xff0…

2024年电工杯A题论文首发+摘要分享+问题一代码分享

问题一论文代码链接&#xff1a;https://pan.baidu.com/s/1kDV0DgSK3E4dv8Y6x7LExA 提取码&#xff1a;sxjm --来自百度网盘超级会员V5的分享 园区微电网风光储协调优化配置 摘要&#xff1a;园区微电网由风光发电和主电网联合为负荷供电&#xff0c;为了尽量提高风光电量的…

机器人运动轨迹学习——GMM/GMR算法

机器人运动轨迹学习——GMM/GMR算法 前置知识 GMM的英文全称为&#xff1a;Gaussian mixture model&#xff0c;即高斯混合模型&#xff0c;也就是说&#xff0c;它是由多个高斯模型进行混合的结果&#xff1a;当然&#xff0c;这里的混合是带有权重概念的。 一维高斯分布 GMM中…

鸿蒙布局List简介

鸿蒙布局List简介 List--常见的布局容器List 创建方式创建方式一&#xff0c;通过Listitem创建方式二&#xff0c;通过ForEach和Listitem创建方式三&#xff0c;通过ListItemGroup List–常见的布局容器 List是在app开发中最常见的一种布局方式&#xff0c;例如通讯录、新闻列…

Vue3实现简单的瀑布流效果,可抽离成组件直接使用

先来看下效果图&#xff1a; 瀑布流中的内容可进行自定义&#xff0c;这里的示例图是通过不同背景颜色的展示进行区分&#xff0c;每个瀑布流中添加了自定义图片和文字描述。 实现方式&#xff1a; 1.建立子组件&#xff08;可单独抽离&#xff09;写出瀑布流的样式 文件名为…

远程桌面连接不上远程服务器,如何有效的解决远程桌面连接不上远程服务器的问题

在解决远程桌面连接不上远程服务器的问题时&#xff0c;我们需要采取一种专业且系统的方法来排查和修复可能存在的故障。以下是一些建议和步骤&#xff0c;帮助用户更有效地解决此类问题。 首先&#xff0c;用户需要确认远程服务器的状态和网络连接是否正常。 这包括检查服务器…

51汇编版--配套proteus仿真

代码配套的仿真&#xff0c;我自己试过是好使的&#xff0c;外部中断&#xff0c;计数功能要自己添加脉冲信号或按键才能有对应现象&#xff0c;自己搞一下子。 不限速下载链接 https://wwo.lanzoul.com/iQ46m1zm456j 密码:g92f 如果连接不正常&#xff0c;请尝试将lanzoul的…

Python游戏编程:一步步用Python打造经典贪吃蛇小游戏

贪吃蛇作为一款极其经典且广受欢迎的小游戏&#xff0c;是早期 Windows 电脑和功能手机&#xff08;特别是诺基亚手机&#xff09;流行度极高的小游戏&#xff0c;是当时功能手机时代最具代表性的游戏之一。游戏的基本规则和目标十分简单&#xff0c;但却极具吸引力&#xff0c…

【管理咨询宝藏111】安永某集团供应链流程设计及现状分析报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏111】安永某集团供应链流程设计及现状分析报告 【格式】PDF版本 【关键词】安永、供应链、流程优化 【核心观点】 - 缺乏客户分级&#xff0c;无…

力扣HOT100 - 75. 颜色分类

解题思路&#xff1a; 单指针&#xff0c;对数组进行两次遍历。 class Solution {public void sortColors(int[] nums) {int p 0;int n nums.length;for (int i 0; i < n; i) {if (nums[i] 0) {int tmp nums[i];nums[i] nums[p];nums[p] tmp;p;}}for (int i p; i …

visual studio 2022 ssh 主机密钥算法失败问题解决

 Solution - aengusjiang 问题&#xff1a; I follow the document, then check sshd_config, uncomment“HostKey /etc/ssh/ssh_host_ecdsa_key” maybe need add the key algorithms: #HostKeyAlgorithms ssh-ed25519[Redacted][Redacted]rsa-sha2-256,rsa-sha2-512 Ho…

对于高速信号完整性,一块聊聊啊(10)

本文包含的主要内容有: 过孔设计概述:从前面的各种基础知识到过孔设计,逐步对信号完整性有了初步了解,在过孔设计这里稍微做一个概述,也是个人的一些理解,算是一个小结。 过孔设计的必要性。 过孔结构的基础知识 实例:过孔设计仿真HFSS实例 过孔设计概述 通过前面…

如何运用多媒体,打造企业实力展示厅?

企业文化、产品是其长期发展的根本所在&#xff0c;为此越来越多的企业开始选择运用多媒体互动&#xff0c;来打造企业多媒体展厅的方式&#xff0c;对企业文化、品牌形象、产品进行推广宣传&#xff0c;并在多媒体互动装置的支持下&#xff0c;能让客户能够快速且全面的了解企…

【全开源】多场馆场地预定小程序源码(ThinkPHP+FastAdmin+UniApp)

场馆场地预定小程序源码一款基于ThinkPHPFastAdminUniApp开发的多场馆场地预定小程序&#xff0c;提供运动场馆运营解决方案&#xff0c;适用于体育馆、羽毛球馆、兵乒球馆、篮球馆、网球馆等场馆&#xff08;高级版&#xff09;

自由应用大本营?开源免费的Android应用商店:F-Droid Client

F-Droid Client&#xff1a;拥抱开源&#xff0c;守护隐私&#xff0c;让自由软件成为您生活的一部分- 精选真开源&#xff0c;释放新价值。 概览 F-Droid Client是一个开源的Android应用商店&#xff0c;它在GitHub上免费提供。这个项目致力于收集和展示各类自由及开源软件&a…

spring cloud config server源码学习(一)

文章目录 1. 注解EnableConfigServer2. ConfigServerAutoConfiguration2.1 ConditionalOnBean和ConditionalOnProperty2.2 Import注解2.2.1. EnvironmentRepositoryConfiguration.class2.2.2. CompositeConfiguration.class2.2.3. ResourceRepositoryConfiguration.class2.2.4.…

最新可用GPT-4o模型4大方法免费使用

探索GPT-4o&#xff1a;一次界限突破的AI体验&#xff01; 在AI世界的最前沿&#xff0c;GPT-4o的亮相已经掀起了一场技术革命的风暴&#xff01;它的问世不仅在行业内部引起了剧烈的震动&#xff0c;更是激起了一波波全球性的讨论和热烈追捧。 既然你在这里&#xff0c;我知…

Prometheus监控平台配置--监控mysql

上一篇中讲述了怎么安装Prometheus&#xff0c;然后对服务器集群资源信息进行监控并通过grafana展示监控信息&#xff0c;在这一篇中我们只讲和mysql相关的监控&#xff0c;关于prometheus的监控原理以及安装可以看下上一篇。 1.上传 通过rz命令将安装包上传到任意目录&#xf…