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

一、PTA实验作业

题目一:梅森数

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义变量n,mei,i,j,n表示2的次方数,mei表示pow(2,n)-1的值;
  • 第二步:初始化变量,i=2,j=2;
  • 第三步:输入n;
  • 第四步:如果n=1,输出None;
  • 第五步:否则执行步骤六;
  • 第六步:判断i,i<=n成立则mei=pow(2,i)-1;,i++,执行步骤七;
  • 第七步:判断j,j<=mei成立则,如果mei%j==0,j++;如果j>mei/2&&mei!=1,输出mei;
  • 第八步:重复步骤七,直到输出mei或者j>mei;
  • 第九步:跳到步骤六,重复步骤六、七,直到i>n;

3.本题调试过程碰到问题及解决办法

  • 判断素数的部分出错,导致有些是素数的没有输出,有些不是素数的反而输出了,其中3一直输不出来。
  • 经过调试,发现i=2时根本没进循环,导致没有输出3,第二个for中i<=mei,而不是i<=mei/2,还有判断素数的代码用continue,导致一些不是素数的也输出




  • 代码本身也有错误,当j>mei/2&&mei!=1时,为素数就应该输出,最后改正代码,得到正确答案

题目二:换硬币

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义变量change表示零钱数额,total表示硬币数量,count表示换法个数;定义变量i,j,r;
  • 第二步:初始化变量,total=0,count=0,i=20,j=50,r=100;
  • 第三步:输入change;
  • 第四步:进入第一个循环,判断i,满足i>0&&i<=20,i--,执行步骤五;
  • 第五步:进入第二个循环,判断j,满足j>0&&j<=50,j--,执行步骤六;
  • 第六步:进入第三个循环,判断r,满足r>0&&r<=100,r--;
  • 第七步:如果满足5i+2j+r==change,total=i+j+r,count++;
  • 第八步:输出("fen5:%d, fen2:%d, fen1:%d, total:%d ",i,j,r,total)
  • 第九步:重复四到八的操作,直到跳出循环;
  • 第十步:输出count;

3.本题调试过程碰到问题及解决办法

  • 一开始i,j,r均从0开始,然后i++,j++,r++,count输出正确,但是答案错误;
  • 后面用printf语句进行结果的比对,发现i,j,r均要从大到小;
  • count的输出不正常,每次循环都会输出一次;
  • 最后经过调试,发现输出count的printf语句位置放错;

题目三:歌唱比赛评分系统

1. 本题PTA提交列表

2. 设计思路

  • 第一步:定义变量repeat表示运算次数,n表示成绩个数,number表示输入成绩,total表示成绩之和,max和min分别表示最大值和最小值,score表示最后成绩,定义i,j;
  • 第二步:赋初值,total=0,score=0;
  • 第三步:输入repeat;
  • 第四步:进入第一个循环,令i=repeat,若i>0&&i<10,i--,
  • 第五步:输入n,number;
  • 第六步:min=numbe,max=number,total=number;
  • 第七步:进入第二个循环,另j=1,若j<n,j++;
  • 第八步:输入number;
  • 第九步:total=total+number
  • 第十步:如果max<number,max=number;min>number,min=number;
  • 第十一步:重复七到八,知道j>=n;
  • 第十二步:score=1.0*(total-min-max)/(n-2)
  • 第十三步:输出score;

3.本题调试过程碰到问题及解决办法

  • 第一组数据运行结果正确,到第二组数据运算错误,换句话说只能执行一次;
  • 经过调试,发现错误出在,每结束一次运算,要再输入一次n,所以scanf(“%d”,n)应该放在第一个循环的里面;


  • 最后将scanf(“%d”,n)放在第一个循环的里,就可以进行多次运算

二、同学代码结对互评

1.互评同学名称

  • 朱杰伟

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

朱杰伟:
我的:

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

  • 不同点:我用了for循环,用i作为循环条件,在for循环里面判断number的值,再输出结果;而他用的是while循环,同样i为条件,然后再不同条件下判断number的值;
  • 我的优势:简单,容易理解;他的优势:严谨,代码的质量较高
  • 我更喜欢自己的代码风格。

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

四、本周学习总结

1.你学会了什么?

  • 学会判断哪些题目应该或者可以用嵌套循环解决,这类问题至少有2个变量,当变量1不变而个变量2在有规律的按顺序的变,当变量2的循环范围结束时,变量1才执行下一个变量,这时变量2又做一次有规律的按顺序的变,变量1的循环被称为外循环,变量2被称为内循环,也就是说外循环执行一次,内循环执行一圈;
  • 学会了嵌套循环的基本格式,两个for语句如果是嵌套的关系,最好要缩进,当for内有两个或两个以上的语句是,不要忘了要加大括号;
  • 学会了如何编写打印数字图形的代码,比如九九乘法表;
  • 对于调试工具的应用更懂了一些,特别是有些题用监控变量不直观的时候,可以用一些printf语句来看变量的变化。

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

  • 打印空心字符菱形的代码还不会打,对于一些逻辑性强的应用型题目理解能力不是很强;
  • 对于for的嵌套循环里面,还有for的并列循环,不理解,感觉有点凌乱;
  • 嵌套循环的设计思路也就是算法不会写,感觉很凌乱,没有写出层次感;
  • 全局变量还不大会。
原文地址:https://www.cnblogs.com/mayifang/p/7806738.html