C语言博客作业03--函数
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.1.1 函数组成
- 函数声明:函数声明指函数原型声明,只有函数名,函数类型,参数个数和类型,无函数体。一般放在主函数前,以分号结尾
void hollowPyramid(int n);
- 函数定义:除上述外,去掉结尾分号,加函数体
void hollowPyramid(int n)
- 形参:必须是变量,用于接收实参传递过来的值
- 实参:可以是常量,变量或表达式
1.1.2 变量
- 局部变量:作用效果只局限于所在函数内
- 全局变量:作用范围为全部函数,与局部函数同时出现时局部函数优先
- 静态局部变量:上次函数调用后的值仍然保存
static 类型名 变量表
1.1.3 函数种类
- 无返回值:void型
- 有返回值:int型、double型
1.1.4 return作用
- 结束函数的运行
- 带着运算结果返回主函数
- return语句只能返回一个值
1.1.5 易错点
- 定义的函数类型一定要与函数返回值是一个类型
- 形参和实参是一一对应的
- 在不返回结果的函数定义中,void不能省略;否则,函数类型被默认定义为int
- 静态局部变量赋初值只在函数第一次调用时起作用,若没有 赋初值,系统将自动赋0
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
这两周接触了函数,了解到相同功能的代码可以放在同一个函数中,供其他函数调用,还可以解决代码的重复问题,使得代码量大的变得更加简洁。一开始虽然明白形参和实参的理论概念,但是课堂互动时还是搞不清哪个空该填形参哪个空该填实参,懵懵的。后来PTA上做了题练练手才逐渐了解了函数的相关操作,不过有时候还是会想不清楚要return什么值回主函数,对于函数的使用还是不太上手吧,在以后的作业中希望自己能够多使用函数解题。
1.2.2 代码累计
PTA函数题集 | 综合作业 | 总计 |
---|---|---|
270 | 496 | 766 |
2.综合作业——小学生口算系统
2.1 本次作业的函数关系图
2.2 函数功能及全局变量介绍
2.2.1 全局变量
2.2.2 函数功能介绍
void listMenu();//初始界面菜单
void level();//一二三年级选择菜单
void getScore(int n);//得出分数
void rightMessage();//正确信息输出
void wrongMessage();//错误信息输出
int calculate(int n);//计算
int calculate1(int x, int y, int z);//一年级
int calculate2(int x, int y, int z);//二年级
int calculate3(int x, int y);//三年级
double correctRate(double rate);//计算正确率
main函数
2.3 运行结果截图,测试用例
-
一年级
-
两位数减整十数
- 整十数减整十数
- 100以内连加连减混合运算
-
二年级
-
1-9以内的表内乘除法
-
整十加整十(进位)
-
三年级
-
三位数加三位数的加法(含连续进位的)
2.4 调试碰到问题及解决办法
1.一开始发现程序不能读入用户所输入的值,即程序里面的youranswer,纠结了很久不知道是为什么,~~后来发现是我傻逼~~后来突然意识到我在scanf里面写了提示语所以不能读入,将文字删除之后就可以正常读入答案了
2.发现一样的题目会输出两遍,用逐语句调试发现是我在判断是否为1的那一段输入了两遍函数,导致函数会运行两次,删除一次之后就完事了~
3.发现第一题输入正确答案后并被判为正确后,继续第二题输入的也是正确答案,但是程序读入的youranswer是上一题的答案,纳闷了很久,我后来是把printf题目后面的\n以及scanf后面的\n删去,再加一个getchar()吸收字符
2.5 大作业总结
编写过程注意事项:
- 首先在代码复杂的情况下创建一个清晰的思维导图还是很有效果的!!
- 然后是要保持界面的友好
- 要确定函数的先后顺序以及在程序中的位置
碰到的问题:
- 对于函数的嵌套顺序思考了很久,不熟练
- 一些不合法的算式比如分母为0、减法不能出现负数的情况需要考虑到,但是我只能控制两位数的减法结果大于0,混合运算会再继续改进的
- 对于很多要求不能够做到很精确,年级越高题目的要求也越多,由于是随机数,总是不能够调试出合适的数据
- 一些细微的错误总要通过调试去发现,读代码的能力还有待提高