C语言I博客作业08

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-2/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11611
这个作业的目标 学会并熟悉循环结构,分清楚break与continue的区别,熟练运用嵌套解决问题
学号 20208999

1.PTA实验作业(20分/题)

1.1 7-4 一钱生多钱 (10分)

在日常生活中,我们常常需要将一些大额的人民币换算成零钱,已知我们有许多面值5元,2元和1元的人民币。
编程实现:输入我们需要兑换的金钱数,然后我们用这些面值5元,2元和1元的人民币来兑换,要求每一种面值都至少有1张,然后输出有多少种兑换方式。

1.1.1数据处理

数据表达:本题定义了x,count,j,m,k五个个整型变量,对x做格式化输入,count赋值为0,其余分别用于存储硬币数量。
数据处理:	for (int j = x; j > 0; j--) {
		for (int m = x / 2; m > 0; m--) {
			for (int k = x / 5; k > 0; k--){ 
				if (5 * k + 2 * m + j == x) {
					printf("five=%d,two=%d,one=%d\n", k, m, j);
					
				}
			}
		}
	}
用循环嵌套的递减来解决此问题,设置for语句三重递减循环,第一重定义j等于x,当j大于0时,j-1并进行第二重循环,m用于表示两分硬币数,k表示五分硬币数,最后从大到小排序输出。

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
8 five=1,two=1,one=1 零钱数为最小极限值
100 five=1,two=1,one=93 零钱数为最大极限值
five=1,two=2,one=91
....
13 five=1,two=1,one=6 实验样例
five=1,two=2,one=4
five=1,two=3,one=2
five=2,two=1,one=1

1.1.4 PTA提交列表及说明

提交列表说明:

答案错误:我的输出样式与题目中的要求不符合,恰好相反。
处理方法:将三重循环的每个for语句重新排序,将第三重提到第一重,第一重提到第三重。
格式错误:输出的大小写与符号与题目不符
处理方式:将题目要求复制上去

1.2 7-5 幸运彩票 (15分)

彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。

1.2.1 数据处理

数据表达:定义了n,sum1,sum2整型变量,a,b两个字符型变量,对n输入,用getchar输入字符,对sum1,sum2赋值为零
数据处理:while (n--)
	{
		int sum1 = 0;
		int sum2 = 0;
		for (int i = 0; i < 3; i++)
		{
			scanf("%c", &a);
			sum1 += a;
		}
		for (int i = 0; i < 3; i++)
		{
			scanf("%c", &b);
			sum2 += b;
		}
		if (sum1 == sum2)
		{
			printf("You are lucky!\n");
		}
		else
		{
			printf("Wish you good luck.\n");
		}
		getchar();
	}

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
2 实验输入样例
233008 You are lucky!
123456 Wish you good luck.
2 6个数全为0
000000 You are lucky!
222333 Wish you good luck.

1.2.4 PTA提交列表及说明


提交列表说明:

答案错误:在对定义的字符a做格式化输入时没有用%c而是用了%d

2.代码互评(5分)

同学代码:


本人代码:

  • 不同点:1.同学主要用for的嵌套循环来解决问题,而我先用了while的递减再用for嵌套循环解决问题
    2.我定义了字符型变量与整型变量来解决问题,同学定义了无符号的整型变量与数组来解决问题。
    3.我将每位数用字符输入后储存在整型变量内进行判断,同学利用余数相加储存来判断结果

3.学习总结(15分)

3.1 学习进度条(5分)

周/日期 这周所花时间 代码行 学到的知识点简介 目前比较疑惑的问题
第一周/11.2-11.8 15h 350 学习了for循环结构 无
第二周/11.9-11.15 21h 480 学习了自定义函数的调用 无
第二周/11.16-11.22 35h 540 学习了if else分支结构,字符型定义 无
第四周/11.23-11.29 46h 660 学习了switch语句 无
第五周/11.30-12.6 50h 780 学习了while语句与do while语句 在while内镶嵌其他语句
第六周/11.7-12.13 60h 830 学习了嵌套循环,认识了continue和break的区别 在嵌套循环的用法

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

跳出多重循环的方法:1. 使用goto

  1. 写成函数 return
  2. 直接修改外层循环条件
  3. 在外层循环设置判断条件
  4. 在大循环后面判断标志加入break

以上内容在CSDN论坛中查阅得知

3.3.2 学习体会

  • 作业越来越难了,空闲时间多看看书学习,练习代码能力
  • 每天都要打一段时间的代码,可以经常看看视频教学
  • 要多去参考资料,打代码不能只是照猫画虎,那样毫无作用
posted @ 2020-12-13 20:14  rainofsummer  阅读(120)  评论(12)    收藏  举报