一、表格
| 问题 | 答案 |
|---|---|
| 这个作业属于那个课程 | C语言程序设计II |
| 这个作业要在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9976 |
| 我在这个课程的目标是 | 深入了解C语言,争取掌握更多的数据类型及结构,熟练地编译有效代码 |
| 这个作业在那个具体方面帮助我实现目标 | 运用新的循环while结构来解决for循环解决不了的问题。 |
| 参考文献 | C语言程序设计、百度 |
二、本周作业
1. PTA实验作业

1.1 题目名1
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!
1.1.1 数据处理
数据表达:字符型变量char(n)、整型变量int(sum),sum的初始值赋为0,n用于接收输入的值。
数据处理:
定义变量n放字符,sum用来放输出的十进制的数
输入字符
while(n!='
')
首先判断输入是否是 回车,不是就进入循环
if(n=='
')
break;
如果输入是 回车,就跳出
if(n!='1'&&n!='0')
printf("error input!");
如果输入的不是二进制就 输出错误
else
sum=sum*2+n-'0';
输入的是二进制,就计算其对应的十进制
输出十进制
1.1.2 实验代码截图

1.1.3 造测试数据
| 输入 | 输出 | 说明 |
|---|---|---|
| 11111111 | 255 | 验证题目数据 |
| 34 | error input! | 验证题目数据 |
| 10 | 2 | 简单的二进制 |
1.1.4 PTA提交列表及说明

- 部分正确: 输入值不是二进制字符时答案是对的,但是二进制答案就错了。我只在while上边有一个输入,while语句中最下边应该再有一个输入语句。
1.2 题目名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 数据处理
数据表达:整型变量int(N,U,D,t),N,U,D是输入的值,t的初始值赋为0.
数据处理:
定义N,U,D,t=0分别用来放需要爬的高度、上爬的高度、下滑的高度、和完成所用时间,
输入需要爬的的高度、上爬的高度、下滑的高度
while(N>0)
判断需要爬的高度是否大于零,大于零则进入循环
if(N>U)
t=t+2;
如果要爬的高度比一次上爬的高度大,则一次时间加两分钟
else
t++;
否则加一分钟
if(N>U)
N=N-U+D;
如果要爬的高度比一次上爬的高度大,则计算还要爬的高度,一定要加上下滑的高度
else
N=N-U;
否则直接计算
输出时间
1.2.2 实验代码截图

1.2.3 造测试数据
| 输入 | 输出 | 说明 |
|---|---|---|
| 12 3 1 | 11 | 验证题目数据 |
| 25 5 2 | 15 | 随机值 |
| 45 8 3 | 17 | 随机值 |
1.2.4 PTA提交列表及说明

- 编译错误:换了while语句,没有再用数学公式,把N当成虫子还需要爬的距离来循环运算。
- 部分正确:这也只是改进了数学公式,依然有一个测试点是错的。
- 部分正确:只使用了if-else结构和简单的数学公式算的,没有考虑到复杂的情况。
2. 代码互评
自己代码①

同学代码①

评论:
- 这道题我们的思路是一样的,但是方法有些不同,有两点不同的。
- 第一点不同是她比我多设置了一个变量h,作为还需要爬的高度。而我是直接把N当成了要爬的高度。
- 第二点不同是关于if-else的使用,她用了一个if-else把时间和剩下的高度一起表示。而我是用了两个if-else分别表示时间和距离。
- 感觉同学的代码会更好一些,毕竟只用了一个if-else,两个变量同时计算。
自己代码②

同学代码②


评论:
- 这两份代码长度不太一样,我的较短她的较长。但我觉得该同学的代码比我的要好一些。
- 该同学使用了三个if-else语句比我多一个,他先是设置了x=1的情况作为第一种输出,在最后进行判断输出。而我是直接在前面就输出了。
- 以上两种不同的输出导致了输出接口不一样,我有两个输出接口,同学只有一个。单个输出接口比较好,不容易出错。
3. 学习总结
3.1 学习进度条
| 周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较困惑的问题 |
|---|---|---|---|---|
| 1/9-21 | 2天 | 30 | 初步接触编程,学习编译Hello,World! | 无 |
| 2/9-30 | 2天 | 20 | 学习了浮点型变量,及温度转换 | 无 |
| 3/9-15 | 3天 | 76 | 使用分段函数了解到if-else语句以及数据类型 | 对于定义数值还是不太清楚 |
| 4/10-16 | 3天 | 100 | for语句 | for循环进行中不清楚循环的细节 |
| 5/10-24 | 3 天 | 155 | 学习到了自定义函数 | 自定义函数的具体定义过程,实参形参有些迷惑 |
| 6/11-1 | 3天 | 250 | 学习使用if-else与for语句的嵌套,初步了解了字符型变量 | 对于字符型变量不是很懂,不明白其作用 |
| 7/11-7 | 2天 | 200 | 这周学习了新的分支结构switch结构,这也适用于选择的情况,其作用类似于if-else。 | switch后面的变量表达式和case后的常量表达式弄不清。 |
| 8/11-15 | 3天 | 150 | 学习了新的循环结构while语句和do-while语句,和for语句有不一样的地方,但其作用是一样的,他们循环的条件不一样。 | 不能熟练运用while语句去解决实际问题 |
3.2 累计代码行和博客字数

3.3 学习内容总结

3.4 学习体会
- 这周学习了循环结构while和do-while语句,这个循环语句和for循环语句作用是一样的。但是他们的循环的条不一样,for需要有循环次数,while只要有循环终止条件即可。do-while是先运算一次,再进行判断是否执行。
- 这周知识感觉理解了,但是一做题就感觉不会用,所以这也可能是掌握的不是很彻底。在做PTA时感觉有些题挺难的,具体不知道怎末判断循环条件,也有不理解题意的原因。
- 随着学习的知识越来越多,现在感觉有些力不从心了。要调整好自己,再多刷些题来弥补自己的不足。