C语言I博客作业09 PTA实验作业 代码互评 3.学习总结

问题 回答
这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 作业要求
我在这个课程的目标是 能够自主开发出一个软件,拥有用户并能够维护程序运行
这个作业在那个具体方面帮助我实现目标 加深理解break语句与continue语句的区别,及循环结构的嵌套的执行顺序
参考文献 CSDN技术社区

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

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实验代码贴图

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

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提交列表及说明

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

说明:

  • 其中出现格式错误,未注意count需要输出到下一行
  • 该题需要主要循环结构嵌套的执行顺序

1.2找完数

所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数mn之间的所有完数。

输入格式:

输入在一行中给出2个正整数mn(1<mn≤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实验代码贴图

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

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提交列表及说明

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

说明:

  • 完数的定义是它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。(在对完数的理解上花费了时间。。)
  • 开始没有想到用辅助判断来判断没有完数的情况

代码互评

(柏朝晖同学)c1

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

(张梦颖同学)c2

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

myself

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

  • 在处理数据四舍五入的问题上,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累积代码行和博客字数

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

3.3学习内容总结和感悟

3.3.1学习内容总结

C语言I博客作业09
PTA实验作业
代码互评
3.学习总结

3.3.2学习体会

  • 在学习的过程中我已经感受到了与其他助教们的差距,我想很大一部分原因是自己没有抽出更多的时间来进行语言的学习,但也不能给自己泄气,自己要找时间再不断的提升自己
  • 在老师的课堂上,发现还是有部分同学没有融入进去,当没被叫到回答问题时候,有一种事不关己的态度,也希望老师能够对代码解答环节的点名更加的随机性,让每位同学都有讲解的可能