问题 | 回答 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 能够自主开发出一个软件,拥有用户并能够维护程序运行 |
这个作业在那个具体方面帮助我实现目标 | 掌握了break语句,continue语句,do-while语句,以及循环结构的嵌套 |
参考文献 |
PTA实验作业
1.1jmu-c-二进制转10进制
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!
1.1.1数据处理
数据表达:使用了sum,i,都定义为整型,变量er定义为字符型
数据处理:
sum用来表示二进制转换为十进制的数,i用于辅助判断,er为二进制符 while(判断输入是否为回车) { if(判断是否输入为二进制符'1'或'0') { 如果不是,则给i赋值为0 并跳出循环 } else { 将二进制数转换为十进制数,并由变量sum接收结果 赋值i为1 } } if(判断i是否为0) { yes,则输出“error input!” } if(判断i是否为1) { yes,则输出sum }
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
111111 | 63 | 输入为二进制数 |
66 | error input! | 输入不为二进制数 |
1.1.4PTA提交列表及说明
说明:前期解这道题的思路是打算用除以2取余的方法去判断二进制数,结果发现这个想法有点错的离谱,后根据其他几位助教的提示用判断字符的方法去判断二进制数解决了这道题
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,move,rest,distance,都定义为整型
数据处理:
n,u,d为输入的三个数据,move用于储存蠕虫移动的时间,rest用于储存蠕虫休息的时间,distance为距离地面的距离 while(ditance不为0) { move移动的时间加一分钟 距离减少u if(判断distance是否小于等于0) { yes,则跳出循环 } 休息时间rest再增加一分钟 否则下滑d,distance+d } 输出总时间,move+rest
1.2.2实验代码贴图
1.2.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
2 2 1 | 1 | 蠕虫刚好在一分钟爬到顶部 |
12 8 2 | 3 | 蠕虫最后一次休息后距离小于移动速度 |
1.2.4PTA提交列表及说明
说明:前期将if语句内条件写成了distance==0,让自己将变量改了一些莫名其妙的赋值,也运行正确了。然后在测试数据过程中,发现计算结果存在问题,然后将if条件改了一下(代码截图所示),将变量赋值回归正常,结果测试结果符合预期
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,i,n,a,都定义为整型
数据处理:
x为输入的整数,i用于循环并用于储存光棍位数,n为光棍数,a用于辅助判断 for(用变量i进行循环) { 增加光棍位数 if(光棍数是否大于输入x) { yes,则a赋值1 输出光棍数n除以整数x的值 } else if(a是否等于1) { yes,则输出0 } n=n%x用于判断是否整除 if(n被整除) { 跳出此循环 } } 输出光棍数位数
1.3.2实验代码截图
1.3.3造测试数据
数据输入 | 数据输出 | 说明 |
---|---|---|
33 | 3367 6 | 光棍位数为6 |
99 | 1122334455667789 18 | 光棍位数为18 |
1.3.4PTA提交列表及说明
说明:参考过代码,内容已理解
2.代码互评
c1
c2
myself
- 我的代码与c1不同点在于他用