这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I博客作业09 |
我在这个课程的目标是 | 学习C语言 |
这个作业在哪个具体方面帮助我实现目标 | 学习使用循环的嵌套及熟悉break、continue的使用 |
参考文献 | %与/区别;三种循环的嵌套和比较 |
1.PTA实验作业
1.1 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。
输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
输入样例:
13
输出样例:
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.1.1数据处理
数据表达:用了a,count,k,i,j五个变量,其中a表示待换的零钱数额,count表示换法个数。该代码中还用到了for循环嵌套语句
数据处理:伪代码
````include<stdio.h>头文件
int main()
{
定义整形变量a,count;令count=0;将新取值赋给count,即count初始值为0
输入一个整数a
for循环中,定义整形变量k,其中k的初始值为a/5,每次循环都减去1,直到k>0
for循环中,定义整形变量i,其中i的初始值为a/2,每次循环都减去1,直到i>0
for循环中,定义整形变量j,其中i的初始值为a,每次循环都减去1,直到j>0
if语句,若(k*5+i*2+j==a)
{
输出5分硬币数量k,2分硬币数量i,1分硬币数量j,硬币总数量k+j+i
count++;一直相加
}
输出换法个数count
end if
return 0;
}
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
15 | fen5:2, fen2:2, fen1:1, total:5 fen5:2, fen2:1, fen1:3, total:6 fen5:1, fen2:4, fen1:2, total:7 fen5:1, fen2:3, fen1:4, total:8 fen5:1, fen2:2, fen1:6, total:9 fen5:1, fen2:1, fen1:8, total:10 count = 6 | 一个大于10的奇数 |
8 | fen5:1, fen2:1, fen1:1, total:3 count = 1 | 一个小于10的偶数 |
9 | fen5:1, fen2:1, fen1:2, total:4 count = 1 | 一个小于10的奇数 |
1.1.4PTA提交列表及说明
1.编译错误:在第五行代码中少打了一个标点符号","
2.答案正确:在dev-c++上试编译了几次,找到错误。将6,7行中的"%"改为了"/"。答案正确
1.2找完数
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。
输入格式:
输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。
输出格式:
逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。
输入样例:
2 30
输出样例:
28 = 1 + 2 + 4 + 7 + 14````
###1.2.1数据处理
数据表达:````用了n,m,i,b,sum,num六个变量,其中n,m表示2个正整数m和n;sum和num表示每个完数的因子累加形式的分解式与完数````
数据处理:伪代码
````include<stdio.h>头文件
int main()
{
定义整形变量n,m,i,b,sum,num;其中将0赋值给num
输入两个正整数m,n
for循环中i=m,将i累加
{
if(i==1) 结束本次循环
将1赋值给sum;
for循环中b初始值为2;将b累加,直到b<i
如果i除以b取余数
将sum累加的值赋值给b
如果sum=i
{
输出i等于1的值
for循环中b=2并将b累加,直到b<i;
如果i除以b取得余等于0
输出累加的值num
}
end if
}
如果num=0
输出None
end for
return 0;
}
1.2.2实验代码截图
1.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
5 20 | 6 = 1 + 2 + 3 | 两个正整数(5的倍数) |
15 15 | None | 两个相同的大于10的奇数 |
3 20 | 6 = 1 + 2 + 3 | 两个大于1的符合条件的正整数 |
1.2.4PTA提交列表及说明
1.运行超时:在PTA上没有显示有哪个地方有错,但是就是运行错误,转移dev-c++上编译找到错误。
2.部分正确:有多处空格未打出来,17行与14行输出语句中的空格未打出来
3.答案错误:将错误更正,将空格一一打出来,答案正确
同学代码截图
自己代码截图
1.同学用变量x,y,z分别表示5分、2分、1分,用了两个for循环;我是用变量k,i,j分别表示5分、2分、1分,并且运用了三个for循环,其中三个都用了累减;
2.同学代码中用到了变量total表示硬币总数量;我的代码是直接k+i+j表示硬币总数量;
3.同学代码是用到了for循环语句;我的代码中用到了for循环中嵌套if语句
同学代码截图
自己代码截图
1.同学代码运用了两个变量n,m,我的代码用了三个变量n,i,j,并且用了容纳单字符的一种基本数据类型char
2.同学代码中使用到了for循环中嵌套if语句;而我的代码是for循环中嵌套for循环
3.同学代码中用到了for循环语句中定义整形变量i,j;而我的代码是运用到了双精度浮点型double,并定义了变量n,i,j
3.学习总结
3.1学习进度条
周 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
---|---|---|---|---|
第五周 | 3小时 | 17行 | 初期开始学习“Hello World!" | 不知道如何开始编译 |
第六周 | 10小时 | 27行 | 提问的智慧及编译器的下载 | 编译格式问题 |
第七周 | 10小时 | 95行 | 流程结构类型及变量类型分类方法 | 代码分析不明白以及编译格式问题 |
第八周 | 13小时 | 115行 | 循环程序设计及Dev-C++编译运行等方法 | 用专业术语将代码解释出来及各种赋值运用 |
第九周 | 15小时 | 165行 | 四种流程结构及主调,被调函数,实参与形参的识别 | PTA作业中题目的编写 |
第十周 | 17小时 | 94行 | 分支结构的部分代码 | PTA作业的编写(真的好难) |
第十一周 | 14小时 | 76行 | switch语句的运用 | switch语句的灵活运用以及PTA作业的编写 |
第十二周 | 18小时 | 147行 | 循环结构程序设计及运用字串符处理代码题 | 有时候对于一些问题的意思很难懂,对于自己的解题速度也有很大问题 |
第十三周 | 11小时 | 113行 | 学习使用循环的嵌套及熟悉continue的使用 | PTA的题目,C语言知识点及考试的心态 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
1.在最后的一个月中,我发现自己的知识储备相当薄弱,希望自己在工作之余能够忙中偷闲,将闲暇时间为自己的薄弱科目补一下;
2.C语言真的学的有点崩溃,就像听物理一样,毫无感觉,时间一天一天的变少,无从下手;
3.也希望在最后的时间中能够扎实的学习好,不负当初对大学的幻想,虽然只是幻想,希望能够有一天能够将它实现,最后对自己说“加油吧!”