六小珏o

导航

C语言I博客作业08

问题 回答
这个作业属于哪个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977
我在这个课程的目标是 掌握并熟悉C语言的运用
这个作业在哪个具体方面帮助我实现目标 对代码编译更加熟悉,学习到了while语句,还有进制数的理解
参考文献 《C primer Plus》《C语言程序设计》《CSDN》《百度》《伪代码的写法》

1. PTA实验作业

1.1 jmu-c-二进制转10进制

题目内容

  • 输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!

1.1.1 数据处理

数据表达:定义两个整型变量n,s,其中n代表一个判断条件,初始赋值为0,s表示转化出的十进制,定义了字符型变量ch,表示输入的二进制数的每个位数
数据处理:while循环当ch不等于回车时执行,回车时跳出while语句,while中输入字符,用switch语句,当ch为0和1时,都执行同一条语句s=s2+ch-'0';由于是一个字符一个字符的输入,所以得出s后跳出switch但不跳出while,当二进制所有位数输完,按回车跳出while执行下一条,其他情况下,就比如有除0,1外的数字时,赋值n=1,就跳出switch,然后再回车跳出while,再根据if-else语句判断是error input!不属于二进制数。其中二进制转十进制的公式举例:二进制111转十进制是((12)+1)*2+1=7。
伪代码:

1.1.2 实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
11111111 255 示例
34 error input! 示例
567 error input! 非二进制
111 7 二进制

1.1.4 PTA提交列表及说明

  • 运行超时:开始把while条件写成while(1),后来询问同学时发现,这样就一直无法跳出while语句,然后把条件改为不等于回车,所以当回车时便可跳出while语句执行下一条

1.2 爬动的蠕虫

题目内容

  • 一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
    这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
    输入格式:
    输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。
    输出格式:
    在一行中输出蠕虫爬出井的时间,以分钟为单位。

数据表达:定义整型变量N,U,D,high=0,i,time=0;N表示井深,U表示每分钟上爬高度,D表示每次休息下滑高度,high表示爬的高度,i表示每两分钟所爬长度,时间表示所用时间
数据处理:因为题目是头碰到顶部任务完成,所以不计最后一次下滑的一分钟,当爬的高度加最后一分钟要爬的高度U小于井深时执行while语句,高度循环累加,时间没次循环加两分钟,while循环里代表的是除最后一分钟前所爬的高度,所以输出结果答案要把时间加上最后一分钟要爬的U的时间。
伪代码:

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
12 3 1 11 示例
32 3 1 31 较短距离
86 4 1 57 较长距离

1.2.4 PTA提交列表及说明

  • 多种错误:while循环条件我开始就写了当高度小于井深,忽略了最后一分钟不下滑到顶就算成功,所以把while条件改成了最后一分钟上爬的高度U加前面时间所爬高度小于井深时循环执行。
  • 答案错误:想到了条件,但是没注意答案也要加一分钟。

2. 代码互评

7-5题爬动的蠕虫

计科二班王璇代码

计科三班郭玲丽代码

自己代码

不同:

王璇:1.她用了for循环每分钟累加,我用的while语句每两分钟累加
2.她输出是时间减去下滑一分钟,我是加上上爬一分钟
3.她用取余为零来表示每分钟是上爬还是下滑,我直接用每两分钟上爬减下滑为爬行距离

郭玲丽:1.她的while条件是上爬距离小于井深,我是上爬距离加最后一分钟的U的距离小于井深
2.她用了if语句,把每分钟的运动距离分开来算,而我是两分钟一起
3.输出答案不同

3. 学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识简介 目前比较迷惑的问题
第一周 7天 39 学会用markdown语法写博客园,用PTA打代码 代码格式一无所知
第二周 6天 60 下载编译器,学到了提问的智慧 对编译器还是不了解
第三周 3天 121 分段函数的表达,if-else语句的用法 对各语法还是不了解,数学库函数有太多不知
第四周 3天 77 for循环语句,累加计算 对各语句还是不熟练
第五周 4天 82 函数题,自定义函数,while循环语句 不明白函数题的写法,有些数学题是真的难
第六周 4小时 120 学会了数组,对for循环有了进一步了解 思维容易混乱,不知道该怎么去顺解题思路和答案想不全面
第七周 2小时 112 学会了switch语法,对数组运用更进一步 switch语法还是不熟练,有些看得懂但是自己想不到怎么写
第八周 2小时 83 运用while语法,了解了二进制,学到%c表示字符型 对while语法并不是很熟练,伪代码不会写

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

这次作业二进制那个题用了挺长时间的,因为一开始都不知道二进制的意思是什么,问了同学自己也百度搜索了一下,差不多搞懂了什么是二进制后大概对公式有了一点概念,但是还是没有思绪,于是便参考了同学代码,就是一行一行看,然后不懂的再一行一行问,同学也很耐心的和我说,讲解也很清晰,让我能够看懂每一步的执行意思,还学到%c表示字符型,文字写完数据处理才发现要伪代码表示,因为觉得删了可惜,就加上了伪代码,虽然也许我那个伪代码并不正宗,但是以我的理解我尽力了,第五题呢,没时间就没有写了。每次做这个作业都觉得难搞,但是又总能做完后学到东西,还是希望自己以后作业可以早点做吧。

资料:二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号“0”,“1”的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。
二进制与十进制的换算
二进制转十进制
方法:“按权展开求和”
【例】:(1011)2 = 12^3 + 02^2 + 12^1 + 12^0 = (11)10
规律:个位上的数字的次数是0,十位上的数字的次数是1,……,依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,……,依次递减。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
——百度

posted on 2019-11-16 09:24  六小珏o  阅读(395)  评论(5编辑  收藏  举报