C语言-实验五

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验报告课程名称程序设计基础(C语言)实验项目实验五函数的简单应用学院系别班级/学号学生姓名实验日期成绩指导教师一、实验目的1.掌握函数的定义、函数的说明和调用。2.掌握函数的参数及其传递方式,函数值的正确返回。二、实验内容题目1:编写一个自动出题程序,该程序可以给出任意两个数的+、-、×、/运算式子,当用户输入运算结果时,程序可以判断正误。当用户做完十道题目之后,程序给出最终的统计结果。提示:1.系统函数srand,是随机数发生器的初始化函数,这个函数在头文件stdlib.h中。原型:voidsrand(unsignedseed)2.系统函数rand,产生随机数的函数,原型:intrand(void)3.系统函数time,可以获取系统时间,这个函数在time.h中。大家可以试用下面的程序体会随机数的生成。#includestdio.h#includestdlib.h#includetime.hvoidmain(){inti,j;srand((unsigned)time(NULL));for(i=0;i10;i++){j=(int)(10*rand()/(RAND_MAX+1.0));printf(%5d,j);}getchar();}说明:[1]srand和rand配合使用产生伪随机数序列。[2]rand函数在产生随机数前,需要系统提供生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。[3]srand(unsignedseed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。[4]通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列[5]“j=(int)(10*rand()/(RAND_MAX+1.0));”rand()函数前的10控制了j的范围,使其只能是0到10之间的数;如果将其改成100,则j即是0到100之间的随机数。我们可以利用上面的方法产生运算式中的两个操作数。4.如何产生操作符?我们将随机产生四个操作符:+、-、×、/。可以定义一个变量:intop;并利用上述生成随机数的方法,用程序控制op的值为1到4的随机数。然后:switch(op){case1:/*做加法*/printf(\nNO%d:%d+%d=,i,a,b);scanf(%d,&ans);if(ans==add(a,b))printf(Right!\n);elseprintf(Error!\n);break;case2:/*做减法*/break;case3:/*做乘法*/break;case4:/*做除法*/break;}==================================================上面的程序片段中add为用户自定义函数,实现两个数的加法计算,并返回结果。类似的还需要编写减法、乘法、除法三个自定义函数。不过这几个自定义函数的内部实现都特别简单。大家请将注意力放在高层的函数定义、声明、调用三个环节上。流程图:代码:#includestdio.h#includestdlib.h#includetime.hintadd(intx,inty){intz;z=x+y;return(z);}intjian(intx,inty){intz;z=x-y;return(z);}intcheng(intx,inty){intz;z=x*y;return(z);}intchu(intx,inty){intz;z=x/y;return(z);}intmain(){inti,j,x;intop;intres;intz=0;srand((unsigned)(time(NULL)));for(x=0;x10;x++){j=rand()%101;i=rand()%101;op=rand()%5;switch(op){case1:printf(\nNO%d:%d+%d=,x,i,j);scanf(%d,&res);if(res==add(i,j)){printf(RIGHT!\n);z+=1;}elseprintf(ERROR!\n);break;case2:printf(\nNO%d:%d-%d=,x,i,j);scanf(%d,&res);if(res==jian(i,j)){printf(RIGHT!\n);z+=1;}elseprintf(ERROR!\n);break;case3:printf(\nNO%d:%d*%d=,x,i,j);scanf(%d,&res);if(res==cheng(i,j)){printf(RIGHT!\n);z+=1;}elseprintf(ERROR!\n);break;case4:printf(\nNO%d:%d/%d=,x,i,j);scanf(%d,&res);if(res==chu(i,j)){printf(RIGHT!\n);z+=1;}elseprintf(ERROR!\n);break;}}printf(你答对了%d道题\n,z);return0;}运行结果:题目2:自定义一个求n的阶乘的函数。在主函数中调用该函数,当用户输入非负数的时候,程序输出该数的阶乘;当用户输入负数的时候,程序退出。流程图:代码:#includestdio.hintmain(){inta,s;intjiecheng(intb);printf(pleaseinputanumber:);scanf(%d,&a);if(a=0){s=jiecheng(a);printf(%d!=%ld\n,a,s);}elseprintf(Inputerror!\n);}intjiecheng(intb){inti,s=1;if(b==0)s=0;else{for(i=1;i=b;i++)s*=i;}returns;}实验结果:题目3:自定义一个函数,判断字符是数字、小写字母、大写字母还是其他,返回值为0时,表示数字;为1时,表示小写字母;为2时,表示大写字母;为3时表示其他。在主函数中调用该函数,判断用户输入的字符是哪一种,并输入“是数字”、“是小写字母”、“是大写字母”、“其他”;当用户输入“#”的时候,程序退出流程图:代码:#includestdio.hintmain(){intfun(chara);chara;do{printf(pleaseinputachar:);scanf(%c,&a);getchar();if(fun(a)==0)printf(是数字\n);elseif(fun(a)==1)printf(是小写字母\n);elseif(fun(a)==2)printf(是大写字母\n);elseif(fun(a)==3)printf(其他\n);}while(a!='#');}intfun(chara){if(a='0'&&a='9'){return0;}elseif(a='a'&&a='z'){return1;}elseif(a='A'&&a='Z'){return2;}elseif(a!='#'){return3;}}运行结果:

1 / 15
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功