程序设计与问题求解实验报告四
——模块化程序设计
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验目的
1.掌握函数的定义和调用方法;
2.掌握通过参数在函数(模块)间传递数据的方法。
二、实验内容和步骤
1.改正下列程序错误,使之完成规定的功能
输入两个数,输出其中较大的数,错误代码如下:
int max(int a, b);
{
if(a>b)
max=a;
else
max=b;
return max;
}
int main()
{
int max,x,y;
printf("输入两个整数,用空格隔开:");
scanf("%d%d",&x,&y);
max=max(x,y);
printf("max=%d\n",max);
return 0;
}
修改后:
错误原因分析:
1.max函数声明时不用逗号;
2.max函数声明时要定义参数的类型;
3.max函数里需要定义需要返回的变量的类型;
4.同一函数内变量名不能跟函数名相同;
2.编写程序实现以下功能
(1)求,其中n的值由键盘输入。
要求:定义和调用函数double fact(int a);求取a!并返回结果。
注:此题仅作为自定义函数练习使用,这个程序用函数实现效率会很低。
代码实现:
(2)编写程序,给小学生出加法运算题,然后判断学生输入的答案对错与否,并统计得分。
功能:连续出10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题,如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做,10道题做完后,按每题10分统计总得分和错误题数,然后输出总分和做错的题数。
编程要求:
较好的用户输入输出提示
使用子函数实现两个数相加的测试。此函数的输入参数是两个加数,返回值是用户运算的正确与否(用1或者0表示)。在此函数中首先读入用户输入的加法结果,并与正确结果进行比较。
int AddTest(int a, int b) ;
代码实现:
(3)假设一个班级人数不超过40人,请定义一个一维数组用于存放学生成绩。其中,用户输入学生人数,学生成绩随机生成,求班级平均分。
要求:(a)学生人数由用户输入,用户输入的人数数量不超过40。
(b)随机生成学生成绩(成绩为百分制,即大于等于0,小于等于100);
注:该功能用一个函数实现,函数原型为void initClass(int score[], int num);函数原型中score为存放学生成绩的一维数组,num为学生人数
(c)统计班级中平均分;
注:该功能用一个函数实现,函数原型为float avgClass(int score[], int num);函数返回值为平均分,num为学生人数,保留两位小数
代码实现:
测试一下:
三个都通过了,就很nice~
三、实验总结
小学生加减法的问题那道题我一开始没有用函数很快就整出来了,但是使用了子函数后我整个人都凌乱了,尝试了很多遍都失败了,后来我多读了几遍题目以后弄清楚了主函数和子函数之间的关系后就写出来了。
存放成绩那道题我也碰到了一些问题,在void initClass(int score[], int num)函数中的请重新输入这一块我一开始使用的是if语句,然后就出现了一连串的问题,最后问了一位学长,他让我用while语句试试,然后就成功了。
这一次作业是我掌握函数的定义和调用方法和通过参数在函数(模块)间传递数据的方法,同时也让我再次温习了选择结构和循环语句。
以上的内容是我一年前完成的实验,现在的我当然比一年前的我好很多,但是,还是好菜,每天都有一点点小焦虑。每天激励一次自己,搞¥搞¥搞¥!!!重要的事情说三遍!~