C语言实验五.docx
- 文档编号:28284586
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:12
- 大小:155.38KB
C语言实验五.docx
《C语言实验五.docx》由会员分享,可在线阅读,更多相关《C语言实验五.docx(12页珍藏版)》请在冰豆网上搜索。
C语言实验五
实验报告
课程名称
程序设计基础(C语言)
实验项目
实验五函数的简单应用
学院
系别
班级/学号
学生姓名
实验日期
成绩
指导教师
一、实验目的
1.掌握函数的定义、函数的说明和调用。
2.掌握函数的参数及其传递方式,函数值的正确返回。
二、实验内容
题目1:
编写一个自动出题程序,该程序可以给出任意两个数的+、
-、×、/运算式子,当用户输入运算结果时,程序可以判断正误。
当用户做完十道题目之后,程序给出最终的统计结果。
提示:
1.系统函数srand,是随机数发生器的初始化函数,这个函数在头文件stdlib.h中。
原型:
voidsrand(unsignedseed)
2.系统函数rand,产生随机数的函数,原型:
intrand(void)
3.系统函数time,可以获取系统
时间,这个函数在time.h中。
大家可以试用下面的程序体会随机数
的生成。
#include
#include
#include
voidmain()
{
inti,j;
srand((unsigned)time(NULL));
for(i=0;i<10;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为用户自定义函数,实现两个数的加法计算,并返回结果。
类似的还需要编写减法、乘法、除法三个自定义函数。
不过这几个自定义函数的内部实现都特别简单。
大家请将注意力放在高层的函数定义、声明、调用三个环节上。
流程图:
代码:
#include
#include
#include
intadd(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;x<10;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;
}
else
printf("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;
}
else
printf("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;
}
else
printf("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;
}
else
printf("ERROR!
\n");
break;
}
}
printf("你答对了%d道题\n",z);
return0;
}
运行结果:
题目2:
自定义一个求n的阶乘的函数。
在主函数中调用该函数,当用户输入非负数的时候,程序输出该数的阶乘;当用户输入负数的时候,程序退出。
流程图:
代码:
#include
intmain()
{
inta,s;
intjiecheng(intb);
printf("pleaseinputanumber:
");
scanf("%d",&a);
if(a>=0)
{
s=jiecheng(a);
printf("%d!
=%ld\n",a,s);
}
else
printf("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时表示其他。
在主函数中调用该函数,判断用户输入的字符是哪一种,并输入“是数字”、“是小写字母”、“是大写字母”、“其他”;当用户输入“#”的时候,程序退出
流程图:
代码:
#include
intmain()
{
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;}
}
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实验