哈尔滨工业大学计算机科学与技术学院苏小红sxh@hiteducn.ppt
《哈尔滨工业大学计算机科学与技术学院苏小红sxh@hiteducn.ppt》由会员分享,可在线阅读,更多相关《哈尔滨工业大学计算机科学与技术学院苏小红sxh@hiteducn.ppt(75页珍藏版)》请在三一文库上搜索。
1、哈尔滨工业大学计算机科学与技术学院 苏小红 ,C语言实验,主教材: 苏小红等, C语言大学实用教程,电子工业出版社,2004,8 苏小红等, C语言大学实用教程(第2版),电子工业出版社,2007,2 实验教材: 苏小红等,C语言大学实用教程习题与实验指导,电子工业出版社,2004,8 苏小红等,C语言大学实用教程学习指导,电子工业出版社,2007,4,实验内容,实验1: 熟悉上机环境和顺序结构编程练习键盘输入与屏幕输出练习,问题1:要使下面程序的输出语句在屏幕上显示1,2,34,则从键盘输入的数据格式应为以下备选答案中的哪一个?,#include main() char a,b; int c
2、; scanf(“%c%c%d“, A) 1 2 34 B) 1, 2, 34 C) 1,2,34 D) 12 34,实验1: 熟悉上机环境和顺序结构编程练习键盘输入与屏幕输出练习,问题2:与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?,#include main() char a,b; int c; scanf(“%c%c%d“, ,问题3:要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?,#include main() char a,b; i
3、nt c; scanf(“%c%c%d“, ,实验1: 熟悉上机环境和顺序结构编程练习键盘输入与屏幕输出练习,问题4:要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为1,2,34,则应修改程序中的哪条语句?怎样修改? 提示:利用转义字符输出字符单引号字符。,#include main() char a,b; int c; scanf(“%c%c%d“, ,实验1: 熟悉上机环境和顺序结构编程练习键盘输入与屏幕输出练习,问题5:要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为1,2,34,则程序应修改程序中的哪条语句?怎样修改? 第一种输入
4、方式:1,2,34(以逗号作为分隔符) 第二种输入方式:1 2 34(以空格作为分隔符) 第三种输入方式:1 2 34(以Tab键作为分隔符) 第四种输入方式:1 2 34(以回车符作为分隔符),实验1: 熟悉上机环境和顺序结构编程练习键盘输入与屏幕输出练习,实验1: 熟悉上机环境和顺序结构编程练习计算定期存款本利之和,设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。 要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。,实验2: 选择结构编程练习 身高预测,每个做父母的都关心自己孩子
5、成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。 设faHeight为其父身高,moHeight为其母身高,身高预测公式为: 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。,实验2: 选择结构编程练习 身高预测,编程从键盘输入你的性别(用字符型变量sex存储,输
6、入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示喜爱,输入字符N表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。,实验2:选择结构编程练习 简单的计算器程序,要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。,
7、例4.8:计算器程序,编程设计一个简单的计算器程序,要求根据用户从键盘输入如下形式的表达式: 操作数1 运算符op 操作数2 然后,计算并输出表达式的值 指定的运算符为 加(+) 减(-) 乘(*) 除(/),main() int data1, data2; /*定义两个操作符*/ char op; /*定义运算符*/ printf(“Please enter the expression:“); scanf(“%d%c%d“, ,例4.8,实验2:选择结构编程练习 简单的计算器程序,本实验程序是在例4.8基础上,增加如下要求: (1)如果要求程序能进行浮点数的算术运算,程序应该如何修改? 如
8、何比较实型变量data2和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多空白符,那么程序如何修改? (3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N or y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么,程序如何修改?,语句 if (0 = data2)的必要性 1998年11月科学美国人杂志,描述了美国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭 如果要求程序能进行浮点数的算术运算,语句 if (0 = data2
9、)还能用于比较实型变量data2和常数0的大小吗? if (fabs(data2) = 1e-7) 如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? scanf(“%d%c%d“, ,实验2:选择结构编程练习 简单的计算器程序,实验3:循环结构编程练习 猜数游戏,在这个实验中,我们将尝试编写一个猜数游戏程序,这个程序看上去有些难度,但是如果你按下列要求以循序渐进方式进行编程实现,你就会发现其实这个程序是很容易实现的。先编写第一个程序,然后试着在第一个程序的基础上编写第二个程序,。 程序1:编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则
10、计算机给出提示:“Right!”, 否则提示:“Wrong!”,并告诉人所猜的数是大(Too high)还是小(Too low),然后结束游戏。要求每次运行程序时机器所“想”的数不能都是一样的。,猜数游戏用到的库函数,随机函数srand 为函数rand()设置随机数种子来实现对函数rand所产生的伪随机数的 “随机化” 通过键入随机数种子,产生0,100之间的随机数 scanf(“%u“, ,#include #include main() int magic; int guess; int counter; unsigned int seed; printf(“Please enter se
11、ed:“); scanf(“%u“, ,猜数游戏用到的库函数,使用计算机读取其时钟值并把该值自动设置为随机数种子,产生0,100之间的随机数 函数time()返回以秒计算的当前时间值,该值被转换为无符号整数并用作随机数发生器的种子 #include srand(time(NULL); magic = rand() % 100 + 1;,#include #include #include main() int magic; int guess; int counter; srand(time(NULL); magic = rand() % 100 + 1; counter = 0; do pr
12、intf(“Please guess a magic number:“); scanf(“%d“, ,程序2:编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。,实验3:循环结构编程练习 猜数游戏,程序3:编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中
13、的话,则结束游戏。,实验3:循环结构编程练习 猜数游戏,#include #include #include main() int magic; int guess; int counter; srand(time(NULL); magic = rand() % 100 + 1; counter = 0; do printf(“Please guess a magic number:“); scanf(“%d“, ,程序4:编程先由计算机“想”一个1到100之间的数请人猜,如果人猜对了,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,且结束游戏,否则计算机给出提示,告诉人所
14、猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。,实验3:循环结构编程练习 猜数游戏,实验4:函数编程练习 小学生加法考试题,程序1: 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”;,实验4:函数编程练习 小学生加法考试题,/* 函数功能: 计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0 函数参数: 整型变量a和b,分别代表被加数和加数 函数返回值:当a加b的结果与用户输
15、入的答案相同时,返回1,否则返回0 */ int AddTest(int a, int b) int answer; printf(“%d+%d=“, a, b); scanf(“%d“, ,void Print(int flag) if (flag) printf(“Right!n“); else printf(“Not correct!n“); ,实验4:函数编程练习 小学生加法考试题,程序2: 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止;,main() int a, b, an
16、swer; printf(“Input a,b:“); scanf(“%d,%d“, ,do while (answer = 0);,实验4:函数编程练习 小学生加法考试题,实验4:函数编程练习 小学生加法考试题,程序3: 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct. You have tried three times! Test over!”程序结束;,main() answer = AddTest(a, b); Pr
17、int(answer, chance); ,chance = 0; do chance+; while (answer = 0 ,实验4:函数编程练习 小学生加法考试题,实验4:函数编程练习 小学生加法考试题,程序4: 连续做10道题,通过计算机随机产生两个110之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题目数量。,srand(time(NULL); error = 0; score = 0; for (i=0; i10; i+) a = rand
18、()%10 + 1; b = rand()%10 + 1; answer = AddTest(a, b); Print(answer); if (answer = 1) score = score + 10; else error+; ,实验4:函数编程练习 小学生加法考试题,实验5:数组编程练习 检验并打印魔方矩阵,在下面的55魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后,检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。,实验5:数组编程练习 餐饮服务质量调查打分,有40个学生被邀请给自助餐厅的食品和服务质量打
19、分(110等级),统计调查结果,并用*打印如下形式的统计结果直方图 Grade Count Histogram 1 5 * 2 10 * 3 7 * .,实验5:数组编程练习 餐饮服务质量调查打分,提示 定义数组score存放打的分数 定义数组count为计数器(count0不用) 计算统计结果:设置一个循环,依次检查数组元素值scorei,是1则将数组元素count1加1,是2则将数组元素count2加1,依此类推 for (i=0; iSTUDENTS; i+) countscorei +; 打印统计结果,设置一个循环,按count数组元素的值,打印相应个数的符号*,实验6:一维数组和函数
20、综合编程练习 学生成绩统计,从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别统计下列内容: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单; (3)统计各分数段的学生人数及所占的百分比;,实验6:一维数组和函数综合编程练习 学生成绩统计,提示: (1)用numi存放第i+1个学生的学号,用scorei存放第i+1个学生的成绩。设置计数器count,当scorei=aver时,打印numi和scorei。 (3)将成绩分为六个分数段,60分以下为第0段,6069为第1段,7079为第2段,8
21、089为第3段,9099为第4段,100分为第5段,因此,成绩与分数段的对应关系为: 各分数段的学生人数保存在数组stu中,用stui存放第i段的学生人数。对于每个学生的成绩,先计算出该成绩所对应的分数段,然后将相应的分数段的人数加1,即stui+。,实验7:二维数组、函数和常用算法综合编程练习 成绩排名次,某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求: (1)计算每个学生的总分和平均分; (2)按总分成绩由高到低排出成绩的名次; (3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分; (4)任意输入一个学号,能够查找出该学生在班
22、级中的排名及其考试分数,实验7:二维数组、函数和常用算法综合编程练习 成绩排名次,提示:用二维数组score存放每个学生各门课程的成绩,用一维数组num存放每个学生的学号,用一维数组sum存放每个学生的总分,用一维数组aver存放每个学生的平均分。 (1)用函数编程实现计算每个学生的总分; (2)用函数编程实现按总分由高到低对学生成绩排序,注意:排序时,一维数组sum元素的变化应连同二维数组score和一维数组num和aver一起变化; (3)用函数编程实现查找学号为k的学生在班级中的排名名次及相关成绩等信息,找不到时返回-1值。,实验8:数组、指针和函数综合编程练习 打印最高分和学号,假设每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈尔滨工业大学 计算机科学 技术学院 苏小红 sxh hiteducn
链接地址:https://www.31doc.com/p-2480220.html