【C语言】管理学生成绩:录入、排序和分析

embedded/2024/10/19 9:09:09/

文章目录

  • 在C语言中管理学生成绩:录入、排序和分析
    • 题目一
    • 题目二


在C语言中管理学生成绩:录入、排序和分析

题目一

  1. 录入N名同学成绩,找到成绩的最大值,最小值,平均值,并判断哪些同学在平均值之下。
  2. 输入要求:
    • 输入学生人数N。
    • 依次输入每个学生的成绩。
  3. 输出要求:
    • 显示所有学生的平均成绩、最大成绩和最小成绩。
    • 显示成绩在平均值之下的学生编号。
#include <stdio.h>int main() {int N; // 学生人数printf("请输入学生人数:");scanf("%d", &N); // 从键盘读取学生人数int scores[N]; // 创建一个数组来存储每个学生的成绩int max = 0, min = 100, sum = 0; // 初始化最大值、最小值和总和float average; // 用于存储平均值// 循环录入每个学生的成绩for (int i = 0; i < N; i++) {printf("输入%d号学生成绩为:", i + 1);scanf("%d", &scores[i]); // 读取每个学生的成绩sum += scores[i]; // 累加每个学生的成绩以计算总和if (i == 0 || scores[i] > max) max = scores[i]; // 更新最大值if (scores[i] < min) min = scores[i]; // 更新最小值}// 计算平均值average = (float)sum / N;// 输出平均值、最大值和最小值printf("(1)%d名同学平均值为:%.1f,最大值为:%d,最小值为:%d\n", N, average, max, min);// 判断哪些同学在平均值之下printf("成绩在平均值之下的同学:");for (int i = 0; i < N; i++) {if (scores[i] < average) { // 如果学生成绩小于平均值printf("%d号同学 ", i + 1); // 输出该学生的编号}}printf("\n");return 0;
}

题目二

  1. 对N名同学的成绩进行排序,要求输出前三名学生成绩。
  2. 输入要求:
    • 输入学生人数N。
    • 依次输入每个学生的成绩。
  3. 输出要求:
    • 显示排序后成绩前三名的学生编号和成绩。
    • 输出要求:
      (1)5名同学平均值为: ,最大值为:91,最小值为55:
      (2)第1名为4号同学,成绩为:92;第2名为1号同学,成绩为:89;第3名为5号同学,成绩为:89;
      好的,我将提供一个从键盘输入学生成绩,并进行排序以输出前三名学生成绩的C语言程序。这次我会添加详细的注释来解释每一步。
#include <stdio.h>int main() {int N; // 学生人数printf("请输入学生人数:");scanf("%d", &N); // 从键盘读取学生人数int scores[N]; // 创建一个数组来存储每个学生的成绩int i, j, temp; // 循环变量i和j,以及用于交换的临时变量temp// 循环录入每个学生的成绩for (i = 0; i < N; i++) {printf("输入%d号学生成绩为:", i + 1);scanf("%d", &scores[i]); // 读取每个学生的成绩}// 使用冒泡排序算法对成绩进行排序for (i = 0; i < N - 1; i++) {for (j = 0; j < N - i - 1; j++) {if (scores[j] < scores[j + 1]) { // 如果当前成绩小于下一个成绩// 交换成绩temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}// 输出前三名学生的成绩printf("(2)第1名为%d号同学,成绩为:%d;第2名为%d号同学,成绩为:%d;第3名为%d号同学,成绩为:%d;\n",1 + (N - 1), scores[N - 1], // 第一名1 + (N - 2), scores[N - 2], // 第二名1 + (N - 3), scores[N - 3]); // 第三名return 0;
}
  1. 变量声明

    • N:存储学生人数。
    • scores[N]:数组,用于存储每个学生的成绩。
    • i, j, temp:用于循环和交换的变量。
  2. 输入学生人数

    • 通过 scanf 从键盘读取学生人数。
  3. 录入成绩

    • 使用 for 循环,通过 scanf 从键盘读取每个学生的成绩,并存储在 scores 数组中。
  4. 排序成绩

    • 使用冒泡排序算法scores 数组进行排序。
    • 外层循环控制排序的总轮数,内层循环进行相邻元素的比较和交换。
  5. 输出前三名学生的成绩

    • 由于数组索引从0开始,所以前三名的索引分别是 N-1, N-2, N-3
    • 输出前三名学生的编号(加1以符合常规的从1开始的编号)和成绩。

http://www.ppmy.cn/embedded/128695.html

相关文章

springboot整合sensitive-word敏感词监测,实现数据库自定义敏感词,敏感词白名单

前提说明: 本文描述可能存在问题,如果不理解私信或者问下评论,看到就解答。 文中因为测试需要用到脏话,可能会被和谐,大家发挥自己的想象力去自动处理被和谐部分。[手动狗头] 一.数据库设置 新创建两个表(敏感词设置,白名单)CREATE TABLE `word_deny` (`id` varchar(32…

【AI绘画】Midjourney进阶:引导线构图详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;什么是构图为什么Midjourney要使用构图 &#x1f4af;引导线构图特点使用场景提示词书写技巧测试 &#x1f4af;小结 &#x1f4af;前言 【AI绘画】Midjourney进阶&a…

【文化课学习笔记】【化学】选必三:同分异构体的书写

【化学】选必三&#xff1a;同分异构体的书写 如果你是从 B 站一化儿笔记区来的&#xff0c;请先阅读我在第一篇有机化学笔记中的「读前须知」(点开头的黑色小三角展开)&#xff1a;链接 链状烃的取代和插空法 取代法 一取代物 甲烷、乙烷、丙烷、丁烷的种类 甲烷&#xff1a;只…

Redis拒绝连接问题分析与解决方案

目录 前言1. 问题描述2. Redis拒绝连接的常见原因分析2.1 Redis服务未启动2.2 Redis配置中的绑定地址问题2.3 防火墙或安全组问题2.4 Redis连接池耗尽2.5 Redis服务器负载过高2.6 权限配置问题 3. 深度解决方案和优化建议4. 总结 前言 在分布式系统中&#xff0c;Redis作为高性…

tomcat catalina log 出现乱码(SpringMvc)

如下图所示&#xff1a; 解决方法&#xff1a; 找到tomcat的conf文件夹&#xff0c;打开logging.properties&#xff0c;把最后一个UTF-8改成GBK就可以啦 改正后&#xff1a;

【C#】使用vue3的axios发起get和post请求.net framework部署的API显示跨域

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言跨域提示解决方案现状跨域疑问跨域概念相关文章 前言 最近在对接…

Linux系统:sudo systemctl reload apache2命令作用

sudo systemctl reload apache2命令作用 sudo systemctl reload apache2 是一个用于重新加载 Apache Web服务器的命令。这个命令并不会停止然后重新启动服务&#xff0c;而是尝试重新加载配置文件&#xff0c;并对正在运行的服务进行无中断的重新加载。这通常用于在更改了Apach…

【教程】在 Linux 系统上安装 Docker并配置国内镜像源

本文简单介绍如何在Linux系统上安装并运行docker。 配置Docker Docker的安装需要具有 sudo 权限的用户。 如果能连接docker官网&#xff0c;可以参考 https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository 如果不能连接docker官网&#xff08;比如…