C语言I作业09
一、本周作业头##
这个作业属于那个课程|C语言程序设计II
--|:--😐:--
这个作业要求在哪里|https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/10027
我在这个课程的目标是|熟练掌握好C语言,培养自己的思维能力,同时加快敲代码速度。
这个作业在那个具体方面帮助我实现目标|帮助我熟练的掌握循环的嵌套使用
参考文献|百度百科、CSDN博客、C语言程序设计
二、本周作业##
1.PTA实验作业####
1.1 找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式####
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式####
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。
若区间内没有完数,则输出“None”。
输入样例:####
2 30
输出样例####
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
1.1.1数据处理####
数据表达:用了m,n,i,j,sum,k,count=0;其中m,n代表区间[m,n];i,j,k代表循环起点;sum代表因子之和;count表示用于判断是否是完数。均为整型
数据处理:
Begin
int m,n,i,j,sum,k,count←0;
输入n,m;
for i←m to n
sum←0
for j←1 to i
if i%j==0
sum←sum+j
if i==sum
printf("%d = 1",i);
for k←2 to j
if j%k==0
printf(" + %d",k);
printf("\n");
count++;
if count==0
{
printf("None");
}
END
1.1.2实验代码截图#####
1.1.3 造测试数据####
输入数据|输出数据|说明
--|:--😐:--😐:--
m=2,n=30|6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14|6,28属于完数
m=2,n=100|6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14|6,28属于完数
m=2,n=500|6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14, 496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248|6,28,496属于完数
1.1.4 PTA提交列表及说明####
多处错误:if(count==0)写成if(count=0) , printf("\n");放在第三个循环内。
部分正确:count没有赋初值0。
部分正确:sum=0放在循环外,导致答案错误,在循环内表示每次循环sum的初值为0.
1.2 换硬币####
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式####
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式####
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量,
fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:####
13
输出样例####
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
1.2.1数据处理####
数据表达:x,i,j,k,count=0,total;x代表待换的零钱数额;i代表五分硬币数,j代表二分硬币数;k代表一分硬币数。total代表硬币总数,count代表换法个数,变量均为整型。
数据处理:
Begin
int x,i,j,k,count←0,total;
scanf x;
for i←x to 0
for j←x to 0
for k←x to 0
if x←5*i+2*j+k
total←i+j+k
count←count+1;
printf fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,k,i+j+k;
printf count ← %d",count
End
1.2.2实验代码截图#####
1.2.3 造测试数据####
输入数据|输出数据|说明
--|:--😐:--😐:--
x=13||当x=13有四种换法
x=16||当x=16有七种换法
x=8||当x=8有一种换法
1.2.4 PTA提交列表及说明####
编译错误:inlcude这个单词打错了
其他错误:开始是在Dev上写然后又在PTA上写所以没什么错误。但在Dev上开始写的代码i,j,k都是从1开始, 然后依次递增;而PTA上要的是从大到小,
所以虽然运行出的结果和输出案例是一样的。但是我开始的代码没有从大到小顺序输出算法。所以就改成i,j,k都是从最大值开始,依次递减;由此就可以
先输出大的算法依次到小。
2.代码互评###
自己代码|同学代码
--|:--😐:--
|
不同点:####
1.根据代码的复杂程度来看,我的代码比该同学的更加的简单;该同学把算五分,两分,一分的表达式列出来求解,而我是通过一个条件判断出是否是完数。
2.循环结构,我使用了三个for循环嵌套,而该同学使用了两个for循环嵌套。
自己代码|同学代码
--|:--😐:--
|
不同点:####
1.我的代码比该同学的代码要简单很多,我用了两个for循环的嵌套使用,而该同学用了四个for循环。
2.该同学的代码比我的要详细些,他把是偶数还是奇数的情况都用for循环来求解了,更加具有严谨性。
3.学习总结###
3.1 学习进度条
周/日期|这周所花的时间|代码行|学到的知识点简介|目前比较迷惑的问题
--|:--😐:--😐:--
10/8-10/12|5h|224|if-else语句和输入输出格式|变量的处理
10/13-10/18|12h|263|for循环语句,如何计算累加题|不知道什么时候用include<math.h>
10/19-10/26|15h|334|如何编写自定义函数及更加熟练掌握for循环|自定义函数的使用
10/26-11/2|14h|355|如何使用逻辑表达式及else-if语句|如何去寻找else-if之间的关系
11/2-11/8|13h|284|如何使用switch语句|switch语句与for循环同用时的关系
11/9-11/15|16h|231使用while语句以及字符型变量的输入输出,#include<string.h>的使用|数组的使用
11/16-11/22|10h|203|使用循环的嵌套解决问题,以及break,continue语句|在多个循环中如何输出换行
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
又是一周的学习,学习的结构也越来越复杂了;这周主要学习了循环嵌套的使用,使用循环的嵌套可以解决许多复杂的问题,比如求解1!+2!+····+100!使用循环的嵌套
就变得更简单。同时学习的越多越要和前面所学习的知识联系起来,做到尽量使自己的代码变得精炼而又通俗易懂。同时现在明显的感觉到了做题一定要有数学的思维逻辑,
不然就是一头雾水,不知道如何下手,PTA的第二题开始一点思路都没有,通过请教了一位以前的同学才慢慢的找到了思路,慢慢地把代码敲了出来。所以想要敲出代码一定
要学好高数,努力的培养自己的数学思维以及一定的逻辑能力。