C语言博客作业03--函数
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.函数的声明以及定义。(判断素数)
int IsPrime(int number);//函数声明
int IsPrime(int number)//函数定义
{
函数体
}
2.函数调用时参数的传递过程(形参、实参)
主调函数的参数为实参,被调函数的参数为形参,两者一一对应数量相同,顺序一致。
如:volume=cylinder(radius,height);语句中radius、height为实参,double cylinder(double r,double h)中r和h为形参。
3.函数结果返回。
函数结果可通过return语句返回,但如不使用指针的情况下,之能返回一个结果。
也可定义void类型函数,就不需要返回结果。
如:
void 函数名(形参表)//函数首部
{
函数实现过程
}
4.全局变量和局部变量
全局变量定义在函数外,可被多个函数使用,但过多定义全局变量可能会互相干扰。
局部变量定义在函数内,只能被该函数使用,可避免不同函数之间变量的互相干扰。
当局部变量和全局变量同时存在时,全局变量失效,局部变量起作用。
5.变量的生存周期和静态局部变量。
系统为变量分配储存单元,当该函数调用结束,系统收回储存单元的过程称为变量的生存周期。
静态变量定义格式:
static 类型名 变量表
静态变量的生存期可到程序结束,当其未被赋初值时,系统自动赋0。
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
- 由于没有出现很复杂的调用函数情况以及复杂的函数,所以对本章内容相对学习较快。
- 通过本章学习可见巧妙的代码可以让人眼前一亮,不但能节省时间提高效率,还能引起思考,提高学习代码的兴趣。
- 希望在今后的学习中,能学会让单个函数返回多个值,以及实现多线程的函数调用。
1.2.2 代码累计
本次综合作业代码量:202行。
2.综合作业
1.本次作业的函数关系图
2.3.函数功能及全局变量介绍
2.1.全局变量:
- int level; 储存用户输入的年级,多个函数都根据年级难度运行,故设置其为全局变量。
- int count; 储存用户答对题、退出答题回到主菜单的开关。
- int number;存储用户输入的答题数。
2.2.ListMenu()函数
显示主菜单,接受用户输入的年级数和题目数。
2.3. int getQuestion()函数
根据用户输入的题目数量及年级输出题目、接收答案、判断答案对错、给出相应答复。
2.4.char getOperation(int a)函数
可根据年级随机生成运算符。
2.5.int getLevel(int lev, int flag, char op)函数
可根据用户输入的年级控制题目运算数范围。
2.6.int getAnswer(int value1, int o, int value2)函数
可计算出答案并于用户输入的答案比对。
2.7.int getMessage()函数
可在每题结束时,让用户选择是否退出答题并回到主菜单。
3.运行结果截图,测试用例。
4. 调试碰到问题及解决办法。
Q:无法实现中途返回主菜单的功能。
A:将主函数放入循环内,当用户退出时返回-1,循环执行contune语句重新开始循环。
Q:除法运算时出现小数。
A:采用循环直到出现能除尽的两个数。
Q:随机运算符号的实现。
A:采用随机4个数,每个数对应一个符号。
Q:随机的运算符号不具备运算的功能。
A:重新采用一个函数根据符号计算出答案。
Q:相减出现负数。
A:先额外判断下两数大小,用交换两数的方式保证结果为正。
5.大作业总结。
- 本次大作业并没有很好的达到要求,细化的运算没有实现,代码行数太少,程序显得过于简单。
- 回顾整个编写过程,理清思路很重要,在打代码之前先要有整个程序初步的框架。
- 代码的拓展性也很必要,在遇到要增加功能或者修改功能时,若代码拓展性差则会让人手足无措。
- 后续的写程序时,要先理清思路再动手,不可盲目乱写。尽可能不要用太特殊的思路或方法,这会让程序的拓展性变得较差。