内容正文:
1.5、1.6节:C语言趣味程序实例与项目开发实例
C语言程序设计
电子工业出版社
了解循环、条件判断的基本语法,感知模块化设计思想。
能读懂并模仿“歌星大奖赛”和“成绩管理系统”的核心代码。
培养编程兴趣,初步建立用逻辑思维解决问题的习惯。
知识目标
能力目标
素养目标
01
01
01
学习目标
目录
Part 01
教学导入
Part 02
知识讲授
Part 03
师生互动
Part 04
课堂练习
Part 05
课堂小结
教学导入:从问题出发
评委打分的计算逻辑
在电视节目中,评委打分后为何要去掉一个最高分和一个最低分?如何用程序实现这个计算逻辑?
成绩管理系统的实现
学校的成绩管理系统背后是如何通过代码一步步实现的?我们能否从最简单的菜单开始,搭建一个迷你版的系统?
教学导入
接下来,我们将通过两个实例来探索答案
案例一:歌星大奖赛
通过趣味程序设计,深入学习循环结构与简单算法的实际应用,掌握基础逻辑构建。
案例二:学生成绩管理系统
体验模块化项目开发的完整流程,从需求分析到代码实现,构建完整的小型管理系统。
知识讲授
C语言趣味程序实例与项目开发实例
歌星大奖赛程序实例
学生成绩管理系统实例
第一部分
歌星大奖赛程序实例
知识讲授
知识讲授
知识讲授:歌星大奖赛评分系统
问题描述
场景:在歌星大奖赛中,10个评委为选手打分,分数范围 1~100 分。
规则:选手最后得分为去掉一个最高分和一个最低分后的平均值。
目标:编写程序实现该评分逻辑,计算出选手的最终得分。
知识讲授:算法实现
1. 初始化变量
定义总分 sum=0,最高分 max,最低分 min,为后续计算做准备。
2. 循环输入
执行10次循环,每次循环接收一个用户输入的分数,确保数据完整。
3. 累加与比较
将分数累加到sum中,同时动态比较并更新当前的最高分max和最低分min。
4. 计算与输出
循环结束后,计算平均分 (sum/10),并输出最终的统计结果。
知识讲授:算法流程图
01. 初始化设定
启动程序,设定总分、最高分、最低分的初始变量值。
02. 循环输入与处理
循环10次输入分数,累加总分并实时更新最高/最低分。
03. 计算与输出结果
扣除极值后计算平均分,显示最终结果并结束程序。
初始化:sum=0,max=0,min=100,count=0
循环输入成绩score
累加:sum=sum+score
count=count+1
比较最值:
若score>max则max=score
若score<min则min=score
计算平均分:average=sum/count
输出:输出max、min、average
结束
知识讲授:核心代码实现 (1/2)
功能说明:展示程序的初始化和循环输入部分。定义了所需的变量,并通过for循环来接收用户输入的10个分数。
int main()
{
int integer,i,max,min,sum;
max=-32768; /*假设当前得最大值max为C语言整型数的最小值*/
min=32767; /*假设当前得最大值min为C语言整型数的最大值*/
sum=0; /*将求累加的变量的初值置为0*/
for(i=1;i<=10;i++)
{
printf(“Input number %d=”,i);
scanf(“%d”,&integer); /*输入评委的评分*/
…………
知识讲授:核心代码实现 (2/2)
核心逻辑解析
在循环内部累加分数至总分,通过 if 语句动态更新最高分和最低分。循环结束后,剔除极值并计算平均分。
for(i=1;i<=10;i++)
{
printf(“Input number %d=”,i);
scanf(“%d”,&integer); /*输入评委的评分*/
sum+=integer; /*计算总分*/
if(integer>max) max=integer; /*通过比较筛选出最高分*/
if(integer<min) min=integer; /*通过比较筛选出最低分*/
}
printf(“Canceled max score:%d
Canceled min score:%d
”,max,min);
printf(“Averange score:%d
”,(sum-max-min)/8); /*输出结果*/ }
知识讲授:程序运行结果展示
99
90
最终平均分
92
去掉最高分
99
去掉最低分
师生互动:深入思考
核心思考:
如果要找出最公平(评分最接近平均分)和最不公平(与平均分差距最大)的评委,程序应该怎样实现?
解题思路引导
1. 数据存储
需要一个数组来保存所有评委的分数,以便后续遍历比较。
2. 计算差值
遍历数组,计算每个分数与平均分差值的绝对值。
3. 极值查找
比较所有绝对值,找出最大值和最小值对应的评委编号。
师生互动:程序运行结果
课堂问答
Q1: 如果忘了写找最高分的代码,程序会“失忆”吗?😱
程序会“忘记”最高分是多少,计算结果自然就错啦!
Q2: 如果只有一位评委,还需要“去掉”最高分吗?🤔
不需要!我们可以加个“小判断”,当只有1位评委时,直接计算平均分。
Q3: scanf里的&符号是“快递员”吗?📦
它是“快递员”,负责把输入的值送到正确的“地址”(变量)。少了它,数据就送错地方啦!
课堂练习
功能A:动态评委人数
修改原有的固定10人评委机制,实现由用户输入评委人数。程序应能根据输入的数值动态调整循环次数,确保逻辑的健壮性。
功能B:计算评分方差
在计算平均分的基础上,增加方差计算功能。通过方差评估评分的离散程度,分析评委打分的一致性,进一步提升数据统计的深度。
练习要求与提示
请独立思考并尝试编写代码,注意代码的规范性。如有困难,可先查阅笔记,或与同桌讨论,也可随时举手向老师求助。
第二部分
知识讲授
学生成绩管理系统实例
知识讲授
知识讲授:项目介绍
项目描述与界面设计
该系统旨在实现学生成绩的高效管理,涵盖信息录入、显示、查询、修改及排序等核心业务流程,确保学校教学管理的信息流畅通。
核心功能模块列表
系统包含八大核心功能:增删改查、成绩排序、统计分析以及文件的读写操作,模块化设计便于维护与扩展。
知识讲授:模块化思想
分工明确
每个模块负责一个特定功能,职责边界清晰,便于团队协作开发和后期维护。
代码复用
封装好的独立模块可以在系统的不同地方被多次调用,避免重复编写代码,提升效率。
便于调试
模块之间低耦合,若程序出错,可以快速定位到出问题的具体模块,降低排查难度。
知识讲授:核心代码实现
界面构建:利用 printf 结合制表符与换行符实现整齐排版
逻辑流转:用户输入后调用 choose 函数分发执行不同功能
知识讲授:程序运行结果
师生互动:代码解读
菜单界面的构建
printf 语句是如何构建出美观的菜单界面的?思考转义字符 \t 和
在控制格式中的具体作用。
choose() 函数解析
choose() 函数的核心作用是什么?它在主程序的逻辑流中是如何被调用和执行的?
功能扩展与修改
如果要增加一个“清空所有数据”的功能,应该如何修改菜单选项以及对应的逻辑代码?
师生互动:功能实现讨论
01. 如何接收输入?
程序如何获取用户输入的信息?例如学号、姓名和成绩等关键数据的录入方式。
02. 如何存储信息?
数据的临时或持久化存储方案。引入数组或结构体的概念,探讨最优的数据组织形式。
03. 如何确保唯一性?
逻辑判断与冲突检测。如何检查学号是否已存在,避免重复添加,保证数据的一致性。
课堂练习:实现简单功能
核心任务:成绩等级评定
功能描述:
输入一个0-100之间的整数成绩,程序判断并输出对应的等级。
等级划分:
90分及以上:优秀
80-89分:良好
70-79分:中等
60-69分:及格
60分以下:不及格
实现思路提示
输入成绩
使用 scanf 函数获取用户输入的成绩。
条件判断
使用 if-else if-else 语句进行多分支判断。
输出结果
根据判断结果,使用 printf 函数输出对应的等级。
课堂练习:代码框架参考
课堂小结
核心知识点回顾
循环与判断
掌握 for 循环和 if 语句的综合应用,构建基础逻辑。
算法设计思想
学会将实际问题抽象为可执行的算法步骤,优化解题思路。
模块化设计
理解复杂系统的分解策略,利用独立函数模块降低耦合度。
全流程项目实践
体验从菜单设计到功能实现的完整开发流程,建立工程思维。
核心能力提升
代码阅读能力
能够快速理解他人代码逻辑,提升学习效率。
逻辑分析能力
面对复杂问题时,能够抽丝剥茧,理清因果关系。
问题解决能力
培养 debug 思维,独立排查并解决代码中的错误。
项目协作意识
理解团队开发规范,为未来的软件工程协作打下基础。
课堂小结
章节小结:基础概念与程序结构
发展历程与特点
起源背景
1972年贝尔实验室 Dennis Ritchie 开发,源于B语言,用于编写UNIX系统。
核心特点
简洁高效,表达能力强
可移植性好,跨平台
兼具高级语言结构与低级语言功能(如指针)
程序基本结构
程序组成
由函数组成,必须有且仅有一个 main() 函数作为入口。
关键要素
头文件:#include 引入库函数
函数体:{} 包裹的功能实现代码
语句:以分号 ; 结束的执行单位
运行环境与过程
开发环境
编译器+ 编辑器
执行流程
编辑:编写 .c 源代码文件
编译:生成 .obj 或 .o 目标文件
链接:生成 .exe 可执行文件
运行:执行程序得到结果
章节小结:数据、运算与流程控制
数据类型与变量
掌握整型、浮点型、字符型等基本数据类型的使用
理解变量的定义与赋值方法,明确作用域概念
运算符与表达式
熟练运用算术、关系、逻辑运算符构建复杂表达式
理解不同运算符的优先级与结合性,避免逻辑错误
输入输出交互
掌握 printf 函数进行格式化输出,控制显示样式
掌握 scanf 函数进行格式化输入,实现人机交互
程序流程控制
顺序结构:程序默认的执行方式
选择结构:使用 if 语句实现条件判断与分支
循环结构:使用 for 语句实现代码的高效重复执行
章节小结:综合实例与工程思想
综合实例应用回顾
歌星大奖赛评分系统
综合运用循环结构与条件判断,实现评分计算功能,巩固流程控制知识。
学生成绩管理系统
初步体验模块化设计思想,将系统分解为录入、查询等独立模块,通过主函数调度,为项目开发打下基础。
工程思想的初步建立
算法设计思维
学会将实际问题抽象为可执行步骤,选择合适算法解决问题。
模块化设计策略
分解复杂系统,降低复杂度,提高代码的可读性与可维护性。
全流程项目实践
体验需求分析、设计到编码实现的完整流程,建立工程思维。
作业布置:
1. 完成第1章节复习题1。
2. 编写程序,用“*”输出字母“E”的图案。
3. 编写程序,在屏幕上输出自己的姓名。
4.编写程序,输出以下信息:
课后任务
谢谢观看
THANKS
EV录屏5.4.8软件录制
Lavf58.33.100
本视频由湖南一唯信息科技开发的EV录屏软件录制, www.ieway.cn
EV录屏5.4.8软件录制
Lavf58.33.100
本视频由湖南一唯信息科技开发的EV录屏软件录制, www.ieway.cn
EV录屏5.4.8软件录制
Lavf58.33.100
本视频由湖南一唯信息科技开发的EV录屏软件录制, www.ieway.cn
$