C语言I作业09

这个作业属于哪个课程 C语言程序设计
这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/10033
我在这个课程的目标是什么 进一步了解更多有关C语言的知识,熟练并掌握相关方法和操作
这个作业在哪个具体方面帮助我实现目标 了解break语句和continue语句的异同,并熟悉嵌套循环
参考文献 C语言程序课本和百度百科

1.PTA实验作业

1.1题目名

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。

1.1.1数据处理

数据表达:运用了整型变量x,count,m,i,j,m代表5分,i代表2分,j代表一分
数据处理:运用到了for循环的嵌套循环,还有if语句,对其变量进行限定
伪代码:

include

int main ()
{
int x, count = 0;
scanf("%d", &x);//输入待换的零钱数额
for ( int m = x / 5; m > 0; m-- )
for ( int i = x / 2; i > 0; i-- )
for ( int j = x; j > 0; j-- )
if ( m * 5 + i * 2 + j == x)
{
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", m, i, j, m + j + i);//输出各种硬币个数
count++;
}
printf("count = %d",count);//输出换法个数
return 0;
}

1.1.2实验代码截图

C语言I作业09_第1张图片

1.1.3造数据测试

输入数据 输出数据 说明
9 fen5:1,fen2:1,fen1:2,total:4,count:1 一个五分硬币,一个两分硬币和两个一分硬币
14 fen5:2,fen2:1,fen1:2,total:5,count:1 两个五分硬币,一个两分硬币,一个一分硬币

1.1.4PTA提交列表及说明


说明:printf语句里面的“:”忘打,导致答案错误;第二次将":"打成“;”,再次答案错误,然后通过请教同学才解决这个问题。

1.2题目名

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1 输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。

1.2.1数据处理

数据表达:定义整型变量m,n,i,j,k,h,t,flag
数据处理:运用了for的嵌套循环,if else语句和scanf语句
伪代码:

include

include

int main()
{
int m, n;
int i, j, k;
int h, t, flag = 0;
scanf("%d %d", &m, &n);//输入2个正整数
for (i = m; i <= n; i++)
{
h = 0;
for (j = 1; j <= i / 2; j++)
{
if (i % j == 0)
h += j;
}
if (h == i)
{
flag = 1;
printf("%d = ", i);//输出完数
t = 0;
for (j = 1; j <= i / 2; j++)
{
if (i % j == 0)
{
t += j;
if (t != i)
printf("%d + ", j);//输出因子
else
printf("%d\n", j);//换行
}
}
}
}
if (flag == 0)
printf("None\n");//如果区间没有完数,则输出None
return 0;
}

1.2.2实验代码截图

C语言I作业09_第2张图片
C语言I作业09_第3张图片

1.2.3造数据测试

输入数据 输出数据 说明
10 40 28 = 1 + 2 + 4 + 7 + 14 [10,40]中有一个完数28
50 80 None [50,80]中没有完数

1.2.4PTA提交列表及说明


说明:第27行的“!”没打,不知道为什么要打;第24行和14行中的“%”未打;第一次运行时未给flag赋值。

2.代码互评

2.1.1同学代码

C语言I作业09_第4张图片

2.1.2自己代码

C语言I作业09_第5张图片
我的代码看起来比该同学的简洁,她用到了if else语句进行判断,而我只用到了for循环语句,看起来比较简洁,易懂。

2.2.1同学代码

C语言I作业09_第6张图片

2.2.2自己代码

C语言I作业09_第7张图片
这位同学是一次性把变量全部定义了,而我是一步一步的定义的,没有那么多程序,基本上代码差不多,没有其他特别大的差别

3.学习总结

3.1学习进度条

周/日期 这周所花时间 代码行 学到的知识简介 目前比较迷惑的问题
7/2019.10.11 14 280 scanf,if else语句 对于scanf语句还不是特别了解
8/2019.10.17 16 320 for的循环语句以及循环体 不太懂循环体的操作,以及对于for的循环语句也不是很熟悉
9/2019.10.25 20 430 使用自定义函数和调试代码 调试过程不太熟悉,调试操作不太熟练
10/2019.11.1 18 570 多分支结构和逻辑运算符 对逻辑运算符了解不是特别明白,对多分支结构不太熟悉
11/2019.11.8 18 700 switch分支结构 对switch语句还不够熟练
12/2019.11.15 22 980 熟练掌握while和do-while语句 对do-while语句还不是特别了解
13/2019.11.21 28 1258 了解了continue语句和break语句的大致区别,知道了嵌套循环 虽然知道了有continue语句和嵌套循环,但是不会把它运用到具体题目中去

3.2累积代码行和博客字数

C语言I作业09_第8张图片

3.3学习内容总结和感悟

3.3.1学习内容总结

请用思维导图的方式将到目前为止所学的内容进行总结
C语言I作业09_第9张图片

3.3.2学习感悟

通过每一次的学习都会让我产生一种在高中时候上物理课的感觉,听不懂,感觉很深奥,但是每次都会去请教别的同学,在听他们讲完后我会自己很认真的去揣摩几遍,努力的去弄懂某个题目所表达的意思和为什么要这么做的原因,一次比一次更有挑战性,希望以后能学到更多知识和得到巩固,熟悉方法,学以致用。

你可能感兴趣的:(C语言I作业09)