C语言综合案例:学生成绩管理系统
C语言综合案例:学生成绩管理系统
需求
1.存储最多50名学生的信息(不使用结构体)
2.每个学生包含:
- 学号(字符数组)
- 姓名(字符数组)
- 3门课程成绩(一维数组)
3.实现功能菜单:
- 添加学生信息
- 显示所有学生信息
- 计算学生平均分
- 查找最高分科目
- 退出系统
代码
/*************************************************************************> File Name: demo.c> Author: 张扣> Description:C语言综合案例:学生成绩管理系统> Created Time: 2025年02月27日 星期四 21时10分38秒************************************************************************/#include <stdio.h>
#include <string.h>//常量定义
#define MAX_STU 50 //定义学生数量
#define NAME_LEN 20 //名字的最大长度
#define ID_LEN 8 //学号的最大长度
#define COURSE_NUM 3 //课程数量//全局数组实现数据存储
char stu_id[MAX_STU][ID_LEN]; //学号二维数组
char stu_name[MAX_STU][NAME_LEN]; //姓名二维数组
int scores[MAX_STU][COURSE_NUM]; //成绩二维数组
int stu_count = 0; //当前实际学生数/***输入校验成绩*course 课程名称*/
int get_valid_score(const char* course)//const修饰的变量,值不能改变
{int score;while(1){printf("请输入%s成绩(0~100):",course);//校验:1.校验输入的数据格式 2.校验成绩的范围是否正确if(scanf("%d",&score == 1 && score >= 0 && score <= 100)){return score;}//输入有误while(getchar() != '\n'); //清空输入缓冲区printf("成绩输入有误!\n");}
}/***添加学生信息*/
void add_student()
{//判断数组是否已经存满if(stu_count >= MAX_STU){printf("存储已满!\n");return;//函数返回,后续代码不再执行}printf("\n---添加第%d个学生---\n",stu_count + 1);//输入学号printf("请输入学号:");scanf("%s",stu_id[stu_count]);//输入姓名printf("请输入姓名:");getchar();scanf("%[^\n]",stu_name[stu_count]);//%[^\n]匹配除了\n以外的输入//输入各科成绩scores[stu_count][0] = get_valid_score("语文");scores[stu_count][1] = get_valid_score("数学");scores[stu_count][2] = get_valid_score("英语");stu_count++;
}/***显示所有学生信息*/
void show_all()
{if(stu_count == 0){printf("暂无学生信息!\n");return;//跳出函数,后续代码不执行}//格式化输出信息printf("\n%-12s%-20s%-12s%-12s%-12s\n","学号","姓名","语文","数学","英语");for(int i = 0; i < stu_count; i++){//获取学号和姓名printf("%-12s%-20s",stu_id[i],stu_name[i]);for(int j = 0; j < COURSE_NUM; j++){printf("%-12d",scores[i][j]);}printf("\n");}printf("\n");
}/***计算平均分*/
void calc_average()
{if(stu_count == 0){printf("暂无数据!\n");return;}char target_id[ID_LEN];printf("请输入要查询的学号:");scanf("%s",target_id);for(int i = 0; i < stu_count; i++){if(strcmp(stu_id[i],target_id) == 0){float sum = 0;for(int j = 0; j < COURSE_NUM; j++){sum += scores[i][j];}printf("平均分:%.2f\n",sum/COURSE_NUM);return;}}printf("未找到该学生!\n");
}/***查找最高分科目*/
void find_max()
{int max_score = -1;char max_course[20];char max_stu[NAME_LEN];for(int i = 0; i < stu_count; i++){for(int j = 0; j < COURSE_NUM; j++){if(scores[i][j] > max_score){max_score = scores[i][j];//最高成绩对应的姓名strcpy(max_stu,stu_name[i]);switch(j){case 0:strcpy(max_course,"语文");break;case 1:strcpy(max_course,"数学");break;case 2:strcpy(max_course,"英语");break;}}}}if(max_score != -1){printf("最高分记录:%s的%s获得%d分\n",max_stu,max_course,max_score);}else{printf("暂无数据!\n");}
}int main(int argc,char *argv[])
{//定义一个变量,用来接收用户的输入int choice;while(1){//设计头printf("\n=== 学生成绩管理系统 v1.0 ===\n");printf("1.添加学生信息\n");printf("2.显示所有学生信息\n");printf("3.查看平均分\n");printf("4.查看最高分\n");printf("5.退出系统\n");printf("请选择操作:");//过滤非数字int result = scanf("%d",&choice);//该判断的作用,检测是否输入的是整数,输入的数据匹配scanf() == 1,不匹配scanf() != 1if(result != 1){//如果输入的不是数字,就执行这个判断//清空输入缓冲区while(getchar() != '\n');printf("输入有误!\n");continue;}//过滤掉1~5以外的数字//校验switch(choice){case 1://添加学生信息add_student();break;case 2://显示所有学生信息show_all();break;case 3://查看平均分calc_average();break;case 4://查找最高分find_max();break;case 5://退出系统printf("系统已退出!\n");return 0;default:printf("无效选项!\n");}}return 0;
}相关文章:
C语言综合案例:学生成绩管理系统
C语言综合案例:学生成绩管理系统 需求 1.存储最多50名学生的信息(不使用结构体) 2.每个学生包含: 学号(字符数组)姓名(字符数组)3门课程成绩(一维数组) …...
使用python做http代理请求
有这样一个需求现在有两台A,B两台电脑组成了一个局域网,在A电脑上开发webjava应用,需要调用第三方接口做http请求,但是这个请求只能在B电脑上请求。 一种解决方案:自定义一个中间服务,在电脑B上运行一个简…...
数据库事务的基本要素(ACID)
数据库事务的基本要素(ACID) 在数据库管理系统(DBMS)中,事务(Transaction)是一个或多个数据库操作的集合,这些操作要么全部成功,要么全部失败。事务的目标是保证数据的一…...
DeepSeek R1满血+火山引擎详细教程
DeepSeek R1满血火山引擎详细教程 一、安装Cherry Studio。 Cherry Studio AI 是一款强大的多模型 AI 助手,支持 iOS、macOS 和 Windows 平台。可以快速切换多个先进的 LLM 模型,提升工作学习效率。下载地址 https://cherry-ai.com/ 认准官网,无强制注册。 这…...
大型语言模型技术对比:阿里Qwen qwq、DeepSeek R1、OpenAI o3与Grok 3
1. 引言 在人工智能(AI)领域中,大型语言模型(Large Language Models,简称LLM)近年来取得了显著的突破。从早期的GPT-3到如今的各种高级模型,这些技术不仅推动了自然语言处理(NLP&am…...
ArcGIS Pro可见性分析:精通地形视线与视域分析
在地理信息系统(GIS)的广泛应用中,可见性分析作为一项关键技术,发挥着不可替代的作用。 无论是城市规划、环境监测,还是军事侦察、景观设计,可见性分析都能提供精确的数据支持,帮助我们更好地理…...
计算机工具基础(五)——Vim
Vim MIT《Missing in CS Class(2020):Class 3》笔记 Vim是终端环境中常用的纯文本编辑器。Vim的默认配置文件位于~/.vimrc 模式 Vim有如下5种模式: 常规模式(Normal):进入Vim后的默认模式,用于阅读文件。以Esc自其他模式中退至此模式插入模…...
Android应用app实现AI电话机器人接打电话
Android应用app实现AI电话机器人接打电话 --安卓AI电话机器人 一、前言 【Dialer3.0智能拨号器】Android版手机app,由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电,并接收和处理通话的声音,通常我们以“蓝牙电话方案”来称呼它。 …...
Mobaxterm服务器常用命令(持续更新)
切换文件夹 cd path # for example, cd /gpu03/deeplearning/进入不同GPU ssh mgmt ssh gpu01 ssh gpu03寻找文件位置 find /path -name file_name #for example, find / -name lib #在根目录下搜寻名为lib文件 #for example, find /home/deeplearning -name "lib"…...
Android14窗口管理自适应投屏分辨率
环境 console:/ # cat /proc/version Linux version 6.1.57 (机密信息) (Android (10087095, pgo, bolt, lto, -mlgo, based on r487747c) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362), LLD 17…...
Shot Studio for macOS 发布 1.0.2
Shot Studio 是一个 macOS 的 app,专门为开发者设计,主要用于各大 app 应用商店的预览图设计。 提供了非常多的模板,也预设了很多尺寸。可以直接一键使用 在 1.0.2 这个版本中新增了: 文本渐变 图层:边框、颜色、圆…...
《深度学习实战》第4集:Transformer 架构与自然语言处理(NLP)
《深度学习实战》第4集:Transformer 架构与自然语言处理(NLP) 在自然语言处理(NLP)领域,Transformer 架构的出现彻底改变了传统的序列建模方法。它不仅成为现代 NLP 的核心,还推动了诸如 BERT、…...
Starrocks入门(二)
1、背景:考虑到Starrocks入门这篇文章,安装的是3.0.1版本的SR,参考:Starrocks入门-CSDN博客 但是官网的文档,没有对应3.0.x版本的资料,却有3.2或者3.3或者3.4或者3.1或者2.5版本的资料,不要用较…...
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...
html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Open WebUI项目源码学习记录(从0开始基于纯CPU环境部署一个网页Chat服务)
感谢您点开这篇文章:D,鼠鼠我是一个代码小白,下文是学习开源项目Open WebUI过程中的一点笔记记录,希望能帮助到你~ 本人菜鸟,持续成长,能力不足有疏漏的地方欢迎一起探讨指正,比心心~…...
【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,
欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创…...
蓝桥杯练习代码
一、最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出:"fl"示例…...
Imagination通过最新的D系列GPU IP将效率提升至新高度
Imagination DXTP GPU IP在加速移动设备和其他电力受限设备上的图形和计算工作负载时,能够延长电池续航时间。 英国伦敦 – 2025年2月25日 – 今日,Imagination Technologies(“Imagination”)宣布推出其最新的GPU IP——Imagina…...
C高级——shell(3)
一、shell的选择结构 1.回顾:C语言的选择结构:if , if else if ,if else,switch (switch的执行速度最快) 2.shell的选择结构: 单分支if 双分支 if else 多分支if elif case..in 1.1 shell的选择结构的格式 --------C语言的格式--…...
多自由度冗余空间机械臂位姿一体化规划与控制【附代码】
✨ 长期致力于空间机械臂、对偶四元数、位姿一体化、路径规划、跟踪控制研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)基于对偶四元数的冗余机械臂运…...
FCEUX终极指南:从怀旧游戏到专业调试的完整NES模拟器教程
FCEUX终极指南:从怀旧游戏到专业调试的完整NES模拟器教程 【免费下载链接】fceux FCEUX, a NES Emulator 项目地址: https://gitcode.com/gh_mirrors/fc/fceux FCEUX是一款功能强大的开源NES模拟器,让你在现代电脑上完美重温经典红白机游戏。无论…...
Office RibbonX Editor:让Office界面定制变得像搭积木一样简单
Office RibbonX Editor:让Office界面定制变得像搭积木一样简单 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbon…...
Python基础语法:常用内置函数
round():四舍五入 # 省略 ndigits print(round(3.14)) # 输出 3(int) print(round(3.66)) # 输出 4# 指定 ndigits print(round(3.14159, 2)) # 输出 3.14(float) print(round(3.666, 2)) # 输出 3.67# …...
交流电机驱动器的三种控制模式:前沿切相、后沿切相与同步模式详解
1. 项目概述:一个能玩出花的交流电机驱动器在汽车改装、工业控制或者一些创客项目里,驱动一个交流电机听起来简单,但想让它听话地变速、正反转,甚至实现软启动和精确同步,往往就得搬出笨重又昂贵的工业变频器。今天分享…...
Codex使用API Key授权无法使用插件?
小伙伴们,大家好,我是小溪,见字如面。对于没有ChatGPT账号的小伙伴来说,虽然可以通过API Key授权的方式使用Codex桌面端,但是会有一些限制。比如无法使用插件功能,无法使用Codex移动端进行远程控制等。为了…...
Unity塔防底层架构:ScriptableObject驱动的数据契约设计
1. 这不是“又一个塔防模板”,而是塔防开发的底层操作系统我第一次在Asset Store点开Tower Defense Toolkit 4(TDTK-4)的预览图时,下意识划走了——界面太“干净”了,没有炫酷的粒子特效演示,没有满屏飞舞的…...
基于PGA2311的树莓派Hi-Fi模拟音量控制器设计与实现
1. 项目概述:为树莓派DAC打造的高品质模拟音量控制器玩过树莓派音频播放器的朋友都知道,用上像PCM1794A这类高性能DAC芯片后,音质确实能上一个台阶,但有个不大不小的麻烦:这类芯片本身不带音量控制。软件调音量&#x…...
昇腾CANN cmake 实战:CANN CMake 构建系统——跨平台编译配置与模块化管理
8 个 CANN 仓库各需独立构建(ops-transformer/ops-nn/hccl/ge/…)→ 手写 8 套 CMakeLists.txt(CANN 路径判断、跨 NPU 型号编译、第三方库兼容)。cmake 仓库提供统一的 FindCANN.cmake CANNConfig.cmake 模板——任何仓库只需 f…...
为内部知识库问答系统集成多模型后备路由以提升服务韧性
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答系统集成多模型后备路由以提升服务韧性 对于依赖大模型提供智能问答服务的企业内部知识库而言,服务的…...
