问题 | 回答 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | 作业要求 |
我在这个课程的目标是 | 快速的敲代码,制作出能使用的小软件 |
这个作业在那个具体方面帮助我实现目标 | 熟悉使用while和do-while结构解决问题 |
参考文献 | 百度,《C语言程序设计》 |
1.PTA实验作业
1.1 题目1:
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
1.1.1数据处理
数据表达:运用了字符型变量ch和整形变量sum,ch用char定义,sum用int定义,用来输出转化后的十进制数
数据处理:
while(使用ch=getchar输入字符型变量ch,并判断是否为回车字符,若不是则执行下列语句)
{
if(判断是否为二进制数)
如果是则用式子sum=sum*2+ch-'0'计算转化后的十进制数
else
不是则输出error input!
并返回给原函数
}
最后输出计算出的十进制数
1.1.2实验代码截图
1.1.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
101110 | 46 | 二进制数101110转化为十进制数等于46 |
11101 | 29 | 二进制数11101转化为十进制数等于29 |
01011 | 11 | 二进制数01011转化为十进制数等于11 |
1.1.4 PTA提交列表及说明
说明
1.多种错误:刚开始接触字符型变量的运算,所以并不熟悉怎么去编写代码,开始定义ch时用的int,用的scanf对ch进行的输入,也没有判断是否为回车符,导致出现了多种错误,后来逐步进行了百度,知道了定义字符型变量时应该用char,输入字符型变量时应该用ch=getchar,这是存储在系统文件中的
2.答案错误:使用式子sum=sum*2+ch-'0'计算时没有减去'0',弄不明白为什么要减去'0',通过观察别人的代码并别人在这里注释说明是要将字符型转化为整形
1.2 题目2:
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
1.2.1 数据处理
数据表达:用int定义四个整形变量N,U,D,time,其中N,U,D是题目的输入,time是用来存储计算的总时间
数据处理:
do(循环计算下列表达式)
{
将计算N-U的值赋给N
每计算一次蠕虫爬了1分钟,将time+1赋给time
此时if(判断N是否大于0)
若大于则将赋值之后的N值再进行N-D的运算重新赋给N
每计算一次蠕虫爬了1分钟,将赋值后的time+1重新赋给time
else
N值小于0则跳出循环
}while(若N值小于0则结束循环)
输出time的值
1.2.2 实验代码截图
1.2.3 造测试数据
输入 | 输出 | 说明 |
---|---|---|
30 5 3 | 27 | 井30寸高,蠕虫一分钟爬5寸,休息一分钟滑下3寸,需要27分钟爬出井 |
25 3 2 | 45 | 井25寸高,蠕虫一分钟爬3寸,休息一分钟滑下2寸,需要45分钟爬出井 |
50 7 4 | 31 | 井50寸高,蠕虫一分钟爬7寸,休息一分钟滑下4寸,需要31分钟爬出井 |
1.2.4 PTA提交列表及说明
说明:
我是现在Dev-c++上进行的编写,出现了答案错误,原因是在do-while的循环语句内计算N=N-U时,没有用if语句判断计算后的N值是否大于0,就直接开始计算N=N-D,这样会导致当计算N=N-U之后大于0的情况time多加了一分钟,观察运行后的结果后我便快速的发现了问题所在,当计算了N=N-D后N的值若小于0了应直接跳出循环
2.代码互评
同学代码截图
自己代码截图
1.该同学输入字符型变量依旧是用的scanf,之前我出现答案错误我以为字符型变量不能用scanf输入,但这位同学是对的,所以应该没什么影响
2.该同学很好的地方是把上星期学的switch语句用在了这里,用switch语句判断是否为二进制数,而我使用的if-else语句,不过我的代码相比他的也有更加简便的优点
同学代码截图
自己代码截图
与我的代码相比,可以看出其实这位同学定义了许多多余的变量,比如move与rest定义一个就行了,结果是一样的,然后还一个不同的地方就是他用的是while语句,而我用的是do-while语句,其他都是差不多的
3.学习总结
3.1 学习进度条
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第八周 | 15h | 143 | 学会了如何使用while和do-while结构解决问题 | for语句和while语句区别和使用范围 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
1.这周的PTA作业我感受到了一定的难度,虽然题目量不多,但我也花费了很多的时间,主要是开始时没看懂题目,经过别人一讲解才意识到原来是个简单题
2.理论课上没有听好讲,导致我对while和do-while的用法很不熟悉,很多题目用while语句会更简单,而我反而觉得for语句简单,因为我更熟悉for语句的用法,今后要多练习while语句的使用
3.机课上的学习内容我能在课堂上更加快速的完成,这说明我这周还是有进步的