C语言I博客作业09

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I博客作业09
我在这个课程的目标是 熟练掌握C语言
这个作业在哪个具体方面帮助我实现目标 学会了如何去使用for嵌套来做编程题,熟悉了break、continue的使用方法,了解了字符型的输入
参考文献 Markdown基本语法

一.PTA实验作业

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)数据处理

 数据表达:
         用了整形变量x,fen5,fen2,fen1,count=0
         x是用户传入的要求计算零钱数额
         fen5,fen2,fen1,count=0分别用来保存用户要求输出的5分硬币数量,2分硬币数量,1分硬币数量和换法个数
数据处理:伪代码
 定义整型变量x,fen5,fen2,fen1,count=0; x为输入的钱数,fen5为5分钱的个数,fen2为2分钱的个数,fen1为1分钱的个数,count为多少种换法。
 
    输入用户要求的钱数x; 
    for(fen5=x/5; fen5>=1; fen5--)

        for(fen2=x/2; fen2>=1; fen2--)
    
            计算出一分硬币的个数
            if(fen1>=1) 
                输出5分,2分,1分硬币的个数和硬币总数 
                count换法累加 
        end for
    end for
    输出换法个数 

(2)实验代码截图

(3)造测试数据

输入数据 输出数据 说明
9 fen5:1, fen2:1, fen1:2, tatal:4 count : 1 最小x
99 最大x
88 随机试验
20 随机试验

(4)PTA提交列表及说明

提交列表说明

 1.答案错误:误将total打为tatal,开始没有看出来,以为是像第一题一样要左对齐在d前加了一个-2
 2.答案错误:误将total打为tatal,不应该将%d改为%-2d,将total改为tatal,将%d改回来后答案正确
 刚开始做的时候定义了一个x1用来保存输入钱数减去8后的数,后来发现这样定义太麻烦还要定义其他的数来储存减去8后即每个方法中的每种硬币的个数减一的数,而且完全没有必要这样子做,后面做博客园的时候发现变量x1忘记删除了,后来将x1删除又提交了一次截的图。

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)数据处理

 数据表达:
          用了整形变量n,m,i,j,sum,flag=0
          n,m是用户传入的要求找完数的范围
          i用来保存在n、m范围内的每一位数
          j用来保存从2开始每一个小于i的数,用来找因子
          sum用来保存一个数的所有因子和,用来判断数的因子和是否等于这个数
          flag立一个flag用来判断该数是否属于完数
数据处理:伪代码
 定义变量n,m,i,j,sum,flag=0,n和m为用户输入的数,i和j用于循环,sun用来保存数的因子和,flag用来判断该数是否属于完数

     输入m和n 
     for(i=m;i<=n;i++)
	     对sum初始化为1 
	     for(j=2;j<i;j++)
		     if(i%j==0) Then 
		         对sum加上j并赋值给sum 			
	     end for 
	     if(sum==i) Then 
		     输出“sum = 1” 
		     for(j=2;j<i;j++)
		    	 if(i%j==0) Then 
				     输出“ + 因子” 
		     end for 
		     输出\n用来换行 
		     将1赋值给flag 
     end for 
     if(flag==0) Then 
     输出None

(2)实验代码截图

(3)造测试数据

输入数据 输出数据 说明
6 28 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 取完数为边界
2 9999 最大范围
10 20 None 空集
6 6 6 = 1 + 2 + 3 6==6

(4)PTA提交列表及说明

提交列表说明

 一次性正确,第一次提交的代码多加了一个if(i==1) contiune;用来判断i是否等于1,如果i=1则结束本次循环,后来做博客园的时候发现题目中说了1<m≤n≤10000,所以if(i==1) contiune;完全多余,后来将这个去掉重新提交了一次截的图。

二.代码互评

同学(柏朝晖)代码 同学(杨宇)代码 自己代码

比较

 (1)第一份代码用了三层循环嵌套,第一层用来处理5分硬币个数,第二层用来处理2分硬币个数,第三层处理1分的;而我的代码是用两个for循环嵌套处理fen5和fen2,然后再根据剩余的钱计算出fen1的个数,再判断fen1>=1是否成立来确定是否能构成题目要求的一种分硬币的方法。相对来说他的代码因为第三层for使编译时间比我的长,相比较之下,我的代码更好一些。
 (2)第一份定义变量用的是数字5、2、1的英文字母而我自己用了题目输出示例的字母来定义变量,相对来说我的更容易见名知意。第二份的定义的变量也有点奇怪
 (3)第二份跟我最开始的思路一样,先将输入的钱数减去8,即减去每种硬币一个加起来的钱数。然后就可以只用两层for循环分别了处理5分的和2分的,1分的就可以直接用`x-5*i-2*m+1`来解决,而我的代码还用了一个if(fen1>=1)来判断是否能构成题目要求的一种分硬币的方法。相比较之下,她的代码思路比较好。

三.学习总结

1.学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第四周 7小时 100行 在屏幕上显示Hello World! 暂无
第五周 8小时 100行 求华氏温度对应的摄氏温度 暂无
第六周 30小时 200行 如何用 MinGW-w64 来编译C程序 暂无
第七周 24小时 300行 运用if语句完成各种数学程序 对于&&的用法不了解
第八周 24小时 300行 学会了for循环语句 暂无
第九周 24小时 300行 学会了如何去自定义一个函数 暂无
第十周 30小时 400行 学会了if-else语句的嵌入 对“(Y%100)这个表达式意味着当Y不能整除4时(Y%100的余数不等于0时)表达式为真”这句话不是很懂
第十一周 24小时 450行 学会了如何去使用switch语句来做编程题 暂无
第十二周 24小时 450行 学会了如何去使用while循环来做编程题 对字符型的输入不太了解
第十三周 26小时 372行 学会了如何去使用for嵌套来做编程题,学会了continue的使用方法 对字符型的输入和输出不太了解,对数组完全不了解

2. 累积代码行和博客字数

时间 博客字数 代码行数
第四周 510 100
第五周 510 200
第六周 1149 400
第七周 2027 700
第八周 3791 1000
第九周 5294 1300
第十周 6900 1700
第十一周 8614 2150
第十二周 10495 2600
第十三周 13019 2972

3 .学习内容总结和感悟

(1)学习内容总结

(2) 学习体会

 现在我的学习进度完全是跟着老师走的,而且老师上课讲的东西有时候还不能熟练运用,而别人早已经走到前面去了。对别人来说一个小时就能将PTA做完而我有时候做一个题目想3、4个小时还没有思路最后只能求助百度,我觉得我应该反思一下了。
 以后尽量多刷点题目扩展一下逻辑思维能力,有剩余时间的话提前预习一下数组,感觉很多题目都要用到这个东西。
 感觉调试有点难搞,每次机课作业都很赶,需要多练习一下,学好了调试以后就好找代码出现的错误了。

posted @ 2019-11-21 16:33  sun-梦  阅读(369)  评论(13编辑  收藏  举报