1、C语言实验五实 验 报 告课程名称程序设计基础(C语言)实验项目实验五 函数的简单应用学院 系别 班级/学号 学生姓名 实验日期 成绩 指导教师 一、实验目的 1掌握函数的定义、函数的说明和调用。 2掌握函数的参数及其传递方式,函数值的正确返回。 二、实验内容 题目 1:编写一个自动出题程序,该程序可以给出任意两个数的、/运算式子,当用户输入运算结果时,程序可以判断正误。当用户做完十道题目之后,程序给出最终的统计结果。 提示: 1 系统函数 srand,是随机数发生器的初始化函数,这个函数在头文件 stdlib.h 中。 原型:void srand(unsigned seed) 2 系统函数
2、rand,产生随机数的函数, 原型:int rand(void) 3 系统函数 time,可以获取系统时间,这个函数在 time.h 中。 大家可以试用下面的程序体会随机数的生成。 #include #include #include void main() int i,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 函数在产生随机数前,需要系统提供生
3、成伪随机数序列的种子,rand 根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用 rand 函数生成的伪随机数序列都是一样的。 3 srand(unsigned seed)通过参数seed 改变系统提供的种子值,从而可以使得每次调用 rand 函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。 4 通常可以利用系统时间来改变系统的种子值,即srand(time(NULL),可以为 rand 函数提供不同的种子值,进而产生不同的随机数序列 5 “j=(int)(10*rand()/(RAND_MAX+1.0);”rand()函数前的10 控制了 j 的范围,使其只能
4、是 0 到 10 之间的数;如果将其改成 100,则 j 即是 0 到 100 之间的随机数。 我们可以利用上面的方法产生运算式中的两个操作数。 4 如何产生操作符? 我们将随机产生四个操作符:、/。 可以定义一个变量:int op;并利用上述生成随机数的方法,用程序控制 op 的值为 1 到 4 的随机数。 然后: switch(op) case 1: /*做加法*/ printf(nNO%d: %d+%d=,i,a,b); scanf(%d,&ans); if(ans=add(a,b) printf(Right!n); else printf(Error!n); break; case 2
5、: /*做减法*/ break; case 3: /*做乘法*/ break; case 4: /*做除法*/ break; = 上面的程序片段中 add 为用户自定义函数,实现两个数的加法计算,并返回结果。 类似的还需要编写减法、乘法、除法三个自定义函数。不过这几个自定义函数的 内部实现都特别简单。大家请将注意力放在高层的函数定义、声明、调用三个环节上。流程图:代码:#include#include #include int add(int x,int y) int z; z=x+y; return(z); int jian(int x,int y) int z; z=x-y; return
6、(z); int cheng(int x,int y) int z; z=x*y; return(z); int chu(int x,int y) int z; z=x/y; return(z); int main() int i,j,x; int op; int res; int z=0; srand(unsigned)(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(re
7、s=add(i,j) printf(RIGHT!n); z+=1; else printf(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; else printf(ERROR!n); break; case 3: printf(nNO%d:%d*%d=,x,i,j); scanf(%d,&res); if(res=cheng(i,j) printf(RIGHT!n); z+=1; else printf(ERROR!n); b
8、reak; case 4: printf(nNO%d:%d/%d=,x,i,j); scanf(%d,&res); if(res=chu(i,j) printf(RIGHT!n); z+=1; else printf(ERROR!n); break; printf(你答对了%d道题n,z); return 0; 运行结果:题目 2:自定义一个求 n 的阶乘的函数。在主函数中调用该函数,当用户输入非负数的时候,程序输出该数的阶乘;当用户输入负数的时候,程序退出。 流程图:代码:#includeint main() int a,s; int jiecheng(int b); printf(plea
9、se input a number: ); scanf(%d,&a); if(a=0) s=jiecheng(a); printf(%d!=%ldn,a,s); else printf(Input error!n); int jiecheng(int b) int i,s=1; if(b=0) s=0; else for(i=1;i=b;i+) s*=i; return s;实验结果:题目 3:自定义一个函数,判断字符是数字、小写字母、大写字母还是其他,返回值为 0 时,表示数字;为 1 时,表示小写字母;为 2 时,表示大写字母;为 3 时表示其他。在主函数中调用该函数,判断用户输入的字符是
10、哪一种,并输入“是数字”、 “是小写字母”、“是大写字母”、“其他”;当用户输入“#”的时候,程序退出流程图:代码:#includeint main() int fun(char a); char a; do printf(please input a char: ); scanf(%c,&a); getchar(); if(fun(a)=0) printf(是数字n); else if(fun(a)=1) printf(是小写字母n); else if(fun(a)=2) printf(是大写字母n); else if(fun(a)=3) printf(其他n); while(a!=#);int fun(char a) if(a=0&a=a&a=A&a=Z) return 2; else if(a!=#) return 3;运行结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1