苏小红c语言实验
哈尔滨工业大学计算机科学与技术学院苏小红 sxhhit.edu.cn1*C语言大学实用教程课件 制作人苏小红2主教材:苏小红等, C语言大学实用教程,电子工业出版 社,2004,8苏小红等, C语言大学实用教程(第2版),电子 工业出版社,2007,2实验教材:苏小红等,C语言大学实用教程习题与实验指导, 电子工业出版社,2004,8苏小红等,C语言大学实用教程学习指导,电子工 业出版社,2007,4*C语言大学实用教程课件 制作人苏小红3实验内容*C语言大学实用教程课件 制作人苏小红4实验1: 熟悉上机环境和顺序结构编程 练习键盘输入与屏幕输出练习 问题1:要使下面程序的输出语句在屏幕上显示 1,2,34,则从键盘输入的数据格式应为以下备选答案 中的哪一个? #include main() char a,b; int c; scanf(“%c%c%d“, printf(“%c,%c,%dn“,a,b,c); A) 1 2 34 B) 1, 2, 34 C) 1,2,34 D) 12 34*C语言大学实用教程课件 制作人苏小红5实验1: 熟悉上机环境和顺序结构编程 练习键盘输入与屏幕输出练习 问题2:与上面程序的键盘输入相同的情况下,要 使上面程序的输出语句在屏幕上显示1 2 34,则应 修改程序中的哪条语句?怎样修改? #include main() char a,b; int c; scanf(“%c%c%d“, printf(“%c,%c,%dn“,a,b,c); *C语言大学实用教程课件 制作人苏小红6问题3:要使上面程序的键盘输入数据格式为1,2,34 ,输出语句在屏幕上显示的结果也为1,2,34,则应 修改程序中的哪条语句?怎样修改?#include main() char a,b; int c; scanf(“%c%c%d“, printf(“%c,%c,%dn“,a,b,c); 实验1: 熟悉上机环境和顺序结构编程 练习键盘输入与屏幕输出练习 *C语言大学实用教程课件 制作人苏小红7问题4:要使上面程序的键盘输入数据格式为1,2,34 ,而输出语句在屏幕上显示的结果为1,2,34,则 应修改程序中的哪条语句?怎样修改? 提示:利用转义字符输出字符单引号字符。#include main() char a,b; int c; scanf(“%c%c%d“, printf(“%c,%c,%dn“,a,b,c); 实验1: 熟悉上机环境和顺序结构编程 练习键盘输入与屏幕输出练习 *C语言大学实用教程课件 制作人苏小红8问题5:要使上面程序的键盘输入无论用下面 哪种格式输入数据,程序在屏幕上的输出结果 都为1,2,34,则程序应修改程序中的哪条语 句?怎样修改? 第一种输入方式:1,2,34(以逗号作为分隔符) 第二种输入方式:1 2 34(以空格作为分隔符) 第三种输入方式:1 2 34(以Tab键作为分隔 符) 第四种输入方式:1234(以回车符作为分隔符) 实验1: 熟悉上机环境和顺序结构编程 练习键盘输入与屏幕输出练习 *C语言大学实用教程课件 制作人苏小红9实验1: 熟悉上机环境和顺序结构编程 练习计算定期存款本利之和 设银行定期存款的年利率rate为2.25%,并已 知存款期为n年,存款本金为capital元,试编 程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本 金capital均由键盘输入。 *C语言大学实用教程课件 制作人苏小红10实验2: 选择结构编程练习 身高预测 每个做父母的都关心自己孩子成人后的身高,据有关 生理卫生知识与数理统计分析表明,影响小孩成人后 身高的因素有遗传、饮食习惯与坚持体育锻炼等。小 孩成人后身高与其父母身高和自身性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高 预测公式为: 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm)此外,如果喜爱体育锻炼,那么可增加身高2%,如 果有良好的卫生饮食习惯,那么可增加身高1.5%。*C语言大学实用教程课件 制作人苏小红11实验2: 选择结构编程练习 身高预测 编程从键盘输入你的性别(用字符型变量sex存储, 输入字符F表示女性,输入字符M表示男性)、父母 身高(用实型变量存储,faHeight为其父身高, moHeight为其母身高)、是否喜爱体育锻炼(用字符 型变量sports存储,输入字符Y表示喜爱,输入字符N 表示不喜爱)、是否有良好的饮食习惯等条件(用字 符型变量diet存储,输入字符Y表示喜爱,输入字符N 表示不喜爱),利用给定公式和身高预测方法对你的 身高进行预测。 *C语言大学实用教程课件 制作人苏小红12实验2:选择结构编程练习 简单的计算器程序 要求用switch语句编程设计一个简单的计算器程序。 要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2计算表达式的值,指定的算术运算符为加(+)、减 (-)、乘(*)、除(/)。*C语言大学实用教程课件 制作人苏小红13例4.8:计算器程序编程设计一个简单的计算器程序,要求根据用户 从键盘输入如下形式的表达式:操作数1 运算符op 操作数2然后,计算并输出表达式的值指定的运算符为加(+)减(-)乘(*)除(/) *C语言大学实用教程课件 制作人苏小红14main() int data1, data2; /*定义两个操作符*/ char op; /*定义运算符*/printf(“Please enter the expression:“); scanf(“%d%c%d“, /*输入运算表达式*/switch (op) case '+': /*处理加法*/ printf(“%d + %d = %dn“, data1, data2, data1 + data2); break; case '-': /*处理减法*/ printf(“%d - %d = %dn“, data1, data2, data1 - data2); break; case '*': /*处理乘法*/ printf(“%d * %d = %dn“, data1, data2, data1 * data2); break; case '/': /*处理除法*/ if (0 = data2)printf(“Division by zero!n“); else printf(“%d/%d = %dn“, data1, data2, data1/data2); break; default: printf(“Unknown operator! n“); 例4.8*C语言大学实用教程课件 制作人苏小红15实验2:选择结构编程练习 简单的计算器程序 本实验程序是在例4.8基础上,增加如下要求: (1)如果要求程序能进行浮点数的算术运算,程序应该如 何修改? 如何比较实型变量data2和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间 可以加入任意多空白符,那么程序如何修改? (3)(选作题)如果要求连续做多次算术运算,每次运算 结束后,程序都给出提示:Do you want to continue(Y/N or y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则 程序才退出运行状态。那么,程序如何修改? *C语言大学实用教程课件 制作人苏小红16语句 if (0 = data2)的必要性 1998年11月科学美国人杂志,描述了美国导弹巡 洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭 如果要求程序能进行浮点数的算术运算,语句 if (0 = data2)还能用于比较实型变量data2和 常数0的大小吗? if (fabs(data2) #include main() int magic; int guess; int counter; unsigned int seed; printf(“Please enter seed:“); scanf(“%u“, srand(seed);magic = rand() % 100 + 1; counter = 0; do printf(“Please guess a magic number:“); scanf(“%d“, counter +; if (guess > magic) printf(“Wrong! Too high!n“); else if (guess srand(time(NULL); magic = rand() % 100 + 1; *C语言大学实用教程课件 制作人苏小红21#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“, counter +; if (guess > magic) printf(“Wrong! Too high!n“); else if (guess #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“, counter +; if (guess > magic) printf(“Wrong! Too high!n“); else if (guess =aver时,打印numi和scorei。 (3)将成绩分为六个分数段,60分以下为第0段, 6069为第1段,7079为第2段,8089为第3段,9099 为第4段,100分为第5段,因此,成绩与分数段的对应 关系为:各分数段的学生人数保存在数组stu中,用stui存放第i段的学 生人数。对于每个学生的成绩,先计算出该成绩所对应的分 数段,然后将相应的分数段的人数加1,即stui+。 *C语言大学实用教程课件 制作人苏小红39实验7:二维数组、函数和常用算 法综合编程练习 成