1.本章学习总结
1.1思维导图
1.2本章学习体会及代码量学习体会
1.2.1 学习体会
- 知道了程序的模块化设计可使程序结构清晰,简化复杂问题,解决代码重复问题
- 学会使用自定义函数简化主函数,使代码更简洁,易于设计和理解
- 理解了实参与形参的关系,学会在函数中选择适当的变量
1.2.2 代码累计
2.PTA总分
2.1截图PTA中的排名得分
2.2 我的总分
函数:145
总分:145
3. PTA实验作业
3.1 PTA题目1
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。
3.1.1 算法分析
int prime(int p);
- if p=1 then
- return 0
- 定义循环中变量j
- for j=2 to j*j>p
- if p可整除j then
- break
- for end
- if j*j>p then
- return 1
- else
- return 0
void Goldbach(int n);
- 定义循环变量i
- if n为奇数 then
- n=n+1
- if end
- for 无限循环
- if i和n-i 都为素数 then
- 输出结果
- break
- if end
- for end
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
说明:
Q1:忽视1不是素数造成错误
A1:prime函数中增加对1的特判,结果正确
4.大作业
4.1.函数关系图
4.2.函数功能介绍
函数1:Level函数
选择等级并判断输入是否正确
函数2:Question函数
生成随机数,随机运算符,组成计算式
组成计算式,并得出正确答案
函数3:Answer函数
判断输入数字是否等于正确答案
给出正误提示
4.3 运行结果截图
正常运行
中途退出
level不在范围内
4.4 调试碰到问题及解决办法
Q1:level为2,3时生成的随机数出现1位数,1位数 2位数
A1:网上查找资料,将随机数=rand()%100,随机数=rand()%1000 改为随机数=rand()%90+10,随机数=rand()%900+100
Q2:输入为多个数据时,多余数据占据了下一道题答案位置
A2:网上查找资料,加入setbuf(stdin, NULL)语句,清空缓冲区
Q3:输入非法字符出错
A3:依照老师建议加入对scanf函数返回值的判断,并设置成输入非数字时结束程序
4.5 大作业总结
学会了srand(time(NULL))生成随机种子,使用rand()%随机数个数+(随机数最小值)得到给定范围的随机数,使用setbuf(stdin, NULL)清空缓冲区等一系列操作
巩固之前所学的分支,循环,函数等结构,第一次写超过150行的大程序,感受到了程序员的辛苦
终于切身体会到被BUG淹没的绝望