深圳大学C程序设计Lab Assignment3实验报告四则运算.docx
- 文档编号:8225205
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:14
- 大小:108.31KB
深圳大学C程序设计Lab Assignment3实验报告四则运算.docx
《深圳大学C程序设计Lab Assignment3实验报告四则运算.docx》由会员分享,可在线阅读,更多相关《深圳大学C程序设计Lab Assignment3实验报告四则运算.docx(14页珍藏版)》请在冰豆网上搜索。
深圳大学C程序设计LabAssignment3实验报告四则运算
附件(四)
本文档仅限于学习交流,禁止抄袭。
程序结果截图非本人信息,请自行修改。
深圳大学实验报告
课程名称:
C程序设计
实验名称:
LabAssignment3
学院:
信息工程学院
专业:
指导教师:
报告人:
报告人学号:
班级:
实验时间:
报告提交时间:
教务处制
一、实验目的与要求
实验目的:
(1)学习和掌握C语言函数的定义与调用;
(2)进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法;
(3)进一步掌握C语言中的数组定义和引用方法;
(4)学习和掌握根据流程图进行模块化程序设计的思想。
实验要求:
1)在VC++中建立一个工程;
2)在程序开始的注释行中写上你自己的信息;
3)定义一个函数randN1N2(intrN1,intrN2)。
该函数有两个整型的输入参数rN1和rN2,其中,rN1<=rN2。
该函数的功能是生成rN1到rN2之间均匀分布的随机整数,该函数的返回值类型是整型。
每调用一次该函数,函数返回一个rN1至rN2之间的随机整数(随机数的生成方法可参考LabAssessment3)。
4)定义一个函数randOper4()。
该函数没有输入参数,函数的返回类型是整型。
该函数内部调用上述randN1N2()函数。
每调用一次函数randOper4(),返回一个1至4之间的随机整数。
5)定义一个函数randLmt100()。
该函数没有输入参数,函数的返回类型是整型。
该函数内部调用上述randN1N2()函数。
每调用一次函数randLmt100(),返回一个0-99之间的随机整数。
6)定义一个函数addLmt100(intnum1,intnum2)。
该函数有两个整型的输入参数num1和num2;函数返回值类型为整型。
该函数的功能是:
在屏幕上列出一个算式num1+num2=,然后接受一个键盘输入的计算答案answer。
若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值0。
7)定义一个函数subLmt100(intnum1,intnum2)。
该函数有两个整型输入参数num1和num2;函数返回值类型为整型。
该函数的功能是:
在屏幕上列出一个算式numM1-numM2=,其中:
numM1是num1和num2中较大的一个数,numM2是num1和num2中较小的一个数;然后接受一个键盘输入的计算答案answer。
若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值0。
8)定义一个函数mulLmt100(intnum1,intnum2)。
该函数有两个整型输入参数num1和num2;函数返回值类型为整型。
该函数的功能是:
在屏幕上列出一个算式num1×num2=,然后接受一个键盘输入的计算答案answer。
若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值0。
9)定义一个函数divLmt100()。
该函数没有输入参数;函数返回值类型为整型。
该函数的功能是:
首先调用randLmt100()函数生成两个随机整数num1和num2,并判断num1是否可以被num2整除,若不能整除,则调用randLmt100()函数重新生成两个新的num1和num2,然后再进行整除性判断,直到生成的num1可以被num2整除;在num1可以被num2整除的情况下,在屏幕上列出一个算式num1÷num2=,然后接受一个键盘输入的计算答案answer。
若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值0。
10)主函数的功能如下:
在主函数中调用上面定义的五个函数,在屏幕上随机循环出一道100以内的四则运算题。
其中,定义一个整型数组proNum[4]和整型数组ansNum[4],这两个数组中分别存储在上述游戏循环过程中加、减、乘、除四种类型的题出现的次数,以及这四种类型的题被答对的次数。
在用户不想继续游戏退出时,在屏幕上显示本次游戏中的加、减、乘、除四种类型题出现的数量,以及每一种题被答对的次数。
11)在实验报告中要求说明:
程序中那些地方使用了选择结构,那些地方使用了循环结构,那些地方使用了函数的嵌套调用。
12)在实验报告中,画出实现函数subLmt100(intnum1,intnum2)和divLmt100()功能的流程图。
二、实验步骤与过程:
1.试验流程图设计:
函数subLmt100(intnum1,intnum2)的流程图函数divLmt100()的流程图
流程图说明:
(1)左边是减法子函数的流程图,先生成两个随机数,并比较大小,让较大值减去较小值,得出正确答记为num;
(2)用户输入自己的正确答案answer,系统通过对num和answer的对比做出不同的回应;
(3)右边是除法子函数的流程图,先生成两个随机数,并判断除数是否为0,若为0则重新生成随机数;
(4)判断两个数是否能够整除,若不能整除,直接结束,若可以整除,计算正确答案记为num;
(5)用户输入自己的正确答案answer,系统通过对num和answer的对比做出不同的回应。
2.本实验的代码:
#include
#include
#include
#include
intflag;
intrandN1N2(intrN1,intrN2)
{
intnum;
num=rand()%(rN2-rN1+1)+rN1;
returnnum;
}
intrandOper4()
{
intrandN1N2(intrN1,intrN2);
intoper;
oper=randN1N2(1,4);
returnoper;
}
intrandLmt100()
{
intrandN1N2(intrN1,intrN2);
intlmt;
lmt=randN1N2(0,99);
returnlmt;
}
intaddLmt100(intnum1,intnum2)
{
intrandLmt100();
intnum,answer;
num1=randLmt100();//函数的嵌套调用
num2=randLmt100();//函数的嵌套调用
num=num1+num2;
printf("%d+%d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了,真棒!
!
!
\n");
flag=1;
}
else
{
printf("对不起,你打错了,别灰心!
!
!
正确答案是:
\n\n%d+%d=%d\n\n",num1,num2,num);
flag=0;
}
returnflag;
}
intsubLmt100(intnum1,intnum2)
{
intrandLmt100();
intnum,answer;
num1=randLmt100();//函数的嵌套调用
num2=randLmt100();//函数的嵌套调用
if(num1>num2)
{
num=num1-num2;
printf("%d-%d=",num1,num2);
scanf("%d",&answer);
}
elseif(num1<=num2)
{
num=num2-num1;
printf("%d-%d=",num2,num1);
scanf("%d",&answer);
}
if(answer==num)
{
printf("你答对了,真棒!
!
!
\n");
flag=1;
}
else
{
printf("对不起,你打错了,别灰心!
!
!
正确答案是:
\n");
printf("\n%d-%d=%d\n\n",num1,num2,num);
flag=0;
}
returnflag;
}
intmulLmt100(intnum1,intnum2)
{
intrandLmt100();
intnum,answer;
num1=randLmt100();//函数的嵌套调用
num2=randLmt100();//函数的嵌套调用
num=num1*num2;
printf("%d*%d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了,真棒!
!
!
\n");
flag=1;
}
else
{
printf("对不起,你打错了,别灰心!
!
!
正确答案是:
\n\n%d*%d=%d\n\n",num1,num2,num);
flag=0;
}
returnflag;
}
intdivLmt100()
{
intnum1,num2,num,answer,m=1;
while(m)//循环结构
{
num1=randLmt100();//函数的嵌套调用
num2=randLmt100();//函数的嵌套调用
if(num2==0)
num2=randLmt100();
num=num1/num2;
m=num1%num2;
if(m!
=0)
{
printf("这是一道除法题,由于结果不是整数,所以跳过!
\n\n");
return0;
break;
}
printf("%d/%d=",num1,num2);
scanf("%d",&answer);
if(answer==num)
{
printf("你答对了,真棒!
!
!
\n");
flag=1;
}
else
{
printf("对不起,你打错了,别灰心!
!
!
正确答案是:
\n\n%d/%d=%d\n\n",num1,num2,num);
flag=0;
}
returnflag;
}
if(m==0)
m=0;
else
m=1;
}
voidmain()
{
srand((unsigned)time(NULL));
intproNum[4]={0};
intansNum[4]={0};
charc='y';
{
while(c=='y')
{
intrandLmt100();
intaddLmt100(intnum1,intnum2);
intp,flag;
p=randOper4();
intnum1=randLmt100();
intnum2=randLmt100();
switch(p)
{
case1:
{
flag=addLmt100(num1,num2);
proNum[0]++;
if(flag==1)
ansNum[0]++;
break;
}
case2:
{
flag=subLmt100(num1,num2);
proNum[1]++;
if(flag==1)
ansNum[1]++;
break;
}
case3:
{
flag=mulLmt100(num1,num2);
proNum[2]++;
if(flag==1)
ansNum[2]++;
break;
}
case4:
{
flag=divLmt100();
proNum[3]+=flag;
if(flag==1)
ansNum[3]++;
break;
}
}
c=getchar();
printf("\n\n你还想继续做吗?
\n\n如果想继续,请按Y;若不想做了,请打任意键O(∩_∩)O~\n\n");
c=getchar();
}
}
printf("你计算的加法次数是%d,其中算对的次数是%d\n\n",proNum[0],ansNum[0]);
printf("你计算的减法次数是%d,其中算对的次数是%d\n\n",proNum[1],ansNum[1]);
printf("你计算的乘法次数是%d,其中算对的次数是%d\n\n",proNum[2],ansNum[2]);
printf("你计算的除法次数是%d,其中算对的次数是%d\n\n",proNum[3],ansNum[3]);
getchar();
}
三、实验结果(只列举了其中的一个例子):
四、实验结果与数据分析:
1.首先,这次实验把我最近学的知识穿插了起来,让我进一步掌握了随机数、选择结构、循环控制、交互式输入输出等程序设计方法。
2.我认识到了写代码的重要性,例如空格,空行,缩进等细节。
因为做到了这些细节,程序一旦发生了错误,修改的时候很容易下手,一目了然,别人看着也舒服。
3.我学会了用visio软件画流程图,这个软件简单快捷易操作。
(注:
“指导教师批阅意见”栏请单独放置一页)
指导教师批阅意见:
实验报告内容完整性
(20分)
实验数据准确性(程序与程序运行结果)(30分)
实验结果与数据分析
(20分)
实验报告(格式规范、按时完成)
(20分)
实验态度(实验课考勤、实验表现)(10分)
完整
20
较完整
15
不完整
10
准确
30
较准确
20
不够准确
10
正确
20
较正确
10
不正确
0
规
范
20
较规范
15
不够规范
10
好
10
较好
5
一
般
2
说明:
说明:
说明:
说明:
说明:
成绩评定:
指导教师签字:
年月日
备注:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深圳大学C程序设计Lab Assignment3实验报告四则运算 深圳大学 程序设计 Lab Assignment3 实验 报告 四则运算