这个作业属于哪个课程 | 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实验代码截图
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实验代码截图
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同学代码
2.1.2自己代码
我的代码看起来比该同学的简洁,她用到了if else语句进行判断,而我只用到了for循环语句,看起来比较简洁,易懂。
2.2.1同学代码
2.2.2自己代码
这位同学是一次性把变量全部定义了,而我是一步一步的定义的,没有那么多程序,基本上代码差不多,没有其他特别大的差别
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累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习感悟
通过每一次的学习都会让我产生一种在高中时候上物理课的感觉,听不懂,感觉很深奥,但是每次都会去请教别的同学,在听他们讲完后我会自己很认真的去揣摩几遍,努力的去弄懂某个题目所表达的意思和为什么要这么做的原因,一次比一次更有挑战性,希望以后能学到更多知识和得到巩固,熟悉方法,学以致用。