这个作业属于那个课程 |
这个作业要求在哪里 |
我在这个课程的目标是 |
这个作业在那个具体方面帮助我实现目标 |
参考文献 |
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,之类的知识,提高自己的知识储存量。