C语言实验五.docx

上传人:b****7 文档编号:8976412 上传时间:2023-02-02 格式:DOCX 页数:10 大小:30.26KB
下载 相关 举报
C语言实验五.docx_第1页
第1页 / 共10页
C语言实验五.docx_第2页
第2页 / 共10页
C语言实验五.docx_第3页
第3页 / 共10页
C语言实验五.docx_第4页
第4页 / 共10页
C语言实验五.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

C语言实验五.docx

《C语言实验五.docx》由会员分享,可在线阅读,更多相关《C语言实验五.docx(10页珍藏版)》请在冰豆网上搜索。

C语言实验五.docx

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;}

}

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1