1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
- 我眼中的函数 这一章接触到了新的知识——函数,不同于之前所学的编程,函数具有很清楚的分工性,且可以用来多次调用,解决代码重复问 题,增加代码可读性
- 我的函数学习 毕竟是新知识,刚开始学习时还是有点迷迷糊糊,虽然可以设计一些简单的函数,但阅读复杂代码时不太能看明白结构,但在老师的讲解和课堂互动过后,逐渐熟悉函数,觉得挺有意思的,非常有条理性。在做过一些题之后,关于函数的编程我的总结是,先将整个程序分成几大板块,分为主函数和自定义的函数,思考主函数怎样合理调用函数、自定义的函数应用哪一个类型、是否需要返回结果,一定要熟悉格式,有合理清晰的思路之后再开始编程。
- 需要注意的地方 在实参和形参重名的时候,不太能分得清到底结果应该怎么计算;函数相关的练习不太够,应该再找一些题目更加熟悉函数的思路和格式;在对于全局变量和局部变量甚至是静态变量的择优选择时,不太熟练掌握;对于方便但是不熟悉的函数来讲,总是会选择复杂但是熟悉的编程,应该熟练运用函数,提高函数质量。
1.1.2代码累计
2.PTA总分
2.1排名得分
2.2我的总分
函数:145分;
3.PTA实验作业
3.1PTA题目1
验证哥德巴赫猜想
- 判断p是否为素数
- 将给定范围内的偶数拆成两个奇素数p,q
- PS:要求p为最小的情况
3.1.1 算法分析
函数一 判断p是否为素数
考虑特殊情况:1不是素数,2是素数
- if(p==1) return 0;
- else if(p==2) return 1;
素数判断:- p对于 2 to p/2+1 进行除法运算,
- for i= 2 to p/2+1
- if(p%i==0) return 0; //不是素数
- end for
- return 1;//是素数
函数二 将范围内的偶数拆分:
- 要求p为最小且为奇素数
- for p=3 to p=n
- if(p为素数) q=n-p;
- then if(q为素数) 输出p+q=n;
- end
3.1.2 代码截图
3.1.3 测试数据
3.1.4 PTA提交列表及说明
说明:最开始接触这道题的时候,有点疑惑两个函数同时使用应该怎么写,后来注意到这两个函数存在先后问题即后一个函数需要调用前一个函数,显然这道题并不难,之所以记录是为了留下印象,在函数中调用函数,注意题目要求的p最小的条件,错误的地方是忽略在判断素数时,i可以取p/2+1 ,做题真的要仔细!每次都是犯一些小错误。
4.大作业
4.1函数关系图
4.2函数功能介绍
函数大体
1.函数一 主函数
- 显示菜单,提示用户选择题集
- 调用三种题集对应的函数
2.函数二&&函数三&&函数四
- 提示用户输入需要的题量
- 产生随机数和随机字符,组成一道四则运算题
- 将用户输入的结果与数字对比,判断结果
- 在两题之间设计快捷键提前退出试题
由于函数三、四两步运算的两步运算额外考虑乘除,所以仅展示函数二代码
3.函数五&&答案六
答案正确||答案错误
从课堂派的一道题中得到思路,为了丰富试题,随机输出四种意为“答案正确”或是“答案错误”的语句,为了方便且避免代码重复,采用函数的形 式,供函数二、三、四调用
4.3运行结果截图
- 1.显示主菜单,准备开始程序
- 2.输入错误题集,要求重新输入
- 3.进入题集之后,选择题量
- 4.对于第一题之后清屏,回答错误提醒且告知正确答案
- 5.提前结束试题
- 6.答题结束时显示成绩单
4.4 调试碰到问题及解决办法
- Q:忽略输入非法字符的情况
- S:林丽老师讲解,以及同学的提示,switch语句末尾加上default情况,要求重新输入提供的三个题集;
- Q:非法字符为字母时,回车键也被读入
- S:使用fflush(stdin);进行清除或是采用while(getchar()!=‘\n’);解决
- Q:函数二三四进入死循环,一轮接一轮地答题
- S:break无法达到跳出循环的作用,将其改成return 0解决问题
- Q:不知道怎么随机产生两位数
- S:百度搜索,请教同学rand()%90+10,由此推出随机三位数的取法;
- Q: 清零函数的使用不熟练
- S:查资料清楚使用格式,仔细斟酌之后确定清零函数的位置;
- Q: 进行除法时,产生无法整除的现象
- S:结果统一保留两位小数,并提示用户.
4.5大作业总结
- 对于大作业的写法总结:读懂程序的目的——>整理要处理的部分——>将这些要处理的归类,有重复的最好归类为一个函数——>做好每一个函数之间的衔接,保证互相配合且互不干扰——>注意代码的可读性,使用户明白每一部分;
- 感受:第一次接触代码,听到这个作业的时候很懵逼,完全没有思路,林丽老师在课堂上大概画了一下框架之后,有些思路,开始自己画草图,画框架,考虑各种陌生的函数,不得不说百度真的是个好东西,可以学到更多知识。一敲一击之下的代码实在不易,虽然一直觉得自己在不停地写bug但不得不说在运行之时是新鲜的是有趣的,很锻炼思维的条理性,更是在检验c语言的基础,对比同学的代码,自己的很一般,甚至显得粗糙,所以要继续努力,好好儿学习,多打代码练习