这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | C语言I作业08 |
我在这个课程的目标是 | 希望能够在学完后能够自己做出一个C语言的小游戏 |
这个作业在那个具体方面帮助我实现目标 | 熟悉循环结构的使用 |
参考文献 | C语言程序设计 |
1.PTA实验作业(20分/题)
1.1(7-3) jmu-c-二进制转10进制
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2
34
输出样例2:
error input!
1.1.1数据处理
数据表达:此题我定义了一个字符型变量ch;用于对二进制数的各位数的逐个输入;还定义了一个整型变量下,并对其赋值为0,初始化变量;
数据处理:
伪代码: 定义字符型变量ch;和整型变量n,并对其复制为0; while(录入字符并判断输入的字符是否为回车键) if(输入的字符为1或0) { 二进制转换为十进制的公式 } else//如果不是0或1 { 输出“error input!”并返回0值 } 输出转换的十进制数 返回0值
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
111111111 | 511 | 大于八位数 |
11111111 | 255 | sample1等价 |
34 | error input! | sample2等价 |
1.1.4 PTA提交列表及说明
- 编译错误:main写出mian,stdio写成stido(。。。这个问题打快了就会出现)
- 部分正确:两次的部分正确都是因为我之前用的是定义整形变量的方法解的,每次都是在测试点三的地方错误,我怀疑是因为整型变量只能输入八位数,超过八位数就测试不出了,最后是换成字符型变量才解决的问题
1.2(7-5)爬动的蠕虫
一条蠕虫长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,并对time进行赋值为0,对其初始化;其中N代表的是一口深为N寸的井;U代表的是蠕虫每1分钟可以向上爬U寸;D代表的是休息的过程中蠕虫下滑了D寸;time为总共蠕虫爬出水井所需的时间
数据处理:
定义整型变量N, U, D, time;并对time进行赋值为; 输入N,U,D的值 while(N是否等于) { N-U; 时间+1; if(N小于0) 跳出循环; N+D; 时间+1; } 输出时间; 返回0值;
1.2.2实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
12 3 1 | 11 | sample等价 |
12 2 1 | 21 | |
12 12 12 | 12 |
1.2.4 PTA提交列表及说明
运行超时:1.if中的判断语句写成了N=0
2.time没有赋值
1.3(7-6)整除光棍
这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由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数据处理
数据表达:此题我定义了四个整型变量n,i,x,a;并对x,a进行赋值为0,对其初始化;其中i作为计数器的作用,记录光棍数有多少位,n是读入的整数;x为数据处理时的中间参量;a是作为一个标志值确定数据的走向
数据处理
定义四个整型变量n,i,x,a;并对x,a进行赋值为0,对其初始化 读入n的值; for(将i赋值为1;;i自增) { 对于光棍数逐个位数的往上增减; if(光棍数大于输入值) { 将a的值赋为1; 输出x除以n的整数部分; } else if(a==1) { 输出0; } 将x重新赋值为x对n取余的值; if(x等于0) 跳出循环; } 输出i的值; 返回0值;
1.3.2实验代码截图
1.3.3造测试数据
输入 | 输出 | 说明 |
---|---|---|
31 | 3584229390681 15 | sample等价 |
1 | 1 1 | 最小x |
1.2.4 PTA提交列表及说明
这个题目因为比较难,所以我是先在vs上写的,故一次正确,我说一下我在vs上写的时候遇到的问题
- 编译错误:因为每次打得有些快所以总是出现把scanf错输入成scnaf,总是出现在这样的问题,这就是个大问题了,不应该只图快,要每次都能写好。
2.代码互评
王海靓同学代码:
黄添博同学代码:
我的代码:
不同点
- 我与王海靓同学的代码不同点主要是在对时间的计算方式上我是直接定义了一个时间time对其进行两次自增的运算,而王海靓同学是定义了两个变量move和rest,相加才是最终的时间,如果说是空间使用更小的话我的代码应该会好一点
- 黄添博同学的则是先定义了一个l作为爬行的总路程,然后用总路程在不同时刻的大小与井的深度作比较
相同点:总的来说我们的代码格式都差不多,可能是这个题目比较简单,所以思路都是这样的
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 20小时 | 372 | if-else语句和数学函数 | 暂无 |
第七周 | 10小时 | 226 | 分支结构 | 暂无 |
第八周 | 12小时 | 110 | for循环结构 | 暂无 |
第九周 | 16小时 | 200 | 函数的声明,定义和调用 | 暂无 |
第十周 | 20小时 | 323 | 分支结构,字符型数据类型,ASCII码,逻辑运算符 | 对于字符型数据类型的运用还是不熟练,需要多加练习 |
第十一周 | 18小时 | 788 | 分支结构,switch语句,简单的数组的使用 | 对于数组的了解还是不够,下周还是要多加学习 |
第十二周 | 22小时 | 346 | 循环结构,while循环和do-while循环 | 数组和结构体的知识有待加强 |
3.2 累积代码行和博客字数
3.3学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这一周题目刷的少了点,一方面想放松一下,另一方面这周更多是的时间使用在了看书上,现在在往后面赶学习进度,同时慢慢开始python的学习,为以后做准备,下周开始继续刷题,同时python也不能落下