c语言四则运算实验报告
深 圳 大 学 实 验 报 告课程名称: C 语言实验 实验名称: 100 以内的四则运算游戏 学 院: 信息工程学院 指导教师: 张金凤 报告人: 王文杰 组号: 17 学号 2013130073 实验地点 教学楼 D506 实验时间: 2014 年 4 月 16 日 提交时间: 2014.5.9 得分 教师签名 批改日期课程编号 1300050027 一、实验目的一、 学习和掌握 C 语言函数的定义与调用; 二、 进一步掌握随机数、选择结构、循环控制、交互式输入输出等程序设计方法; 三、 进一步掌握 C 语言中的数组定义和引用方法; 四、 学习和掌握根据流程图进行模块化程序设计的思想。二、实验要求产生 1 到 4 之间的随机数,决定 4 则运算的符号,再产生两个 0 到 99 的随机数进行运算,并记录下做的题数以及正确的数目,当做题者输入 n 或 N 时退出程序并显示出完成题数及正确率。三、实验程序详细流程图:五、对流程图的简要说明:#include #include #include“time.h“#include void max_min(int a,int b);randN1N2(int rN1, int rN2 );randOper4( );randLmt100( );addLmt100(int num1, int num2);subLmt100(int num1, int num2);mulLmt100(int num1, int num2);divLmt100(int num1, int num2);/* 主函数的功能如下:在主函数中调用上面定义的五个函数,在屏幕上随机循环出一道 100 以内的四则运算题。其中,定义一个整型数组 proNum[4] 和整型数组 ansNum[4],这两个数组中分别存储在上述游戏循环过程中加、减、乘、除四种类型的题出现的次数,以及这四种类型的题被答对的次数。在用户不想继续游戏退出时,在屏幕上显示本次游戏中的加、减、乘、除四种类型题出现的数量,以及每一种题被答对的次数。*/int main(int argc, char *argv[]){srand( (unsigned)time( NULL ) );int proNum[4]={0},ansNum[4]={0}, oper,num1,num2;char ch;printf(“四则运算游戏,请输入正确答案:\n\n“);for(;;){oper = randOper4();switch(oper){case 1:proNum[0]++;if(addLmt100(num1,num2)==1)ansNum[0]++;break;case 2:proNum[1]++;if(subLmt100(num1,num2)==1)ansNum[1]++;break;case 3:proNum[2]++;if(mulLmt100(num1,num2)==1)ansNum[2]++;break;case 4:proNum[3]++;if(divLmt100(num1,num2)==1)ansNum[3]++;break;}f(stdin);printf(“\n按回车继续游戏,按 N结束游戏\n\n“);ch = getch();if(ch== n ||ch== N )break;}printf(“\n你一共玩了%d 次加法,其中正确答对%d 次\n\n“,proNum[0],ansNum[0]); printf(“\n你一共玩了%d 次减法,其中正确答对%d 次\n\n“,proNum[1],ansNum[1]); printf(“\n你一共玩了%d 次乘法,其中正确答对%d 次\n\n“,proNum[2],ansNum[2]); printf(“\n你一共玩了%d 次除法,其中正确答对%d 次\n\n“,proNum[3],ansNum[3]); system(“PAUSE“);return 0;}void max_min(int a,int b){int c;if(ab)c=a,b=a,b=c;}/*定义一个函数 randN1N2(int rN1, int rN2 )。该函数有两个整型的输入参数 rN1 和 rN2,其中,rN1 = rN2。该函数的功能是生成 rN1 到 rN2 之间均匀分布的随机整数,该函数的返回值类型是整型。每调用一次该函数,函数返回一个 rN1 至 rN2 之间的随机整数*/int randN1N2(int rN1, int rN2 ){return rand()%(rN2-rN1+1)+rN1;}/*该函数没有输入参数,函数的返回类型是整型。该函数内部调用上述 randN1N2( ) 函数。每调用一次函数 randOper4( ),返回一个 1 至 4 之间的随机整数*/randOper4( ){return randN1N2(1,4);}/*该函数没有输入参数,函数的返回类型是整型。该函数内部调用上述 randN1N2( ) 函数。每调用一次函数 randLmt100( ),返回一个 0-99 之间的随机整数。*/randLmt100( ){return randN1N2(0,99); }/*该函数有两个整型的输入参数 num1 和 num2;函数返回值类型为整型。该函数的功能是:在屏幕上列出一个算式 num1 + num2 =,然后接受一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值 0。*/addLmt100(int num1, int num2){int a,b;num1=randLmt100();num2=randLmt100();printf(“%d + %d = “,num1,num2);a=num1+num2;scanf(“%d“,if(b==a){printf(“\n恭喜你,答对了!\n“);return 1;}else{printf(“\n回答错误,加油!\n“);return 0;} } /*该函数有两个整型输入参数 num1 和 num2;函数返回值类型为整型。该函数的功能是:在屏幕上列出一个算式 numM1 - numM2 =,其中:numM1 是 num1 和 num2 中较大的一个数,numM2 是 num1 和 num2 中较小的一个数;然后接受一个键盘输入的计算答案 answer。若结果正确,则屏幕输出一句赞扬的语句,然后返回函数值 1;若结果错误,则屏幕输出一句鼓励的语句,并输出正确答案,然后返回函数值 0。*/subLmt100(int num1, int num2){int a,b;num1=randLmt100();num2=randLmt100();max_min(num1,num2);printf(“%d - %d = “,num