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