C语言I博客作业09

这个作业属于哪个课程 c语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029
我在这个课程的目标是 了解、运用并学会自己编辑c语言
这个作业在哪个具体方面帮助我实现目标 能帮助我更了解c语言,练习c语言
参考文献 《c语言程序设计》《提问的智慧》

1.PTA实验作业

1.1 换硬币

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

1.1.1数据处理

数据表达

运用了六个整型变量,money,fen1,fen2,fen5,total,i;分别表示输入零钱,一分钱的数量,二分钱的数量,五分钱的数量,硬币总数,以及转换方法的数量。

数据处理

定义money,fen1,fen2,fen5,total,i=0; //定义零钱,一分钱,二分钱,五分钱,总数,转换方法
输入money;
fen5←money/5;                      //最大五分钱数量
for fen5 to 0
   fen2←(money-5*fen5)/2;          //在兑换一定五分钱数后,最大二分钱数量
   for fen2 to 0      
      fen1←money-fen5*5-fen2*2;    //一分钱数量
      if fen1>0
      输出fen5,fen2,fen1,total;
      i++;                       //累加方法数
输出count;

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
1 count=0 钱数少于兑换最少硬币总和
8 最少硬币总和
13 样例

1.1.4 PTA提交列表及说明

提交列表说明:

**编译错误**:这道题是先在Dev上运行后,再复制过来的,但还是出现了编译错误,主要是后来我改了一下格式,然后不小心删了一个逗号。

1.2找完数

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

1.2.1数据处理

数据表达

定义了六个整型变量m,n,i,sum,w,a;分别表示输入最大数,最小数,累加数,完数。

数据处理

定义m,n,i,sum,w,a;     //定义最大数,最小数,累加数,完数
输入m,n;
a←0;
for m←w to n;          //累加m直到n
sum←1;                 //给sum赋值
   for i←2 to w/2      //累加i,得到所有因子的和
      if(w%i←0){     //求出因子
          sum+=1;
}
   if(sum←w){          //得出满足条件的完数
       a←1;            //给a赋值为1,使之不进行a为0的条件
       输出w=1;
       for i←2 to w/2     
          if(w%i←0){     //求出完数的各因子
              输出+i;
          }
       输出换行;
if(a←0)
   输出None;

1.2.2实验代码截图


1.2.3 造测试数据

输入数据 输出数据 说明
2 3 None 最小范围
2 6 6=1+2+3 一个完数
2 28 两个完数

1.2.4 PTA提交列表及说明

提交列表说明:

这题在机房课的时候做过改错题,这里只是改动了一下,做起来还是比较容易,先在Dev上做完再移过来,一遍就过了。

2.代码互评

同学代码截图

自己代码截图

1)两份代码均定义三个整型变量,一个字符,但第一份代码运用了getchar(),获得一个字符。
2)第二份代码运用了一个if-else结构判断输入数是否奇数,来进行四舍五入,而第二份代码直接加上0.5,使奇数加一。相比而言,我觉得第一份代码确实好一些,代码也简洁很多。
3)第一份代码先输出,再换行,而第二份代码先换行,再输出,相比而言,第一份代码省了一个if结构,简洁一些。

同学代码截图

自己代码截图

1)第二份代码运用了if条件,先换行,而第一份代码先输出再换行。
2)第二份代码输出时直接使用空格,因此使用if-else结构将一位数和两位数分开,而第一份代码直接使用%-4d直接将所占区间表示出来了。 
3)总体而言第一份代码简洁,第二份代码复杂。

3.学习总结

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
1/16~1/22 1h 42 输入,输出文件
2/23~2/29 3h 31 使用int定义变量
3/7~3/10 6h 93 选择型流程结构,使用double定义变量 输出printf,scanf中%后面使用d或者f或者lf分不清
4/15~4/18 6h 100 循环流程结构 段错误的原因
5/22~5/26 8h 104 调用函数,形参和实参 while的循环原理
6/29~6/22 10h 166 字符,ASCⅡ码集,套嵌if-else分支 for循环边界值
7/5~7/8 5h 141 switch多分支结构
8/12~8/15 7h 159 while循环 使用字符解题不怎么会,定义变量所占空间大小
9/19~9/22 15h 171 break,continue getchar(),变量的位置

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

这次PTA比较容易,唯一难一点的题目和机房改错题相似,做过一次,也不算难了。但由于我太在意时间了,只希望做得快,写的思路有点简单粗暴,导致写得代码看起来异常复杂,代码互评时,别人看着真的有点吓人。
这次作业主要花时间较长的是写博客,写伪代码。写伪代码要要求所有语言通用,虽然是第二次了,但还是感觉不太会,感受就像第一次写代码懵懵懂懂一样,一边百度一边写,所以写得异常的慢,还感觉不太对。熟能生巧,就像写代码一样,我相信我会写得越来越好!
伪代码链接

原文地址:https://www.cnblogs.com/xiamudaren1/p/11910845.html