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

一、PTA实验作业

题目1:7-3 编程打印空心字符菱形

1.本题PTA提交列表

2.设计思路

  • 定义整形变量 n,i,j和字符型变量c
  • 输入c和n
  • 进入第一次外层循环,用来控制空心字符菱形的上半部分,即for (i = 1; i <= n / 2 + 1; i++)
  • 第一个内层循环控制到第一个字符前一直输出空格 即for (j = 0; j < n-(n-1)/2-i ; j++) printf(" ");
  • 输出第一个字符
  • 第二个内层循环控制从第二行开始,第一个字符到第二个字符之间的空格,即for (j = 1; i - 1 > 0 && j <= 2 * i - 3; j++) printf(" ");
  • 输出第二个字符
  • 第二个外层循环控制空心字符菱形的下半部分, for (i = n / 2; i > 0; i--)
  • 其中第一个内层循环控制到第一个字符前的空格,即(j = 0; j<n - (n - 1) / 2 - i; j++)printf(" ");
  • 输出第一个字符
  • 第二个内层循环控制除了最后一行,第一个字符到第二个字符之间的空格,即for (j = 1; i - 1>0 && j <= 2 * i - 3; j++) printf(" ");
  • 除了最后一行之外,输出第二个字符;
  • 换行

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

第一次运行的时候发现所有字符不是左对其的,而是有空几个空格,而且你输入的行数越多,空格就越多,这个时候我的代码控制第一个空格是这样的

最后经过多次实验,发现前面的空格和我输入的行数呈(n-1)/2的关系,所以在控制第一个空格的循环里再减去(n-1)/2就行了

题目2.7-5 梅森数

1.本题PTA提交列表

2.设计思路

  • 定义整形变量 n,num,i,flag,j
  • 输入n
  • 当n>1时执行判断语句
  • 让flag=1,j=2
  • num=2^n-1;
  • 当j<num时进入循环
  • 让num%j,如果结果为0,flag=0,跳出循环
  • j++
  • 如果flag==1,输出num并换行
  • 重复步骤4-9,直到i>n
  • 如果在第三步不执行判断语句,则输出None

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

刚开始我发现输入后无法输出,后来发现是因为执行循环后j忘了+1
然后我去PTA提交 发现部分正确,重新读了一遍题,发现没有输出None的条件,补上就行了

题目3.7-7 歌唱比赛评分系统

1.本题PTA提交列表

2.设计思路

  • 定义整形变量repeat,n,i,z,b,j,和数组a[10],double型变量score
  • 输入循环次数repeat
  • 当b<repeat时进入第一层循环,这层循环控制需要循环几次评分系统
  • b++,i=0
  • 输入个数n
  • score=0
  • 当i<n时进入第二层循环,这层循环控制输入数组a[i]作为每个评委的评分
  • 输入评分a[i],i++
  • 对所有评分进行排序 for (j = 0; j < n - 1; j++)
    {
    for (i = 0; i < n - 1 - j; i++)
    if (a[i] > a[i + 1]) {
    z = a[i];
    a[i] = a[i + 1];
    a[i + 1] = z;
    }
    }
  • 对除了第一个和最后一个之外的所有评分进行相加for (i = 1; i < n - 1; i++) score += a[i];
  • 求平均数score = score / (n - 2);
  • 按照格式输出成绩

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

这是我原本的代码,我一直以为n只用输入一次,在结果正确的情况下,直接提交PTA,结果就是各种答案错误。
重复提交了很多次,弄的我心态差点崩了,最后是看同学的代码才发现原来n是要重复输入的

二、同学代码互评

7-3 编程打印空心字符菱形
我的代码

吴越的代码

我是通过找每一行的规律,从左到右慢慢输出,而吴越是直接找中间位置的树,以mid左右标志,向两边展开,很神奇的思路
但是这样实现起来比较有难度,也不容易想到,我觉得我的代码比较复杂,正常人没有我的解释可能要看半天才能看懂,有待提高

7-5 梅森数
我的代码

吴越的代码

思路都差不多,只是他用了函数,我没有用函数,而且我的代码其实是有缺陷的,我的代码输入None的条件太过简单,不是很全面,但是这道题在n>2的情况下是不可能没有梅森数的,所以也就对了

7-7 歌唱比赛评分系统
我的代码

吴越的代码

思路基本一样,但是他读懂了题目的意思,我没读懂,然后在我的代码的基础上做了一定的优化

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

四、本周学习总结

1.你学会了什么?

我学会了多种循环的嵌套使用,如何输出一些特殊的图形

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

经常题目看茬,没能理解题目的意思,以及在重复输入时,偶尔会忘记各种变量的初始化

posted @ 2017-11-08 15:40  网络1611张弛  阅读(409)  评论(2编辑  收藏  举报