问题 | 回答 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 能够自主开发出一个软件,拥有用户并能够维护程序运行 |
这个作业在那个具体方面帮助我实现目标 | 加深理解break语句与continue语句的区别,及循环结构的嵌套的执行顺序 |
参考文献 | CSDN技术社区 |
PTA实验作业
1.1换硬币
将一笔零钱换成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.1.1数据处理
数据表达:使用了f1,f2,f5,count,money五个变量,都定义为整型
数据处理:
f1,f2,f5用于接收各类硬币个数,count为换法个数,money为输入零钱值 for(f5=money/5;f5>0;f5--) //5分钱硬币个数 for(f2=money/2;f2>0;f2--) //2分钱硬币个数 for(f1=money/1;f1>0;f1--) //1分钱硬币个数 if(f5*5+f2*2+f1*1==money) //判断硬币相加是否等于零钱 { 按格式输出结果 } 输出换法个数
1.1.2实验代码贴图
1.1.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
10 | fen5:1, fen2:2, fen1:1, total:4 fen5:1, fen2:1, fen1:3, total:5 count = 2 |
输入零钱可被5整除 |
12 | fen5:1, fen2:3, fen1:1, total:5 fen5:1, fen2:2, fen1:3, total:6 fen5:1, fen2:1, fen1:5, total:7 count = 3 |
输入零钱可被2整除 |
1.1.4PTA提交列表及说明
说明:
- 其中出现格式错误,未注意count需要输出到下一行
- 该题需要主要循环结构嵌套的执行顺序
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
输出样例:
6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14
1.2.1数据处理
数据表达:使用m,n,i,j,ws,pd六个变量,都定义为整型
数据处理:
m,n为输入范围,i,j用于判断完数,ws用来存放累加数,pd用于辅助判断 输入m,n for(i=m;i<=n;i++) { if(i==1) { 跳过后面步骤,进行下一次循环 } ws=1; //给ws赋初值 for(j=2;j<i;j++) { if(判断i是否能被j整除) { yes,则ws加上j } } if(判断ws是否等于i) { yes,则输出 for(j=2;j<i;j++) //此循环用于输出数据 { if(i能被j整除) { 输出数据 } } 输入一个完数进行换行 pd++; } if(pd==0) { 输出None } }
1.2.2实验代码贴图
1.2.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
1 5 | None | 范围内无完数 |
1 300 | 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 |
1-300内只存在6,28两个完数 |
1.2.4PTA提交列表及说明
说明:
- 完数的定义是它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。(在对完数的理解上花费了时间。。)
- 开始没有想到用辅助判断来判断没有完数的情况
代码互评
(柏朝晖同学)c1
(张梦颖同学)c2
myself
- 在处理数据四舍五入的问题上,c1的方法是将输入值判断分成奇数和偶数,若为奇数,则在数据处理后再+1来表示四舍五入,c2则更为巧妙,将循环条件中i赋初值为0,这样就能简便的进行四舍五入的运行,而我的则相对啰嗦且复杂,我将i赋初值为1,所以我需要将计算结果在原有的基础上加0.5来达到四舍五入的目的
- c1使用了if-else语句来进行奇数偶数判断,循环结构嵌套来输出字符打印方块,c2则使用一个循环结构的嵌套轻松将方块打印出来,我的则再进行了四舍五入后,再进行的画方块
3.学习总结
3.1学习进度条
周 | 这周所花时间 | 代码行 | 学到的知识简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第五周 | 8h | 56行 | 常量,变量和数据类型 | 无 |
第六周 | 12h | 89行 | 格式化输入函数scanf(),for循环 | 无 |
第七周 | 19h | 286行 | 分支结构 | 无 |
第八周 | 15h | 238行 | 函数的定义和调用 | 函数的定义和调用的基本用法 |
第九周 | 10h | 173行 | while语句,函数的定义和调用强化 | 被调函数返回值 |
第十周 | 20h | 312行 | 逻辑运算符优先级,定义和访问数组 | 逻辑表达式的运算 |
第十一周 | 11h | 189行 | switch语句,ASCⅡ码的了解 | 进制转换 |
第十二周 | 9h | 279行 | continue语句,循环结构的嵌套,do-while语句,条件运算符 | break语句与continue语句的区别 |
第十三周 | 9h | 201行 | break语句与continue语句的区别,循环结构嵌套的执行顺序 | 无 |
3.2累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
- 在学习的过程中我已经感受到了与其他助教们的差距,我想很大一部分原因是自己没有抽出更多的时间来进行语言的学习,但也不能给自己泄气,自己要找时间再不断的提升自己
- 在老师的课堂上,发现还是有部分同学没有融入进去,当没被叫到回答问题时候,有一种事不关己的态度,也希望老师能够对代码解答环节的点名更加的随机性,让每位同学都有讲解的可能