上机实验

更新时间:2024-06-15 23:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

上机实验题目、内容和要求

序号 实验目的和要求 熟悉 C 语言编程环1 境,利用输入输出函数计算定期存款本利之和 进行简单程序设计 熟悉分支结构程序设2 计方法,同时熟悉机考身高预测,简单的计算器 系统的使用方法 熟悉循环结构程序设3 计方法,同时熟悉机考猜数游戏 系统的使用方法 熟悉函数编程方法 ,4 同时熟悉机考系统的使用方法 5 熟悉数组编程方法 熟悉一维数组和函数6 综合编程方法,同时熟悉机考系统的使用方法 熟悉二维数组和函数7 综合编程方法,同时熟悉机考系统的使用方法 熟悉数组、指针和函数8 综合编程方法,同时熟悉机考系统的使用方法 熟悉结构体编程方法,9 同时熟悉机考系统的使用方法 熟悉文件编程方法,利10 用机考自动评分系统进行模拟考试 文件的复制与追加 3 设计 在屏幕上模拟显示一个数字式时钟 3 综合设计 查找并打印学生成绩最高分及其学号 3 综合设计 学生成绩排名与查询 3 综合设计 学生成绩统计 3 综合设计 文曲星猜数游戏 3 设计 给小学生出加法考试题 3 设计 3 设计 3 设计 3 实验题目 学时数 类别 基础验证 实验1:熟悉上机环境和顺序结构编程练习

1. 键盘输入与屏幕输出练习

问题1 要使下面程序的输出语句在屏幕上显示1, 2, 34,则从键盘输入的数据格式应为以下备选答案中的 。

#include main() {

char a,b; int c; }

scanf(\printf(\

A)1 2 34

C)’1’,’2’,34 B)1, 2, 34 D)12 34

问题2 在与上面程序的键盘输入相同的情况下,要使上面程序的输出语句在屏幕上显示1 2 34,则应修改程序中的哪条语句?怎样修改?

问题3 要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应修改程序中的哪条语句?怎样修改?

问题4 要使上面程序的键盘输入数据格式为1,2,34,而输出语句在屏幕上显示的结果为'1', '2',34,则应修改程序中的哪条语句?怎样修改?

[提示:利用转义字符输出字符单引号字符。]

问题5 要使上面程序的键盘输入无论用下面哪种格式输入数据,程序在屏幕上的输出结果都为'1', '2',34,则程序应修改程序中的哪条语句?怎样修改?

第1种输入方式:1,2,34↙(以逗号作为分隔符)

第2种输入方式:1 2 34↙(以空格作为分隔符)

第3种输入方式:1 2 34↙(以Tab键作为分隔符) 第4种输入方式:1↙

2↙

34↙(以回车符作为分隔符)

[提示:利用忽略输入修饰符。]

2. 计算定期存款本利之和

设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital均由键盘输入。

实验2:选择结构编程练习

1. 身高预测

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。

设faHeight为其父身高,moHeight为其母身高,身高预测公式为

男性成人时身高=(faHeight + moHeight)×0.54cm 女性成人时身高=(faHeight×0.923 + moHeight)/2cm

此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%。

编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。

2. 简单的计算器

用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:

操作数1 运算符op 操作数2

计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 本实验程序是在例4.8的基础上,增加如下要求:

(1)如果要求程序能进行浮点数的算术运算,程序应该如何修改?如何比较实型变量data2和常数0是否相等?

(2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空白符,那么程序如何修改?

(3)(选作题)如果要求连续做多次算术运算,每次运算结束后,程序都给出提示:

Do you want to continue(Y/N or y/n)?

用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。那么,程序如何修改?

[提示:利用空格加%c(或者%1s)格式符输入用户回答,利用do-while语句实现反复运算直到用户输入N或n。]

【思考题】比较实型变量data2和常数0是否相等,能用if (data2 == 0)吗?为什么?

实验3:循环结构编程练习

猜数游戏

在这个实验中,我们将尝试编写一个猜数游戏程序,这个程序看上去有些难度,但是如果按下列要求循序渐进地编程实现,会发现其实这个程序是很容易实现的。那么,现在就开始吧,先编写第1个程序,然后试着在第1个程序的基础上编写第2个程序,??

程序1 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则计算机给出提示“Right!”,否则提示“Wrong!”,并告诉人所猜的数是大(Too high)还是小(Too low),然后结束游戏。要求每次运行程序时机器所“想”的数不能都一样。

程序2 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。

程序3 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,则结束游戏,并在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,结束游戏。

程序4 编程先由计算机“想”一个1~100之间的数请人猜,如果人猜对了,在屏幕上输出人猜了多少次才猜对此数,以此来反映猜数者“猜”的水平,则结束游戏;否则计算机给出提示,告诉人所猜的数是太大还是太小,最多可以猜10次,如果猜了10次仍未猜中的话,则停止本次猜数,然后继续猜下一个数。每次运行程序可以反复猜多个数,直到操作者想停止时才结束。

【思考题】 如果用scanf输入用户猜测的数据时,如果用户不小心输入了非法字符,如字符a,那么程序运行就会出错,用什么方法可以避免这样的错误发生呢?请读者编写程序验证方法的有效性。

实验4:函数编程练习

1. 给小学生出加法考试题

编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列要求以循序渐进的方式编程。

程序1 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,程序结束。 程序2 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct! Try again!”,直到做对为止。

程序3 通过输入两个加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则提示重做,显示“Not correct! Try again!”,最多给三次机会,如果三次仍未做对,则显示“Not correct! You have tried three times! Test over!”,程序结束。

程序4 连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运

算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。

程序5 通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错题数。

【思考题】 如果要求将整数之间的四则运算题改为实数之间的四则运算题,那么程序该如何修改呢?请读者修改程序,并上机测试程序运行结果。

2.掷骰子游戏

编写程序模拟掷骰子游戏。已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。如果投掷7次仍未赚到该点数,则游戏者输。

[提示:由于这个游戏的游戏规则相对较为复杂,游戏者第一次投骰子时可能输,也可能赢,还可能再投很多次才能确定胜负。因此,设置一个枚举型变量gameStatus来跟踪这个状态,游戏者获胜时,将gameStatus置为WON,游戏者失败时,将gameStatus置为LOST,否则游戏不能结束,需通过再次投掷确定胜负,先将gameStatus置为CONTINUE,同时,将sum保存在myPoint中,在后续的while循环中,再次调用rollDice产生新的sum,当sum等于myPoint时,将gameStatus置为WON,如果又投掷了7次,sum仍未等于myPoint,则将gameStatus置为LOST。在程序的最后,根据gameStatus的值,打印胜负结果。]

【思考题】 将游戏规则改为:计算机想一个数作为一个骰子掷出的点数(在用户输入数据之前不显示该点数),用户从键盘输入一个数作为另一个骰子掷出的点数,再计算两点数之和。其余规则相同,然后请读者重新编写该程序。

实验5:数组编程练习

1. 检验并打印魔方矩阵

在下面的5×5阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

#include

#include

main() { int magic; /*计算机\想\的数*/ int guess; /*人猜的数*/ int counter; /*记录人猜的次数*/ srand(time(NULL)); magic = rand() % 100 + 1; counter = 0; do { printf(\ scanf(\ counter ++; if (guess > magic) { printf(\ } else if (guess < magic) { printf(\ } }while (guess != magic); /*直到人猜对为止*/ printf(\ printf(\}

程序运行结果如下:

Please guess a magic number:50↙ Wrong!Too low!

Please guess a magic number:90↙ Wrong!Too high!

Please guess a magic number:70↙ Wrong!Too high!

Please guess a magic number:60↙ Wrong!Too high!

Please guess a magic number:55↙ Wrong!Too high!

Please guess a magic number:52↙ Right! counter = 6

程序3参考答案:

#include #include #include main() { int magic; /*计算机\想\的数*/ int guess; /*人猜的数*/ int counter; /*记录人猜的次数*/ srand(time(NULL)); magic = rand() % 100 + 1; counter = 0;

do { printf(\ scanf(\ counter ++; if (guess > magic) { printf(\ } else if (guess < magic) { printf(\ } else { printf(\ } }while ((guess!=magic) && (counter<10));/*猜不对且未超过10次时继续猜*/ printf(\}

程序两次测试的运行结果分别如下:

①Please guess a magic number:50↙ Wrong!Too low!

Please guess a magic number:80↙ Wrong!Too high!

Please guess a magic number:60↙ Wrong!Too high!

Please guess a magic number:55↙ Right! counter = 4

②Please guess a magic number:40↙ Wrong!Too low!

Please guess a magic number:90↙ Wrong!Too high!

Please guess a magic number:80↙ Wrong!Too high!

Please guess a magic number:70↙ Wrong!Too high!

Please guess a magic number:60↙ Wrong!Too high!

Please guess a magic number:55↙ Wrong!Too high!

Please guess a magic number:50↙ Wrong!Too high!

Please guess a magic number:45↙ Wrong!Too high!

Please guess a magic number:44↙ Wrong!Too high!

Please guess a magic number:43↙ Wrong!Too high!

counter = 10

程序4参考答案:

#include #include #include main() { int magic; /*计算机\想\的数*/ int guess; /*人猜的数*/ int counter; /*记录人猜的次数*/ char reply; /*用户键入的回答*/ srand(time(NULL)); do { magic = rand() % 100 + 1; counter = 0; do { printf(\ scanf(\ counter ++; if (guess > magic) { printf(\ } else if (guess < magic) { printf(\ } else { printf(\ } }while ((guess!=magic) && (counter<10));/*猜不对且未超过10次时继续猜*/ printf(\ printf(\ scanf(\ }while ((reply == 'Y') || (reply == 'y')); printf(\ }

程序运行结果如下:

Please guess a magic number:50↙ Wrong!Too low!

Please guess a magic number:80↙ Wrong!Too low!

Please guess a magic number:90↙ Wrong!Too high!

Please guess a magic number:85↙ Wrong!Too high!

Please guess a magic number:83↙ Right! counter = 5

Do you want to continue(Y/N or y/n)?y↙ Please guess a magic number:50↙ Wrong!Too low!

Please guess a magic number:80↙ Wrong!Too low!

Please guess a magic number:90↙ Wrong!Too low!

Please guess a magic number:95↙ Wrong!Too low!

Please guess a magic number:99↙ Right! counter = 5

Do you want to continue(Y/N or y/n)?n↙ The game is over!

实验四 函数编程练习

程序1参考答案:

#include

/* 函数功能: 计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0 函数参数: 整型变量a和b,分别代表被加数和加数

函数返回值:当a加b的结果与用户输入的答案相同时,返回1,否则返回0 */

int Add(int a, int b) { int answer; printf(\ scanf(\ if (a+b == answer) return 1; else return 0; }

/* 函数功能: 打印结果正确与否的信息。

函数参数: 整型变量flag,标志结果正确与否 函数返回值:无 */

void Print(int flag) { if (flag) printf(\ else printf(\}

main() /*主函数*/ { int a, b, answer; printf(\ scanf(\ answer = Add(a, b); Print(answer); }

程序两次测试的运行结果分别如下:

①Input a,b:1,2↙

1+2=3↙

Right!

②Input a,b:1,2↙

1+2=4↙

Not correct!

程序2参考答案:

#include

/* 函数功能: 计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0 函数参数: 整型变量a和b,分别代表被加数和加数

函数返回值:当a加b的结果与用户输入的答案相同时,返回1,否则返回0 */

int Add(int a, int b) { int answer; printf(\ scanf(\ if (a+b == answer) return 1; else return 0; }

/* 函数功能: 打印结果正确与否的信息。

函数参数: 整型变量flag,标志结果正确与否 函数返回值:无 */

void Print(int flag) { if (flag) printf(\ else printf(\}

main() /*主函数*/ { int a, b, answer; printf(\ scanf(\ do { answer = Add(a, b); Print(answer); }while (answer == 0); }

程序运行结果如下:

Input a,b:1,2↙ 1+2=4↙

Not correct. Try again! 1+2=5↙

Not correct. Try again! 1+2=3↙ Rright!

程序3参考答案:

#include

/* 函数功能: 计算两整型数之和,如果与用户输入的答案相同,则返回1,否则返回0 函数参数: 整型变量a和b,分别代表被加数和加数

本文来源:https://www.bwwdw.com/article/lyz3.html

Top