邓丽萍
摘要:C语言程序设计是计算机和电子专业必修的专业课,但多数同学觉得此课程枯燥无趣,在学习过程中感觉都是些离生活遥远的无聊的数学例子,该文通过列举生活中的实用的趣味的案例来激发学生的学习兴趣。
关键词:C语言;必修课;趣味;
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)26-0086-02
1 入场排序器
日常生活中大小赛事,重要活动如奥运会、城运会等,都将有很多国家或城市参加,开幕时将按一定(如名字的首字母先后)的顺序入场,那么怎样对这些国家和城市来排序呢?这里我们可以用代码将入场的次序按字母的先后进行排序,使入场时变得井然有序。
1.1 实训过程
1)说明部分,定义一个二维字符数组,用于存储需要排序的字符串;
2)对字符串数组进行排序;
3)输出排序后的字符串。
1.2 所用到的知识点
1)二维数组的定义;
2)数组的排序;
3)字符串的处理函数:头文件 #include "string.h"
字符串比较函数:strcmp(charArr[j],charArr[j+1])>0
字符串复制:strcpy(temp,charArr[j]);
字符串输出:puts(charArr[i]);
1.3 案例扩展
1)动态输入字符串进行排序;
2)为了节约存储用指针数组来实现排序。
2 儿童算术能力测试软件
在我们的一生学习中,儿童期的算术能力是学好的数学的基本功。此款儿童算术能力测试软件可以辅助儿童进行算术训练,从而提高儿童的算术能力,程序会自动生成两个随机数和一个运算符,使用者只需要输入运算后的值,软件会自动评判并统计出所得的分数。
2.1 实训过程
1)说明部分:分别定义一个用于存储正确答案和用户所输入的答案的数组;
2)打印测试软件的说明
3)随机生成10个题目
a)先定义两个变量作为运算的值,一个存储运算符的top,一个循环变量以及存储运算符的字符op
b)用system(“cls”)
c)初始化随机数种子
d)循环十次,分别初始化两个数和一个运算符判断运算符是否符合规范
e)用switch分支语句对运算符进行分支,并且把运算符给op赋值,
f)输出题目
4)供用户回答题目(循环十次,用户分别输入答案)
5)批改评判
a)循环遍历答案
b)如果答案正确输出黄色的well done
c)如果答案错误输出红色的答案
6)输出成绩等级
a)先让成绩num*10变成百分制
b)如果成绩在90分至100分之间,输出总成绩,输出Very Good
c)如果成绩在60分至90分之间,输出总成绩,输出fight for good grades!
d)如果小于60分,则输出总成绩和Dont give up!!
7)输入字符串Y或N判断是否还要再测试,如果输入Y则再进行测试N则退出while循环,并打印Thank you for using it,Byebye!
2.2 所用到的知识点
1)分支语句;
2)循环语句;
3)随机数的产生方法;
4)函数的定义;
5)函数参数的使用;
6)函数原型申明;
7)函数的调用。
2.3 案例扩展
将分数保存到数组,做一个排行榜,看看哪个小朋友最棒。
3 日历
在我们的生活中离不开日期,我们很在意我们所过的这一天是什么日子,尤其是双休日还是工作日,是平年还是闰年。本案例可以使我们更便捷地查看某一天是星期几。
3.1 实训过程
1)说明部分:分别定义了表示年,月,日的三个变量。和每个月的天数的一个数组,表示总天数的long int型数据day,存放每个星期的字符数组week;
2)清空缓存,并且输入日期;
3)判断是否为闰年。如果是闰年,把存放每个月天数的monthd数组的第二个月天数修改为29天;
4)循环monthd数组。到输入的那个月份为止,计算出当前这一年的月的天数,再加上输入的天数,求得当前年所过的天数;
5)从1900年开始到当前年,求得所有的天数;
6)判断所得的是否为双休日。
3.2 所用到的知识点有:
1)清空缓存:fflush(stdin);
2)按格式输入内容: scanf("%d-%d-%d",&y,&m,&d);
3)条件分支,判断是否为闰年:if(y%4==0&&y%100!=0||y%400==0),判断是否为工作日;
4)循环;
5)数组的应用。
3.3 案例扩展
1)用”time.h”头文件查询当前日期,计算今天为星期几;
2)用枚举初始化星期。
4 我的图形我做主
形状是人们认识一件事物的第一反应,我们对一件事物是否熟悉,也取决于对这件事物的形状的印象,数学更是离不开形状,因此我们做了一个可以生成各种形状的程序,来帮助人们对形状的认识。“我的图形我做主”是一款可以由用户输入指定的边数,行数和是否为空心三个参数后,便自动生成相应的图形的程序。
4.1 实训过程
1)说明部分:定义了三个变量,分别是edge(边数),line(行数),shape(是否为空心);
2)使用while无限循环,让用户可以多次使用;
3)清空当前屏幕内容。并且提示用户输入边数,行数以及是否为空心;
4)用户进入Produce_Pattern函数后
a)判断line,如果行数小于三,就让line=3
b)进入switch分支,如果line是3,则进入Triangle,输出三角形,如果line是4,则输出菱形和平行四边形,否则输出error;
5)打印完后,让程序暂停
a)定义一个char ,用户保存输入的值
b)清空缓存
c)输出提示语句enter continue...
d)判断用户输入的是不是enter键,如果是,则返回主页面,如果不是,一直处于程序暂停状态。
4.2 所用到的知识点
1)双重循环的使用;
2)函数的定义;
3)函数参数的使用;
4)函数的调用。
4.3 案例扩展
1)再加上空、实心的六边形和空心的五角星;
2)用graphics绘制图形。
5 猜拳游戏
制作一个玩家可以与电脑进行猜拳的娱乐小游戏。
5.1 实训过程
1)说明部分:定义一个玩家结构体;
2)建立一个玩家user,并对其进行初始化;
3)接收玩家的出拳和产生电脑的出拳;
4)判断胜负,并且对总局数user.total++,若玩家胜利则将user.win++;
5)选择继续或者退出,继续则再进行游戏,退出则打印排行榜,输出玩家所玩总局数user.totoal和胜率user.victory=user.win/user.total*100。
5.2 所用到的知识点有:
1)函数的定义;
2)函数参数的使用;
3)函数的调用;
4)结构体的定义;
5)指针的定义及使用。
参考文献:
[1] 吴丽娟, 申海, 张浩华. C语言课程设计教学模式的探索与实践[J]. 沈阳师范大学学报:自然科学版, 2012(1).
[2] 齐心. 以C语言实验教学为核心培养学生创新能力[J]. 科技创新导报, 2012(5).
[3] 张秋生. 《C语言程序设计》课程教学改革与实践[J]. 软件导刊, 2012(2).
[4] 李红叶. 项目驱动教学法在《C语言程序设计》教学中的应用[J]. 中国科技信息, 2012(6).
[5] 马占军. “船舶电气设备及系统”课程教学改革的探讨[J]. 通化师范学院学报, 2012(6).
[6] 卢争艳, 张兰. 举一反三——谈C语言循环结构教学[J]. 科技创新导报, 2011(29).