C语言实验题.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <time.h>
srand(time(NULL)); magic = rand() % 100 + 1;
2020/4/18
C语言大学实用教程课件 制作人苏小红
20
#include <stdlib.h> #include <stdio.h> #include <time.h> main() {
本实验程序是在例4.8基础上,增加如下要求: – (1)如果要求程序能进行浮点数的算术运算,程序应该
如何修改? 如何比较实型变量data2和常数0是否相等?
– (2)如果要求输入的算术表达式中的操作数和运算符之
间可以加入任意多空白符,那么程序如何修改?
– (3)(选作题)如果要求连续做多次算术运算,每次运
2020/4/18
C语言大学实用教程课件 制作人苏小红
12
例4.8:计算器程序
编程设计一个简单的计算器程序,要求根据用户 从键盘输入如下形式的表达式:
操作数1 运算符op 操作数2
然后,计算并输出表达式的值 指定的运算符为 加(+) 减(-) 乘(*) 除(/)
2020/4/18
C语言大学实用教程课件 制作人苏小红
17
猜数游戏用到的库函数
随机函数srand – 为函数rand()设置随机数种子来实现对函数rand所产
生的伪随机数的 “随机化”
通过键入随机数种子,产生[0,100]之间的随机数
scanf("%u", &seed); srand(seed); magic = rand() % 100 + 1;
2020/4/18
2020/4/18
C语言大学实用教程课件 制作人苏小红
5
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题3:要使上面程序的键盘输入数据格式为1,2,34 ,输出语句在屏幕上显示的结果也为1,2,34,则应 修改程序中的哪条语句?怎样修改?
#include <stdio.h> main() {
哈尔滨工业大学计算机科学与技术学院
苏小红 sxh@hit.edu.cn
主教材:
苏小红等,《 C语言大学实用教程》,电子工业出版 社,2004,8
苏小红等,《 C语言大学实用教程(第2版)》,电子 工业出版社,2007,2
实验教材:
苏小红等,《C语言大学实用教程习题与实验指导》, 电子工业出版社,2004,8
2020/4/18
C语言大学实用教程课件 制作人苏小红
11
实验2:选择结构编程练习 ——简单的计算器程序
要求用switch语句编程设计一个简单的计算器程序。 要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减 (-)、乘(*)、除(/)。
程序1:编程先由计算机“想”一个1到100之间的 数请人猜,如果人猜对了,则计算机给出提示: “Right!”, 否则提示:“Wrong!”,并告诉人所 猜的数是大(Too high)还是小(Too low),然后结束 游戏。要求每次运行程序时机器所“想”的数不能 都是一样的。
2020/4/18
C语言大学实用教程课件 制作人苏小红
– scanf("%d%c%d", &data1, &op, &data2); – scanf("%d%1s%d", &data1, &op, &data2);
2020/4/18
C语言大学实用教程课件 制作人苏小红
16
实验3:循环结构编程练习 ——猜数游戏
在这个实验中,我们将尝试编写一个猜数游戏程序 ,这个程序看上去有些难度,但是如果你按下列要 求以循序渐进方式进行编程实现,你就会发现其实 这个程序是很容易实现的。先编写第一个程序,然 后试着在第一个程序的基础上编写第二个程序, ……。
switch (op)
{ case '+':
/*处理加法*/
printf("%d + %d = %d\n", data1, data2, data1 + data2);
break; case '-':
/*处理减法*/
printf("%d - %d = %d\n", data1, data2, data1 - data2);
char a,b; int c;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); }
2020/4/18
C语言大学实用教程课件 制作人苏小红
6
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题4:要使上面程序的键盘输入数据格式为1,2,34 ,而输出语句在屏幕上显示的结果为’1’,’2’,34, 则应修改程序中的哪条语句?怎样修改?
苏小红等,《C语言大学实用教程学习指导》,电子工 业出版社,2007,4
2020/4/18
C语言大学实用教程课件 制作人苏小红
2
实验内容
2020/4/18
C语言大学实用教程课件 制作人苏小红
3
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题1:要使下面程序的输出语句在屏幕上显示 1,2,34,则从键盘输入的数据格式应为以下备选答 案中的哪一个?
printf("Wrong! Too low!\n"); }while (guess != magic);
printf("Right!\n");
printf("counter = %d \n", counter);
} 2020/4/18
C语言大学实用教程课件 制作人苏小红
19
猜数游戏用到的库函数
使用计算机读取其时钟值并把该值自动设置为随机 数种子,产生[0,100]之间的随机数 函数time()返回以秒计算的当前时间值,该值被 转换为无符号整数并用作随机数发生器的种子
break; case '*':
/*处理乘法*/
printf("%d * %d = %d\n", data1, data2, data1 * data2);
break; case '/':
/*处理除法*/
if (0 == data2)
printf("Division by zero!\n");
else
C语言大学实用教程课件 制作人苏小红
10
实验2: 选择结构编程练习 ——身高预测
编程从键盘输入你的性别(用字符型变量sex存储, 输入字符F表示女性,输入字符M表示男性)、父母 身高(用实型变量存储,faHeight为其父身高, moHeight为其母身高)、是否喜爱体育锻炼(用字 符型变量sports存储,输入字符Y表示喜爱,输入字 符N表示不喜爱)、是否有良好的饮食习惯等条件( 用字符型变量diet存储,输入字符Y表示喜爱,输入 字符N表示不喜爱),利用给定公式和身高预测方法 对你的身高进行预测。
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
A) 1 2 34
B) 1, 2, 34
C2)020/4’/118’,’2’,34
CD语言) 大1学2实用34教程课件 制作人苏小红
int magic; int guess; int counter;
2020/4/18
C语言大学实用教程课件 制作人苏小红
9
实验2: 选择结构编程练习 ——身高预测
每个做父母的都关心自己孩子成人后的身高,据有关 生理卫生知识与数理统计分析表明,影响小孩成人后 身高的因素有遗传、饮食习惯与坚持体育锻炼等。小 孩成人后身高与其父母身高和自身性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高 预测公式为:
问题5:要使上面程序的键盘输入无论用下面 哪种格式输入数据,程序在屏幕上的输出结果 都为’1’,’2’,34,则程序应修改程序中的哪条 语句?怎样修改?
– 第一种输入方式:1,2,34↙(以逗号作为分隔符) – 第二种输入方式:1 2 34↙(以空格作为分隔符) – 第三种输入方式:1 2 34↙(以Tab键作为分隔
13
main() {
int char
data1, data2; op;
/*定义两个操作符*/ /*定义运算符*/
例4.8
printf("Please enter the expression:"); scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/
– [提示:利用转义字符输出字符单引号字符。]
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
2020/4/18
C语言大学实用教程课件 制作人苏小红
7
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
语句 if (0 == data2)的必要性 – 1998年11月《科学美国人》杂志,描述了美国导弹巡
洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭
如果要求程序能进行浮点数的算术运算,语句 if (0 == data2)还能用于比较实型变量data2和 常数0的大小吗?
– if (fabs(data2) <= 1e-7) 如果要求输入的算术表达式中的操作数和运算符之 间可以加入任意多个空格符,那么程序如何修改?
4
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题2:与上面程序的键盘输入相同的情况下,要 使上面程序的输出语句在屏幕上显示1 2 34,则应 修改程序中的哪条语句?怎样修改?
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); }
符)
– 第四种输入方式:1↙
2↙
34↙(以回车符作为分隔符)
2020/4/18
C语言大学实用教程课件 制作人苏小红
8
实验1: 熟悉上机环境和顺序结构编程 练习——计算定期存款本利之和
设银行定期存款的年利率rate为2.25%,并已 知存款期为n年,存款本金为capital元,试编 程计算n年后的本利之和deposit。 要求定期存款的年利率rate、存款期n和存款 本金capital均由键盘输入。
– 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) – 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如 果有良好的卫生饮食习惯,那么可增加身高1.5%。
2020/4/18
Leabharlann Baidu
magic = rand() % 100 + 1; counter = 0; do{
printf("Please guess a magic number:"); scanf("%d", &guess); counter ++; if (guess > magic)
printf("Wrong! Too high!\n"); else if (guess < magic)
printf("%d/%d = %d\n", data1, data2, data1/data2);
break;
default:
printf("Unknown operator! \n");
2}020/4/18
C语言大学实用教程课件 制作人苏小红
14
}
实验2:选择结构编程练习 ——简单的计算器程序
C语言大学实用教程课件 制作人苏小红
18
#include <stdlib.h> #include <stdio.h> main() {
int magic; int guess; int counter; unsigned int seed;
printf("Please enter seed:"); scanf("%u", &seed); srand(seed);
算结束后,程序都给出提示:
Do you want to continue(Y/N or y/n)?
– 如果用户输入Y或y时,程序继续进行其它算术运算,否则
程序才退出运行状态。那么,程序如何修改?
2020/4/18
C语言大学实用教程课件 制作人苏小红
15
实验2:选择结构编程练习 ——简单的计算器程序
srand(time(NULL)); magic = rand() % 100 + 1;
2020/4/18
C语言大学实用教程课件 制作人苏小红
20
#include <stdlib.h> #include <stdio.h> #include <time.h> main() {
本实验程序是在例4.8基础上,增加如下要求: – (1)如果要求程序能进行浮点数的算术运算,程序应该
如何修改? 如何比较实型变量data2和常数0是否相等?
– (2)如果要求输入的算术表达式中的操作数和运算符之
间可以加入任意多空白符,那么程序如何修改?
– (3)(选作题)如果要求连续做多次算术运算,每次运
2020/4/18
C语言大学实用教程课件 制作人苏小红
12
例4.8:计算器程序
编程设计一个简单的计算器程序,要求根据用户 从键盘输入如下形式的表达式:
操作数1 运算符op 操作数2
然后,计算并输出表达式的值 指定的运算符为 加(+) 减(-) 乘(*) 除(/)
2020/4/18
C语言大学实用教程课件 制作人苏小红
17
猜数游戏用到的库函数
随机函数srand – 为函数rand()设置随机数种子来实现对函数rand所产
生的伪随机数的 “随机化”
通过键入随机数种子,产生[0,100]之间的随机数
scanf("%u", &seed); srand(seed); magic = rand() % 100 + 1;
2020/4/18
2020/4/18
C语言大学实用教程课件 制作人苏小红
5
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题3:要使上面程序的键盘输入数据格式为1,2,34 ,输出语句在屏幕上显示的结果也为1,2,34,则应 修改程序中的哪条语句?怎样修改?
#include <stdio.h> main() {
哈尔滨工业大学计算机科学与技术学院
苏小红 sxh@hit.edu.cn
主教材:
苏小红等,《 C语言大学实用教程》,电子工业出版 社,2004,8
苏小红等,《 C语言大学实用教程(第2版)》,电子 工业出版社,2007,2
实验教材:
苏小红等,《C语言大学实用教程习题与实验指导》, 电子工业出版社,2004,8
2020/4/18
C语言大学实用教程课件 制作人苏小红
11
实验2:选择结构编程练习 ——简单的计算器程序
要求用switch语句编程设计一个简单的计算器程序。 要求根据用户从键盘输入的表达式: 操作数1 运算符op 操作数2 计算表达式的值,指定的算术运算符为加(+)、减 (-)、乘(*)、除(/)。
程序1:编程先由计算机“想”一个1到100之间的 数请人猜,如果人猜对了,则计算机给出提示: “Right!”, 否则提示:“Wrong!”,并告诉人所 猜的数是大(Too high)还是小(Too low),然后结束 游戏。要求每次运行程序时机器所“想”的数不能 都是一样的。
2020/4/18
C语言大学实用教程课件 制作人苏小红
– scanf("%d%c%d", &data1, &op, &data2); – scanf("%d%1s%d", &data1, &op, &data2);
2020/4/18
C语言大学实用教程课件 制作人苏小红
16
实验3:循环结构编程练习 ——猜数游戏
在这个实验中,我们将尝试编写一个猜数游戏程序 ,这个程序看上去有些难度,但是如果你按下列要 求以循序渐进方式进行编程实现,你就会发现其实 这个程序是很容易实现的。先编写第一个程序,然 后试着在第一个程序的基础上编写第二个程序, ……。
switch (op)
{ case '+':
/*处理加法*/
printf("%d + %d = %d\n", data1, data2, data1 + data2);
break; case '-':
/*处理减法*/
printf("%d - %d = %d\n", data1, data2, data1 - data2);
char a,b; int c;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); }
2020/4/18
C语言大学实用教程课件 制作人苏小红
6
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题4:要使上面程序的键盘输入数据格式为1,2,34 ,而输出语句在屏幕上显示的结果为’1’,’2’,34, 则应修改程序中的哪条语句?怎样修改?
苏小红等,《C语言大学实用教程学习指导》,电子工 业出版社,2007,4
2020/4/18
C语言大学实用教程课件 制作人苏小红
2
实验内容
2020/4/18
C语言大学实用教程课件 制作人苏小红
3
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题1:要使下面程序的输出语句在屏幕上显示 1,2,34,则从键盘输入的数据格式应为以下备选答 案中的哪一个?
printf("Wrong! Too low!\n"); }while (guess != magic);
printf("Right!\n");
printf("counter = %d \n", counter);
} 2020/4/18
C语言大学实用教程课件 制作人苏小红
19
猜数游戏用到的库函数
使用计算机读取其时钟值并把该值自动设置为随机 数种子,产生[0,100]之间的随机数 函数time()返回以秒计算的当前时间值,该值被 转换为无符号整数并用作随机数发生器的种子
break; case '*':
/*处理乘法*/
printf("%d * %d = %d\n", data1, data2, data1 * data2);
break; case '/':
/*处理除法*/
if (0 == data2)
printf("Division by zero!\n");
else
C语言大学实用教程课件 制作人苏小红
10
实验2: 选择结构编程练习 ——身高预测
编程从键盘输入你的性别(用字符型变量sex存储, 输入字符F表示女性,输入字符M表示男性)、父母 身高(用实型变量存储,faHeight为其父身高, moHeight为其母身高)、是否喜爱体育锻炼(用字 符型变量sports存储,输入字符Y表示喜爱,输入字 符N表示不喜爱)、是否有良好的饮食习惯等条件( 用字符型变量diet存储,输入字符Y表示喜爱,输入 字符N表示不喜爱),利用给定公式和身高预测方法 对你的身高进行预测。
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
A) 1 2 34
B) 1, 2, 34
C2)020/4’/118’,’2’,34
CD语言) 大1学2实用34教程课件 制作人苏小红
int magic; int guess; int counter;
2020/4/18
C语言大学实用教程课件 制作人苏小红
9
实验2: 选择结构编程练习 ——身高预测
每个做父母的都关心自己孩子成人后的身高,据有关 生理卫生知识与数理统计分析表明,影响小孩成人后 身高的因素有遗传、饮食习惯与坚持体育锻炼等。小 孩成人后身高与其父母身高和自身性别密切相关。
设faHeight为其父身高,moHeight为其母身高,身高 预测公式为:
问题5:要使上面程序的键盘输入无论用下面 哪种格式输入数据,程序在屏幕上的输出结果 都为’1’,’2’,34,则程序应修改程序中的哪条 语句?怎样修改?
– 第一种输入方式:1,2,34↙(以逗号作为分隔符) – 第二种输入方式:1 2 34↙(以空格作为分隔符) – 第三种输入方式:1 2 34↙(以Tab键作为分隔
13
main() {
int char
data1, data2; op;
/*定义两个操作符*/ /*定义运算符*/
例4.8
printf("Please enter the expression:"); scanf("%d%c%d", &data1, &op, &data2); /*输入运算表达式*/
– [提示:利用转义字符输出字符单引号字符。]
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c);
printf("%c,%c,%d\n",a,b,c);
}
2020/4/18
C语言大学实用教程课件 制作人苏小红
7
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
语句 if (0 == data2)的必要性 – 1998年11月《科学美国人》杂志,描述了美国导弹巡
洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭
如果要求程序能进行浮点数的算术运算,语句 if (0 == data2)还能用于比较实型变量data2和 常数0的大小吗?
– if (fabs(data2) <= 1e-7) 如果要求输入的算术表达式中的操作数和运算符之 间可以加入任意多个空格符,那么程序如何修改?
4
实验1: 熟悉上机环境和顺序结构编程 练习——键盘输入与屏幕输出练习
问题2:与上面程序的键盘输入相同的情况下,要 使上面程序的输出语句在屏幕上显示1 2 34,则应 修改程序中的哪条语句?怎样修改?
#include <stdio.h> main() {
char a,b; int c;
scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); }
符)
– 第四种输入方式:1↙
2↙
34↙(以回车符作为分隔符)
2020/4/18
C语言大学实用教程课件 制作人苏小红
8
实验1: 熟悉上机环境和顺序结构编程 练习——计算定期存款本利之和
设银行定期存款的年利率rate为2.25%,并已 知存款期为n年,存款本金为capital元,试编 程计算n年后的本利之和deposit。 要求定期存款的年利率rate、存款期n和存款 本金capital均由键盘输入。
– 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) – 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如 果有良好的卫生饮食习惯,那么可增加身高1.5%。
2020/4/18
Leabharlann Baidu
magic = rand() % 100 + 1; counter = 0; do{
printf("Please guess a magic number:"); scanf("%d", &guess); counter ++; if (guess > magic)
printf("Wrong! Too high!\n"); else if (guess < magic)
printf("%d/%d = %d\n", data1, data2, data1/data2);
break;
default:
printf("Unknown operator! \n");
2}020/4/18
C语言大学实用教程课件 制作人苏小红
14
}
实验2:选择结构编程练习 ——简单的计算器程序
C语言大学实用教程课件 制作人苏小红
18
#include <stdlib.h> #include <stdio.h> main() {
int magic; int guess; int counter; unsigned int seed;
printf("Please enter seed:"); scanf("%u", &seed); srand(seed);
算结束后,程序都给出提示:
Do you want to continue(Y/N or y/n)?
– 如果用户输入Y或y时,程序继续进行其它算术运算,否则
程序才退出运行状态。那么,程序如何修改?
2020/4/18
C语言大学实用教程课件 制作人苏小红
15
实验2:选择结构编程练习 ——简单的计算器程序