一、表格

问题 答案
这个作业属于那个课程 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!='\n')
首先判断输入是否是 回车,不是就进入循环
if(n=='\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 学习体会

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