C语言I博客作业09

问题 回答
这个作业属于哪个课程 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学习体会

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