《C语言-实验五》由会员分享,可在线阅读,更多相关《C语言-实验五(16页珍藏版)》请在金锄头文库上搜索。
1、实验报告课程名称程序设计基础(C语言)实验项目实验五函数的简单应用学院系别班级/学号学生姓名实验日期成绩指导教师、实验目的1掌握函数的定义、函数的说明和调用。2掌握函数的参数及其传递方式,函数值的正确返回。二、实验内容题目1:编写一个自动出题程序,该程序可以给出任意两个数的、X、/运算式子,当用户输入运算结果时,程序可以判断正误。当用户做完十道题目之后,程序给出最终的统计结果。提示:1 系统函数srand,是随机数发生器的初始化函数,这个函数在头文件stdlib.h中。原型:voidsrand(unsignedseed)2 系统函数rand,产生随机数的函数,原型:intrand(void)3
2、 系统函数time,可以获取系统时间,这个函数在time.h中。大家可以试用下面的程序体会随机数的生成。#include#include#includevoidmain()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、的伪随机数序列都是一样的。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 如何产生操作符?我们将
4、随机产生四个操作符:+、一、X、/。可以定义一个变量: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为用户自定义函数,实现两个数的加法计算,并返回结果。类似的还需要编写减法、乘法、除法
5、三个自定义函数。不过这几个自定义函数的内部实现都特别简单。大家请将注意力放在高层的函数定义、声明、调用三个环节上。流程图:Main代码:#include#include#includeintadd(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)
6、(time(NULL);for(x=0;x10;x+)j=rand()%101;i=rand()%101;op=rand()%5;switch(op)case 1: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;case 2: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;ca
7、se 3: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;case 4: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;运行结果:口D;ki吾言实验报告第五次实验Debug1extX01:58+592343ERROR!M
8、)3:53竹3=2343ERROR!%04:79-56=23RIGHT!X05:65+l-66KIGHTIX06:24/13-1KIGHT!W7:5336=17RIGHT!苦08:2*88=176EIGHT!TOO:13+2336KIGHT1你答对了6道题Pressanykeytocontinue题目2:自定义一个求n的阶乘的函数。在主函数中调用该函数,当用户输入非负数的时候,程序输由该数的阶乘;当用户输入负数的时候,程序退由。流程图:升她)代码:#includeintmain()inta,s;intjiecheng(intb);printf(pleaseinputanumber:);scan
9、f(%d,&a);if(a=0)s=jiecheng(a);printf(%d!=%ldn,a,s);elseprintf(Inputerror!n);intjiecheng(intb)inti,s=1;if(b=0)s=0;elsefor(i=1;i=b;i+)s*=i;returns;实验结果:E lease input a number: -3 nput error!ress any k&y to continue.El语言实稔报告、第五次实验口心吗吐ekc”mD:c语言俊囹艮告馍五次买期DebugXZexepleaseinputanumber:55!=120Pressanytocont
10、inue题目3:自定义一个函数,判断字符是数字、小写字母、大写字母还是其他,返回值为0时,表示数字;为1时,表示小写字母;为2时,表示大写字母;为3时表示其他。在主函数中调用该函数,判断用户输入的字符是哪一种,并输入“是数字”、是小写字母”、是大写字母”、“其他”;当用户输入“#”的时候,程序退由流程图:代码:#includeintmain()intfun(chara);chara;doscanf(%c,&a);getchar();if(fun(a)=0)printf(是数字n);elseif(fun(a)=1)printf(是小写字母n);elseif(fun(a)=2)printf(是大写
11、字母n);elseif(fun(a)=3)printf(其他n);while(a!=#);intfun(chara)if(a=0&a=a&a=A&a=Z)return2;elseif(a!=#)return3;运行结果:13址语言供脸报告保五次实验Debuq3.m(pleaseinputachar:1是数字pleaseinputachar:2是数字pleaseinputachar;a能小写字库pleaseinputachar:A用大写字母pleaseinputachar:Z修大写字母pleaseinputachar;w足小写亨耳pleaseinputdchar:1区数字pleaseinputachar:寸PressanyktocmtiuueI