C语言博客作业02----循环结构

1.本章学习总结

1.1 思维导图

1.2 本章学习体会及代码量学习体会

1.2.1 学习体会

这周的学习内容相对以前来说变得较为复杂,单层循环大部分还能理解,但是到了嵌套循环就比较难以接受了,结构复杂起来后我常常搞不清楚变量之间的关系以及内外循环之间的关系,导致pta上的题目真的是写得我脑壳疼~
看了别的同学的博客后我深感自己代码量的欠缺,这点我要反省自己,以后要严格要求自己。
最后希望老师可以稍微布置少点作业,真的写不完,哭泣~(许多基础薄弱同学的心声)。

1.2.2 代码累计

2.PTA总分

2.1 截图PTA中循环结构2次题目集的排名得分

2.2 我的总分:

1.单层循环得分:120分
2.嵌套循环得分:80分
3.总分:200分

3.PTA实验作业

3.1 题目1

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

3.1.1 算法分析

Begin
定义i=1,item=0,s=0;
输入a,n;
当 i<=n 时, then 
{
item=item*10+a;//构建相邻两数之间的关系
s=s+item;
i++;//改变变量
}
输出 s;
End;

3.1.2代码截图

3.1.3 测试数据

3.1.4 提交列表及说明

一开始部分正确,提示说是样例输出错误,后来发现是输出有问题,没有整数输出,把%d改成%.0f后就正确了。

3.2 题目2

通过输入字母和空格的方式,打印出空心字符菱形。

3.2.1 算法分析

Begin
输入字符ch和总行数n;
中间行mid=n/2+1;
for i=1 to n  do
     for j=1 to fabs(mid-i)  then
输出空格;
定义num来存放字符个数;
if i>mid then
    num=n+1-i;//上半部分
否则 num=i;//下半部分
for j=1 to 2*num-1 then //控制字母的个数
     if  j==1或者j==2*num-1
          输出字母;
     否则 输出空格;
最后换行;
End;

3.2.2 代码截图

3.2.3 测试数据

3.2.4 提交列表及说明

这道题本来是不太会写的,但是后来老师讲解过后,思路就比较清晰了,结合老师的讲解经过多次在dev上修改后基本正确了,但是提交两次都是内部错误是什么鬼??
应该是系统问题

3.3 题目3

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?要求编写程序。

3.3.1 算法分析

Begin
输入待换的金额money;
for  fen5=money/5 to  1 then //要求从大到小输出
      for fen2=money/2 to 1  then
           for fen1=money to 1  then
                if   fen5*5+fen2*2+fen1*1==money
                    输出各种硬币面额的数量及它们的总数量;
                   count++;
最后输出count;
End;

3.3.2 代码截图

3.3.3 测试数据

3.3.4 提交列表及说明

1.没有按照题目从大到小的输出要求,一开始用了递增循环,提示答案错误,随后改正;
2.在编译器上运行,代码没有问题,但pta上显示格式错误,经过我一系列的去空格,加空格操作后解决,终于答案正确了(抓狂).

4.代码互评

4.1 代码截图

1.同学的代码

2.我的代码

4.2 二者的异同

异:
1.判断是否存在梅森数时,我用一个变量sum来存放梅森数的数量,当sum=0时,输出None;
该同学直接用n=1时,2的一次方-1等于1(非素数)来判断此时梅森数的数量为0;
2.该同学使用了flag变量来判断素数;
同:
1.代码行数差不多,都挺容易理解的。
2.基本框架相同,都使用了for语句和if语句。
原文地址:https://www.cnblogs.com/112Ada/p/9858704.html