当前位置: 首页 > news >正文

学c语言~

哥哥,阿玖今天学c语言,随便先来100行可以运行的代码,需要中文注释。先敲代码~

我们收到阿玖请求:哥哥,阿玖今天学c语言,随便先来100行可以运行的代码,需要中文注释。先敲代码~

我们需要提供一段大约100行的C语言代码,带有中文注释。可以是一个完整的程序,包含多个函数和逻辑,让学习者能看到不同的语法和用法。最好包含输入输出、循环、条件判断、数组、函数、指针、结构体等基本概念。代码要能够编译运行,没有错误。

需要考虑代码长度,大概100行左右,不要太多。我们可以编写一个综合示例,例如一个简单的学生成绩管理系统,或者一个计算器,或者一些算法的演示。为了有趣且实用,可以选择一个“简易图书管理系统”或者“学生信息管理”。但为了简单且包含多种特性,可以做一个“学生成绩统计程序”,包括输入学生信息、计算平均分、最高最低分、排序等。这样可以使用结构体、数组、函数、指针等。

注意:代码需要中文注释,注释要清晰,解释关键部分。

我们编写一个程序,实现以下功能:

  1. 定义学生结构体(姓名,学号,成绩)。

  2. 输入学生人数和每个学生的信息。

  3. 计算全班平均成绩。

  4. 找出最高分和最低分的学生。

  5. 按成绩排序并输出。

  6. 提供菜单选择。

代码结构:

  • 包含头文件 stdio.h, stdlib.h, string.h

  • 定义结构体 Student

  • 函数声明:输入学生、计算平均、查找最高最低、排序、输出

  • main函数:循环菜单,调用相应函数

确保代码行数在100行左右。我们可以控制代码行数,避免过多。注释要详细,适合初学者。

开始编写。(学的话,就先敲代码!)

#include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体,包含姓名、学号和成绩 typedef struct { char name[50]; // 姓名 int id; // 学号 float score; // 成绩 } Student; // 函数声明 void inputStudents(Student *students, int n); // 输入n个学生信息 float averageScore(Student *students, int n); // 计算平均分 void findMaxMin(Student *students, int n, int *maxIdx, int *minIdx); // 找最高最低分下标 void sortByScore(Student *students, int n); // 按成绩降序排序 void printStudents(Student *students, int n); // 打印所有学生信息 int main() { int n; printf("请输入学生人数:"); scanf("%d", &n); // 动态分配学生数组内存 Student *students = (Student *)malloc(n * sizeof(Student)); if (students == NULL) { printf("内存分配失败!\n"); return 1; } int choice; do { // 显示菜单 printf("\n====== 学生成绩管理系统 ======\n"); printf("1. 输入学生信息\n"); printf("2. 计算平均成绩\n"); printf("3. 查找最高分和最低分\n"); printf("4. 按成绩排序(降序)\n"); printf("5. 显示所有学生信息\n"); printf("0. 退出\n"); printf("请选择操作:"); scanf("%d", &choice); switch (choice) { case 1: inputStudents(students, n); break; case 2: { float avg = averageScore(students, n); printf("全班平均成绩:%.2f\n", avg); break; } case 3: { int maxIdx, minIdx; findMaxMin(students, n, &maxIdx, &minIdx); printf("最高分学生:%s (学号:%d) 成绩:%.2f\n", students[maxIdx].name, students[maxIdx].id, students[maxIdx].score); printf("最低分学生:%s (学号:%d) 成绩:%.2f\n", students[minIdx].name, students[minIdx].id, students[minIdx].score); break; } case 4: sortByScore(students, n); printf("按成绩排序完成!\n"); break; case 5: printStudents(students, n); break; case 0: printf("感谢使用,再见!\n"); break; default: printf("无效选择,请重新输入!\n"); } } while (choice != 0); free(students); // 释放动态分配的内存 return 0; } // 输入n个学生的信息 void inputStudents(Student *students, int n) { printf("请依次输入每个学生的姓名、学号和成绩:\n"); for (int i = 0; i < n; i++) { printf("学生 %d:\n", i + 1); printf("姓名:"); scanf("%s", students[i].name); // 输入姓名(无空格) printf("学号:"); scanf("%d", &students[i].id); printf("成绩:"); scanf("%f", &students[i].score); } } // 计算平均分 float averageScore(Student *students, int n) { if (n == 0) return 0.0f; // 防止除零 float sum = 0.0f; for (int i = 0; i < n; i++) { sum += students[i].score; } return sum / n; } // 查找最高分和最低分的下标(通过指针返回) void findMaxMin(Student *students, int n, int *maxIdx, int *minIdx) { if (n == 0) return; *maxIdx = *minIdx = 0; // 初始化为第一个学生 for (int i = 1; i < n; i++) { if (students[i].score > students[*maxIdx].score) { *maxIdx = i; } if (students[i].score < students[*minIdx].score) { *minIdx = i; } } } // 按成绩降序排序(冒泡排序示例) void sortByScore(Student *students, int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (students[j].score < students[j + 1].score) { // 降序 // 交换两个学生结构体 Student temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } } // 打印所有学生信息 void printStudents(Student *students, int n) { printf("\n所有学生信息如下:\n"); printf("%-20s %-10s %-10s\n", "姓名", "学号", "成绩"); for (int i = 0; i < n; i++) { printf("%-20s %-10d %-10.2f\n", students[i].name, students[i].id, students[i].score); } }

代码说明

  • 使用typedef struct定义了Student类型,包含姓名、学号和成绩。

  • 动态内存分配:通过malloc分配学生数组,并在程序结束时用free释放,避免内存泄漏。

  • 菜单循环:提供5个功能选项,用户可重复操作直到选择退出。

  • 各功能模块独立为函数,便于理解和维护:

    • inputStudents:循环输入每个学生的信息。

    • averageScore:遍历数组计算总分并返回平均值。

    • findMaxMin:通过指针返回最高分和最低分的下标,节省返回值数量。

    • sortByScore:使用冒泡排序按成绩降序排列(直接修改原数组)。

    • printStudents:格式化输出所有学生信息。

  • 中文注释详细解释了每个部分的作用,适合初学者学习。

运行示例

text

请输入学生人数:3 ====== 学生成绩管理系统 ====== 1. 输入学生信息 ... 请选择操作:1 请依次输入每个学生的姓名、学号和成绩: 学生 1: 姓名:张三 学号:1001 成绩:85.5 学生 2: 姓名:李四 学号:1002 成绩:92.0 学生 3: 姓名:王五 学号:1003 成绩:78.0 ====== 学生成绩管理系统 ====== ... 请选择操作:2 全班平均成绩:85.17 ...

一、网页版C语言在线编译网站(打开浏览器直接用)

网站名称网址特点
OnlineGDBhttps://www.onlinegdb.com/online_c_compiler支持调试、断点,界面简洁-1-4
Replithttps://replit.com/languages/c功能强大,支持协作和保存项目-3-9
JDoodlehttps://www.jdoodle.com/c-online-compiler/启动快,支持分享代码链接-6-9
Tutorialspointhttps://www.tutorialspoint.com/online_c_compiler.php老牌网站,带教程-1
CodeChef IDEhttps://www.codechef.com/ide适合刷题,自动补全-9

使用方法:打开网址 → 敲代码 → 点RunExecute就能看到结果-4

http://www.jsqmd.com/news/456996/

相关文章:

  • 毕设程序java北罗镇中学校务通管理系统 北罗镇中学教育信息化协同管理系统 北罗镇中学校园事务数字化服务平台
  • 毕设程序java北京市民宿推荐系统 首都特色住宿智能匹配平台 SpringBoot框架下的京郊旅居推荐引擎
  • 四旋翼pid模糊pid控制,simulink仿真,matlab仿真,数据调好,自主学习
  • 【OpenClaw 学习技能与本地知识库提炼方案】
  • LEDVR 工作流(PDF 问答系统)落地代码清单
  • 类和动态内存分配(改进后的新String 类)
  • 解决织梦5.7添加新变量出现:Request var not allow!的办法dedecms
  • 无人机视角城市街道各种类型车辆三轮车摩托车检测数据集VOC+YOLO格式1534张6类别
  • 织梦彻底解决DedeTag Engine Create File False的方法
  • 我与 Gemini 关于 kamailio 路由的讨论
  • Halcon 通用流程
  • 2026长沙GEO优化公司实测排名:效果可量化才是硬实力 - 亿仁imc
  • C#进程与线程
  • 织梦dedecms发文章上传图片提示:Upload filetype not allow
  • 2026长沙小红书服务商实测排名:内容适配+本地转化是核心 - 亿仁imc
  • 当PMSM控制遇上量产级骚操作
  • 四川抹机水厂家哪家好?2026最新Top5榜单出炉(含资质/定制/价格分析) - 深度智识库
  • 如何选择靠谱洗枪水?四川本土5强企业,兼顾危化品合规与场景适配 - 深度智识库
  • 2026年绝缘电阻测试仪厂家综合测评与电力安全诊断白皮书
  • 空间利用率提升60%!重庆5家实力阁楼平台货架厂,专治仓储空间焦虑 - 深度智识库
  • 知识图谱驱动的Geo优化:构建AI时代的数字信用资产与语义连接
  • 如何查看盒马鲜生礼品卡回收平台的口碑? - 京顺回收
  • 对比传统砖墙,ALC 板在效率和成本上完胜!
  • 商旅经济舱是商务舱吗?区别在哪?2026高性价比平台推荐指南 - 匠言榜单
  • XMind 2025下载安装保姆级教程
  • 根据我的性格和人物画像目前适合的结婚对象是这样的
  • MySQL悲观锁的庖丁解牛
  • 手写一个String类:C++内存管理、运算符重载与静态成员实战
  • .NET源码生成器之SyntaxTree踩坑
  • 驭“数”前行 智“惠”矿山 ——华能蒙东公司单北斗定位系统项目引领矿山与车辆安全管理智能化升级