这个作业属于那个课程 |
这个作业要求在哪里 |
我在这个课程的目标是 |
这个作业在那个具体方面帮助我实现目标 |
参考文献 |
1.PTA实验作业
jmu-c-二进制转10进制
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例
11111111
输出样例
255
输入样例
34
输出样例
error input!
1.1.1数据处理
数据表达:
我用了整形变量sum,flag,字符型变量number,sum为转换之后的和,flag用于判断输入的是不是1或0,number为输入的字符型1或0,来储存二进制
数据处理:
定义变量sum来放转化后的值,flag来判断是不是二进制的数1或0,number用来放每个字符
while (number!='
')
{
输入number对应的字符
if number=='
' then end while
if number!='0'或者'1' then flag=0 end while
else sum=sum*2+number-'0'
end while
}
if flag=0 then 输出error input!
else 输出sum
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
11111 | 31 | 二进制11111转换成十进制为31 |
1010101 | 85 | 二进制1010101转换成十进制为85 |
3355 | error input! | 3355不是二进制 |
1.1.4 PTA提交列表及说明
提交列表说明
在dev c++上我出现过一下错误
答案错误:将输出error input!写在了循环内并且直接return结束了,使得每次输出都是error input!,后来将其移到循环外才得以正确
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,time,sum,n为井的深度,u为蠕虫一分钟爬的距离,d为休息时下滑的距离,time为爬出井的总时间,sum为蠕虫爬行的距离。
数据处理:
定义n,u,d,来分别代表井深,蠕虫每分钟爬行的距离和休息时下滑的距离,time用来统计时间,sum用来判断蠕虫爬行距离的变化
分别输入井深,蠕虫每分钟爬行的距离和休息时下滑的距离
while(1)
{
sum+=u
time++
if sum>n-1 then end while
sum-=d
time++
}
end while
输出时间time
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
15 4 3 | 23 | 如果井深为15寸,蠕虫每分钟爬行4寸,休息时下降3寸,则需要23分钟才能爬上去 |
10 5 2 | 5 | 如果井深为10寸,蠕虫每分钟爬行5寸,休息时下降2寸,则需要5分钟才能爬上去 |
9 5 4 | 9 | 如果井深为9寸,蠕虫每分钟爬行5寸,休息时下降4寸,则需要9分钟才能爬上去 |
1.2.4 PTA提交列表及说明
提交列表说明
部分正确:在while的后面写了一个终止条件,导致和循环体有矛盾,导致一部分错了,后来将其改为1才正确
1.3 整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由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.3.1数据处理
数据表达:
我用了整形变量x,d,i,n,字符型数组s[100],x为输入的数字,d为光棍数,i累计光棍的个数,n为数组的下标,s[1000]用于累计d/x的每一个位
数据处理:
定义x为输入的值,d为光棍数,i为光棍的个数,n为数组的下标,数组s[1000]用于收集光棍数除以x的值
输入x的值
while(1)
{
i++
if n!=0或者d/x!=0 then s[n++]='0'+d/x
d=d%x
if d=0 then s[n]=' ' 输出字符串s和i end while
d=d*10+1
}
end while
1.3.2实验代码截图
1.3.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
43 | 2583979328165374677 21 | 所得的光棍数除以43为2583979328165374677且光棍的个数为21 |
21 | 5291 6 | 所得的光棍数除以21为5291且光棍的个数为6 |
1.3.4 PTA提交列表及说明
提交列表说明
部分正确:前面想着先将光棍数计算出来在来计算除后的数和光棍的个数,发现循环的次数太多了,使得运行超时,后来逆向思维从前面除起,一边除一遍记录,才得以解决
2.代码互评
(彭杰)同学的代码
我的代码
1.他的代码是先判断距井口的距离是否大于零来判断循环是否结束,在后面判断距离井口的距离和一分钟内爬的距离的大小,如果能爬上去则只加一分钟,不能则再加上休息的时间,后面来判断是否需要加上休息的距离,最后输出时间
2.我的代码是用一个sum变量来记录爬行的距离,如果sum加一分钟爬行的距离大于井口到其头部的距离则跳出循环,否则爬行的距离减去休息下降的距离,时间再加一分钟
3.相比之下,他的代码比我跟通俗易懂一些,他是整体思想,而我是一步一步来写的,下次写代码可以利用他的这种想法
(孙梦姣)同学的代码
我的代码
1.她的代码是按从左到右开始计算的,每次输出一个位的商,每次除完就将s赋值s/x的余数再将其乘十加1,相对于我们算除法的时候调下一位下来,直到s/x等于0为止,如果s%x=0了说明除尽了,再将光棍的个数输出出来,刚开始我是看不懂她i的作用是干嘛的,但是我认为没有必要用变量i,后来将她的代码敲出来再将i去除掉,发现是一样的,证明我的想法是正确的。
2.我的代码是按照平时计算除法的那种方式来计算的,i是每次循环调用的1的个数,每次除出一个数就记录一个数放在s数组内,随后将d赋值d/x的余数再将其乘十加1,相对于我们算除法的时候调下一位下来最后当d=0的时候就将数组最后一个数赋值字符串的终止符号,再输出字符串便是所要的商,和光棍的个数i。
3.总的来说他的代码和我的代码思路是相同的,但是她的数据无法储存起来,只能依次输出,但是我的可以,相比之下我的代码更好一些,
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 25小时 | 434行 | 常用的数学函数,if-else语句,for语句,自定义函数 | 自定义函数不会用一个算法来运算多个式子 |
第七周 | 8小时 | 142行 | 二分支结构和用char输入字符 | 对于字符型的代码有点看不懂,getchar与putchar还不明白怎么运用 |
第八周 | 12小时 | 343行 | 多分支结构,switch语句 | switch语句用得有点混乱,搞不清什么时候该结束 |
第九周 | 14个半小时 | 503行 | 自定义函数的用法,怎样用一个算法来运算多个式子 | if语句的嵌套不明白是怎样分支的 |
第十周 | 8个半小时 | 181 | do-while,while循环语句和continue语句 | continue不知道怎么去运 |
第十一周 | 28个小时 | 1246 | 一维数组和二维数组的基本运用 | 数组用的不够熟练,老是犯错 |
第十二周 | 10个小时 | 391 | 学会了整形数组字,浮点型数组和符型数组,学会了结构体struct的运用 | struct的嵌套容易搞混变量 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第四周 | 645 | 0 |
第五周 | 645 | 0 |
第六周 | 1275 | 434 |
第七周 | 2523 | 576 |
第八周 | 3371 | 938 |
第九周 | 5414 | 1441 |
第十周 | 6930 | 1622 |
第十一周 | 9584 | 2868 |
第十二周 | 13222 | 3259 |
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.这周自己学习了数组和结构体,数组是基本会用了,但是结构体还只是会最基本的而已,敲书上的结构体嵌套的时候不明白代码的意思,看的不是很懂,不过在刷题的过程中将结构体数组和混合结构体学会了。
2.越到后面问问题的人就几乎没有了,我不知道是我的原因还是他们已经会了,我也不知道这是好事还是坏事,我有点困扰,因为我觉得可能是我自己的问题,可能是我自己哪里出了问题。
3.我觉得重点要转移到掌握编程的思路和基本算法上来,我发现在刷题的时候有好多题目都是看懂了之后没有思路,想不到要我怎样去写这个题目,我觉得现在我应该去找一些经典例子,想到一个思路,就要按自己思路把它写完,让自己了解为什么我要这样写。