程序设计与问题求解实验报告四

本文是一篇关于程序设计与问题求解的实验报告,主要探讨了模块化程序设计,包括函数的定义和调用、参数传递等。作者通过修正错误代码和编写多个功能程序,如计算阶乘、小学生加法测试和班级平均分计算,来深化对这些概念的理解。实验过程中,作者遇到并解决了使用子函数和循环控制等问题,从而提升了编程技能。
摘要由CSDN通过智能技术生成

程序设计与问题求解实验报告四

——模块化程序设计


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、实验目的

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语句试试,然后就成功了。
这一次作业是我掌握函数的定义和调用方法和通过参数在函数(模块)间传递数据的方法,同时也让我再次温习了选择结构和循环语句。

以上的内容是我一年前完成的实验,现在的我当然比一年前的我好很多,但是,还是好菜,每天都有一点点小焦虑。每天激励一次自己,搞¥搞¥搞¥!!!重要的事情说三遍!~

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值