C语言I博客作业08

||
--|:--:
这个作业属于那个课程|C语言程序设计II
这个作业要求在哪里|作业
我在这个课程的目标是|进一步了解C语言及其结构
这个作业在那个具体方面帮助我实现目标|了解了for,while,do-while循环之间的区别
参考文献|C语言程序设计(第3版),百度

1.PTA实验作业

1.1 整除光棍

这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。

输入格式:

输入在一行中给出一个不以5结尾的正奇数x(<1000)。
输出格式:

在一行中输出相应的最小的s和n,其间以1个空格分隔。

输入样例:

31

输出样例:

3584229390681 15

1.1.1数据处理:

数据表达:定义了x,s,n;x是用户输入的值,s,n通过赋值;它们都是整形变量。
数据处理:

x是一个不以5结尾的正奇数x(<1000),s表示x乘以s是一个光棍,n是光棍的位数;
	while (使初始光棍数/x的余数大于1) {
		逐渐增加光棍的位数
			}
	
	do {
            判断光棍数%x是否=0;
		如果不是,继续逐渐增加光棍的位数;

	} while (循环条件为光棍数%x不等于0);

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
41 271 5 41是被光棍所除的正奇数,271是表示271*41=最小光棍数,5是光棍的位数
17 65359477124183 16 17是被光棍所除的正奇数,65359477124183是表示65359477124183*17=最小光棍数,16是光棍的位数
39 2849 6 39是被光棍所除的正奇数,2849是表示2849*39=最小光棍数,6是光棍的位数

1.1.4 PTA提交列表及说明

我在vs上面运行无误后复制粘贴。

1.2 爬动的蠕虫

一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?

这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。

输入格式:

输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100

输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。

输入样例:

12 3 1

输出样例:

11

1.2.1 数据处理

数据表达:定义了N, U, D,sum,time;N, U, D,是用户输入值,sum用来记蠕虫距井口的距离,time用来记录蠕虫所爬的时间;N, U, D,sum,time,都是整形变量。
数据处理:


	while (判断蠕虫所爬距离与井的高度) {
            分别记录蠕虫所爬的距离与时间;
		if (判断蠕虫所爬距离与井的高度) {
			分别记录 蠕虫所爬的距离-休息时所滑的距离与蠕虫所爬的距离;	
		}
	}

1.2.2实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
187 4 2 185 187是井的高度,4是蠕虫1分钟所爬的高度,2是蠕虫休息1分钟所滑落的高度,185是蠕虫的头部到达井的顶部所花的时间
9 2 1 15 9是井的高度,2是蠕虫1分钟所爬的高度,1是蠕虫休息1分钟所滑落的高度,15是蠕虫的头部到达井的顶部所花的时间
46 3 1 45 46是井的高度,3是蠕虫1分钟所爬的高度,1是蠕虫休息1分钟所滑落的高度,45是蠕虫的头部到达井的顶部所花的时间

1.2.4 PTA提交列表及说明

部分正确:我把sum < N错写成了sum <= N,忽略了蠕虫的头部到达了井的顶部,蠕虫就完成任务了这一条件,后来我把=删除后就答案正确了

1.3 求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10^9
​​的正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

321

输出样例:

3 6

1.3.1数据处理:

数据表达:定义了变量n, m,count;n是用户输入值,m和count通过赋值得到;都是整形数据。
数据处理:

        定义变量
	do {
		通过求余数的方法,计算各位数字之和;
		逐步减少n的位数;
		通过循环累加位数;
	} while (循环的条件是n不为0)
            输出数据

1.3.2实验代码截图

1.3.3 造测试数据

输入数据 输出数据 说明
4323 4 12 4323是输入的正整数,4是输入的位数,12是各位数字之和
99999 5 45 99999是输入的正整数,5是输入的位数,45是各位数字之和
131 3 5 131是输入的正整数,3是输入的位数,5是各位数字之和

1.3.4 PTA提交列表及说明

我在vs上面运行无误后复制粘贴。

2.代码互评

同学代码截图:

同学代码截图:

自己代码截图:

1.第一个同学的代码比我的代码多定义了一个变量,我认为他的代码中a完全可以用number取代,另外该同学用的是while循环,我用的是do-while循环,对于这个题目来说只是风格不同而已,没有很大的差别;
2.第二位同学虽然定义的变量和我的一样,但我感觉他的代码比第一位同学的代码更复杂一些,我认为可以改进的地方有:if可以用while取代,然后再把else改为if(N==0),还有就是他的两个printf可以合并;
3.总体来说:我们编写代码,尽量用最简单的代码编出最实用的程序,用自己所学的知识编好代码,因为每个人都有每个人的习惯,所以编写代码时按照自己的思维来写是最好的。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第八周 17h 121 定义两个变量,对for循环有更进一步的了解 对于基本知识还是不够扎实
第九周 20h 178 while循环,定义和调用函数 对于定义和调用函数还是不怎么了解
第十周 18h 143 for循环和if-else语句之间嵌套 读完题目后大脑里面没有相应的代码
第十一周 17h 193 switch可以处理多分支问题 对于编程题不能很快的写出代码
第十二周 15h 156 新学了do-while循环,了解了for,while,do-while循环之间的区别,并对在相应环境用最合适的循环有了初步认识 题目做的比较慢,一些基本知识还是不够扎实

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

1.对于自己学到了新的知识感觉很开心,觉得自己以后每天都尽量学到一些知识,自己的作业水平及有关电脑方面的知识一定会提高;
2.做PTA时,我觉得应自己先写代码,然后运行,自己实在找不到错误,然后再到网上去搜相应的题目,经过对比找到自己的错误,这样自己会一步一步前进;
3.我希望自己在以后的时间里多利用一些零碎时间去学习有关像编程,网页设计,PS,PR,之类的知识,提高自己的知识储存量。

posted @ 2019-11-15 17:57  -追梦少年-  阅读(337)  评论(9编辑  收藏  举报