一、PTA实验作业
题目1.查询水果价格
1. 本题PTA提交列表
-
2.设计思路
- 第一步:定义整型变量number,i分别用于存放水果对应的序号,循环的次数
- 第二步:输出[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit,之后在换行
- 第三步:输入水果序号number,令i的初值为1
- 第四步:当i<=5时,执行接下来的下步骤
- 第五步:如果满足number等于0的条件,则执行
- 第六步:当number不等于0且i<=5,则执行接下来的步骤
- 第七步:使用switch语句,变量设为number,如果number==1,则输出price = 3.00并换行,break语句跳出switch语句 如果number==2,则输出price = 2.50并换行,break语句跳出switch语句 如果number==3,则输出price = 4.10并换行,break语句跳出switch语句 如果number==4,则输出price = 10.20并换行,break语句跳出switch语句 如果都不是,则输出price = 0.00并换行,break语句跳出switch语句
- 第八步:读取新的水果序号,并i++
- 第九步:如果满足number不等于0且i<=5的条件,执行第七步
第十步:如果满足i<=5的条件,执行第五步,否则,执行接下来的步骤
3.本题调试过程碰到问题及解决办法
- 问题:输入1 2 3 3 4 4 5 6 7 8时 输出多了一行
- 调试发现i的初值为0,使循环结构多循环了一次
- 解决方法:令i的初值为1
题目2.换硬币
1.本题PTA提交列表
-
2.设计思路
- 第一步:定义整型变量x,fen5,fen2,fen1,count,total,分别用于存放待换零钱数额,5分硬币数量,2分数量,1分数量,换法的次数,每方法的硬币总个数
- 第二步:令count的初值为0,输入待换零钱数额
- 第三步:如果满足x>8且x<100的条件,执行下一步骤
- 第四步:令fen5的初值为19,如果满足fen5>0,则执行下一步骤
- 第五步:令fen2的初值为49,如果满足fen2>0,则执行下一步骤,都在执行第四步,fen5--
- 第六步:令fen1的初值为99,如果满足fen1>0则执行下一步骤,否则执行执行第五步,fen2--
- 第七步:如果满足5fen5+2fen2+fen1==x的条件,则运行total=fen5+fen2+fen1,分别输出fen5:,fen2:,fen1:的方式输出各个硬币的数量,count++,fen1--
第八步:以count = 的方式输出count
3.本题调试过程碰到问题及解决办法
问题:不会按PTA格式
而是解决方法:最开始fen5,fen2,fen1都从1开始,那么让它们从最大开始依次往下减
题目3.梅森数
1.本题PTA提交列表
-
2.设计思路
- 第一步:输入整型变量n,j,i,Mersenne,maxnumber,分别用于存放2的幂方,j,i用于存放循环次数,Mersenne存放所有不超过2n−1的梅森数,maxnumber存放2n−
- 第二步:输入n,运算maxnumber=pow(2,n)-1
- 第三步:如果满足n<20,则执行下一步,都在执行第八步
- 第四步:令i的初值为1,如果满足i<=n,则执行下一步,否则执行第八步
- 第五步:运算Mersenne=pow(2,i)-1,如果满足Mersenne<=maxnumber,则执行下一步
- 第六步:令j的初值为2,如果满足j<=Mersenne,执行下一步
- 第七步:如果Mersenne%j==0,使用break语法,跳出循环,执行第四步,i++ 如果j>Mersenne/2输出Mersenne,换行,并使用break语法,跳出循环 ,执行第四步,i++
第八步:如果i==2,输出None
3.本题调试过程碰到问题及解决办法
问题:最开始第六步的条件是i<=sqrt(Mersenne),结果发现无结果输出,调试发现一开始j的值为2,sqrt(Mersenne)的值为1,不满足条件
解决方法:特殊情况特殊对待,将sqrt(Mersenne)改为Mersenne,可以完成输出且正确
二、同学代码结对互评
1.互评同学名称
熊志坚
2.我的代码、互评同学代码截图
- 志坚同学的代码:
我的代码:
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 不同:我用了一个嵌套的while语句,志坚用了一个for语句,其余没有太大不同点
- 各自优势:我:使用了while语句嵌套循环,少定义一个变量。 志坚:就用了一个scanf语句读取,定义时便给变量赋予了初值,而且用英文定义了变量。
- 我比较喜欢我的代码风格
- 志坚同学在for循环语句里if语句中的条件,我认为tmp<5与number==0同时成立的条件是错的,因为for循环的条件就是tmp<=5,所以如果第五次输入的是0,tmp等于5,不能同时成立,就只能输出4组水果价格就必须结束 ,但是志坚同学的代码输出的答案却有5组而不是4组,条件改为只留number==0就足够。 有图有真相 志坚同学: 我:
三、截图本周题目集的PTA最后排名
-
四、本周学习总结
1.你学会了什么?,
这周主要学了嵌套循环,首先嵌套循环里印象最深的就是九九乘法口诀,
正常型里for循环语句的条件只要稍微改下不等式关系就成了杨辉三角型, 挺好玩的代码。其次,也能较为熟练的使用break语法跳出循环,已达到 自己想要的结果,再者调试又得到了充分练习,虽然有时候调试到差点 崩溃,但是坚持下来感觉还是不错的,比如说PTA中打空心菱形那题。总的来说学习收获不少。2.本周的内容,你还不会什么?
- 比如说PTA中空心菱形那题,定义字符型变量op,op++,令op最初为B,后面会以C,D,E.......的方式输出,不懂得其原理
- 嵌套循环里,有些时候虽然看起来有两个for嵌套语句,但往往第一的for句拿来当类似if语句的作用,不能体现出嵌套
面对嵌套题目还是比较吃力,还需多加努力和练习。