C语言I作业09
| 问题 | 答案 |
|---|---|
| 这个作业属于哪个课程 | C语言程序设计II |
| 博客作业的要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029 |
| 我在这个课的目标是 | 掌握for句型的嵌套,与已掌握知识结合 |
| 这个作业在哪具体方面帮助我实现目标 | 对编译语法更了解,对代码的小细节更了解 |
| 参考文献 | C语言程序设计,百度 |
1 PTA实验作业

1.1 7-2 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
1.1.1 数据处理
数据表达:使用整型变量 x,i,j,n,count,count初始值为0,x是输入值, i,j,n是for循环需要的变量
数据处理:伪代码
int x,i,j,n,count ← 0 /*定义五个整型变量,x,i,j,n,count,且count赋值为0*/
scanf ("%d", &x); /*调用scanf()函数输入范围8-100内的任意一位正整数x*/
for i ← x/5 to 0 /*嵌套循环,外层循环,i赋值x/5,递减至0,跳出循环*/
do for j ← (x-5*i)/2 to 0 /*内层循环,j赋值(x-5*i)/2,递减至0,跳出循环*/
do printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n",i,j,n,i+j+n) /*输出每次正确循环的值*/
count++ /*count递增*/
printf("count = %d",count) /*输出count的最终值*/
1.1.2 实验代码截图

1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 13 | ![]() |
输出正确,代码正确 |
| 8 | ![]() |
输出正确,代码正确 |
| 10 | ![]() |
输出正确,代码正确 |
1.1.4 PTA提交列表及说明

提交说明:答案正确:c++运行时,答案错误,因为忘记看输出的顺序了,把他的顺序写倒了
2.1 7-3 找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
2.1.1 数据处理
数据表达:整型变量n,m,i,j,s,b其中n,m是输入值,i,j是for循环时需要的变量,j也是输出值,s,b是程序中运算变化需要的变量
数据处理:伪代码
int n,m,i,j,s ← 1,b ← 1 /*定义六个整型变量,n,m,i,j,s,b,且s,b赋值为1*/
scanf("%d %d",&n,&m) /*调用scanf()函数输入1~10000范围内的任意两位正整数n,m*/
for i ← n to m /*嵌套循环,外层循环,i赋值n,递增减至m,跳出循环*/
do for j ← 2 to i/2 /*内层循环,j赋值2,递增至i/2,跳出循环*/
if(i%j==0) /*判断i除j是否整除,是就运行下一步*/
if(i==s) /*判断i是否等于s,是就运行下一步*/
printf("%d = 1",i) /*输出每次循环时i的值*/
do for j ← 2 to i/2 /*内层循环,j赋值2,递增至i/2,跳出循环*/
printf(" + %d",j) /*输出每次正确循环的值*/
printf("\n") /*换行*/
if(b==1) printf("None") /*判断b是否等于1,等于输出None*/
2.1.2 实验代码截图


2.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 2 30 | 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 | 两个完数,输出正确,代码正确 |
| 0 1 | 1=1 | 一个完数,输出正确,代码正确 |
2.1.4 PTA提交列表及说明



提交说明:部分正确: 第二个for循环时未考虑,当未加到最大值时就达到要求,以至于在第三个for循环时输出错误值,应将第二个for循环里的第二个if语句之后的代码都放到第二个for句型运行结束
之后。
2 代码互评
同学代码(1)

同学代码(2)

自己代码

(1)该同学n,m变量未定义,程序却可以运行成功,我从未成功,我们都使用了for句型的嵌套,但他条件是变量减小,而我相反
(2)该同学的代码比我的长了很多,他变量是一个个定义的,而且用的是while和do while循环,我的是for循环的嵌套
3.学习总结
3.1 学习进度条
| 周 | 这周所花时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 第一周 | 2天 | 27 | 学会了一些基础的代码 | 如何正确自己打代码 |
| 第二周 | 2天 | 58 | 学会了改变编码的环境 | 如何正确自己打代码 |
| 第三周 | 2天 | 87 | 学会了几个复杂点的代码 | 如何正确自己打代码 |
| 第四周 | 2天 | 126 | 知道了for循环的简单使用 | 字符所需的特殊标识的区分 |
| 第五周 | 2天 | 85 | 会使用定义函数和调用 | 对于C语言里的一些单词的含义不够清晰 |
| 第六周 | 6天 | 158 | 会使用if语句的嵌套 | 对于C语言里的一些符号的含义和ASCII码集不够清晰 |
| 第七周 | 2天 | 145 | 会使用switch语句 | 对于switch语句的灵活度不够 |
| 第八周 | 3天 | 124 | 会使用do while循环 | 不能准确的打出自己的代码 |
| 第九周 | 2天 | 137 | 会使用for循环嵌套 | 对于以前的错误,再一次犯了 |
3.2 累积代码行和博客字数

3.3 学习内容总结和感悟
3.3.1 学习内容总结

3.3.2 学习体会
学的知识越来越多,有些知识点开始混淆起来了,做题时,没有一点灵活感,就是一直在套模板,这是一种危险的信号,应对题目多次求解,用不同的方式。




浙公网安备 33010602011771号