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.大作业总结。

  • 本次大作业并没有很好的达到要求,细化的运算没有实现,代码行数太少,程序显得过于简单。
  • 回顾整个编写过程,理清思路很重要,在打代码之前先要有整个程序初步的框架。
  • 代码的拓展性也很必要,在遇到要增加功能或者修改功能时,若代码拓展性差则会让人手足无措。
  • 后续的写程序时,要先理清思路再动手,不可盲目乱写。尽可能不要用太特殊的思路或方法,这会让程序的拓展性变得较差。
posted @ 2019-11-03 19:30  Po1s0n  阅读(264)  评论(1编辑  收藏  举报