C语言博客作业--嵌套循环

一、PTA实验作业

题目1(5)

(1).本题PTA提交列表

(2)设计思路

  • 定义循环变量i, j, 标志变量flag, 输出的梅森数prime, 输入的整数num
  • 输入整数num
  • flag=0;
  • 当i<=num时循环,i自增
  • prime=pow(2,i)-1;
  • 当j<=prime-1时,j自增
  • 若prime%j==0,跳出j的循环
  • 若j>prime-1且prime!=1,输出prime,改变标志变量
  • 循环结束
  • 若标志变量不变,输出None
  • 程序结束

(3)调试问题及解决方法

  • 发现3没有输出

  • 修正之后发现15输出了,之后运行时发现多输出了15和63,原因在于prime%j!=0这里,因为j<=prime,所以当prime=15时定然prime%j!=0会为真

  • 再次修改之后发现是因为程序中的判断条件定然成立

  • 所以把j>prime-1&&prime!=1放在j循环的外面,j循环中判断prime%j==0,如图

题目2(4)

(1).本题PTA提交列表

(2)设计思路

  • 定义整型变量一分(one)、两分(two)、五分(five)、零钱数额(x)、换法个数(count)
  • 输入零钱数额
  • count=0
  • 使five=x/5,当five>0时,循环,并每次循环自减
  • 使two=x/2,当two>0时,循环,并每次循环自减
  • 使one=x,当one>0时,循环,并每次循环自减
  • 判断five5+two2+one==x;若为真,按题目要求输出,并count++;
  • 所有循环结束,输出count的值。

(3)调试问题及解决方法

  • 输入13,没有发现问题,是与题目一致的,但是输入其他数字(如20)时,

  • 发现并没有按照大小排列输出,于是将改变成

  • 发现
    即再次有不按顺序输出的情况

  • 把五分硬币的循环放在外面,即,再次尝试后正确

题目3 (7)

(1).本题PTA提交列表

(2)设计思路

  • 循环变量i,题目要求repeat,n,num;编号1:one=0;编号2:two=0;编号3:three=0;编号4:four=0;编号5:five=0;
  • 定义实数变量score(输入的数字),max(最大值),min(最小值),sum(总和)
  • 输入repeat
  • 当repeat>0时循环,每次循环repeat自减
  • 输入n
  • one=0,two=0,three=0,four=0,five=0;
  • 当n>0循环,n自减
  • 输入num
  • 判断num的值,当num=1时one++;当num=2时two++;当num=3时three++;当num=4时four++;当num=其他时five++;n循环结束
  • i=1,当i<=5时,
  • printf("%d:",i);
  • 若i==1,则当one>0时,输出*
  • 若i==2,则当two>0时,输出*
  • 若i==3,则当three>0时,输出*
  • 若i==4,则当four>0时,输出*
  • 若i==5,则当five>0时,输出*
  • 输出换行符
  • i循环结束。
  • 循环结束,程序结束

(3)调试问题及解决方法

  • 这题与之前的7-7较相似,但输出方面有极大的不同,所以定义了五个变量来存放分别要输出的*的个数,
    但当如图所示时,
    输出的
    与题目输出的看似相同,但我少输出了一个换行符,使得形式与题目要求不一致
  • 所以后来用for循环语句重新写,得到了能输出正确的结果的程序

二、同学代码结对互评

1.互评同学名称

   黄炳炜

2.我的代码、互评同学代码截图

  • 我的代码

  • 同学代码

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

(1)不同之处在于我和他对题目的思路的不同,即:我比他多使用了一个标志变量flag,用来决定是否输出“None”,且在后续程序中,num=1的情况是要走一遍程序才能输出“None”;他则直接判断输入的n,若n<=1,则是完全没有的情况,所以可直接输出“None”,时间上用时比我设计的程序更短,这一点说明他对题目的解读比我要深,发现了这种特殊情况的条件。

还有的不同之处在于对while和for语句的使用,我使用了两个 for 语句,他使用了一个 for 和一个 while 语句,我认为他的第二个 while 语句可以用 for 语句替代,同是对 j 初始化及 j 自增,完全可以用 for 语句执行,以使程序本身更简洁;相比之下,我的程序中的 prime-1 完全可以使用 prime 来替代,相应的要改变循环的判断条件。

(2)我更喜欢他的那种风格,能够先判断的特殊情况条件允许的话优先判断,这样可能对可能有的调试排错有一定的帮助。

三、截图本周题目集的PTA最后排名。

PTA排名

四、本周学习总结

1.你学会了什么?

  • 学会了将嵌套循环应用于较复杂情况的技巧,如应用于要求多次输入多组不同数据的情况,或是输出一些特定数的情况。
  • 还学习了使用嵌套循环循环判断某个数值是否为想要的数值并计算的方法。

2.本周的内容,你还不会什么?

  • 多个嵌套循环下对循环条件的理解和把握并不清楚,容易在这方面犯错
  • 对题目的理解能力有待提升,有空闲时间时多多做题
posted @ 2017-11-11 00:35  那就这个名字  阅读(277)  评论(7编辑  收藏  举报