这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I作业08 |
我在这个课程的目标是 | 熟练使用C语言来编程 |
这个作业在那个具体方面帮助我实现目标 | 熟悉使用while和do-while结构解决问题 |
参考文献 | 百度文库.百度文库 |
1.PTA实验作业
1.1 题目名1
一条蠕虫长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,N为井的深度,U为蠕虫爬的长度,D为蠕虫下滑的长度,time为蠕虫所爬行的时间。
伪代码
include<stdio.h>
int main()
{
定义了整形变量N(井的深度)U(蠕虫爬的长度),D(蠕虫下滑的长度),time(蠕虫爬的时间)
scanf("%d%d%d", &N, &U, &D);
while (井的深度> 0)
{
if (井的深度 > 蠕虫爬的长度) {
time += 2;
}
else
{
time += 1;
}
if (井的深度 <= 蠕虫爬的长度) {
N = N - U;
}
else
{
N = N - U + D;
}
}
printf("%d", time);时间按照十进制化为整形输出蠕虫花的时间
return 0;
}
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
15 4 2 | 13 | 井深为15寸,蠕虫每分钟爬行4寸,休息时下降2寸,则需要13分钟才能爬上去 |
18 4 2 | 15 | 井深为18寸,蠕虫每分钟爬行4寸,休息时下降2寸,则需要15分钟才能爬上去 |
20 8 2 | 5 | 井深为20寸,蠕虫每分钟爬行8寸,休息时下降2寸,则需要5分钟才能爬上去 |
1.2.4 PTA提交列表及说明
提交列表说明
编译错误:没有意识到蠕虫的头部到了井的就不要在休息了
2.2题目名2
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
输入样例1:
11111111
输出样例1:
255
输入样例2:
34
输出样例2:
error input!
1.2.1 数据处理
数据表达:定义了字符型变量ch,整形变量a.
include<stdio.h>
int main()
{
定义了字符型变量;
定义了整形变量a等于零;
while (输入一个字符给ch, 获得的字符不是'\n'(回车符))
if ((ch - '0') == 1 || (ch - '0') == 0)(判断二进制字符)
a = a * 2 + (ch - '0');
else
{
printf("error input!");
return 0;
}
printf("%d", a);化为十进制整形输出a
return 0;
}
1.2.2 实验代码截图
(3)造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
101001010 | 330 | 二进制101001010对应十进制中0 |
2222222 | error input | 二进制2222222不是二进制字符 |
123456 | error input | 123456不是二进制字符 |
1.1.4 PTA提交列表及说明
部分正确:没有输出非二进制字符,所以导致答案部分正确。
2.代码互评
同学代码截图
自己代码截图
1.他比我多定义一个sum,是用来计算井底到蠕虫的距离的,而我则是直接计算蠕虫到井的顶部的距离。
2我计算时间是蠕虫爬的时间和下滑的时间,而他是计算蠕虫爬的时间。
同学代码截图
自己代码截图
1.我用的是while语句和if-else语句,而他用的则是switch语句。
2.他的switch语句用的表达式分别为x=2x+0,x=2x+1,而我则是用if ((ch - '0') == 1 || (ch - '0') == 0),而且我是用if-else语句进行判断二进制的,而他则是用switch语句判断是否为二进制。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第六周 | 8小时 | 220行 | 如何用 MinGW-w64 来编译C程序 | 无 |
第七周 | 16小时 | 378行 | 运用if,else语句 | 不太熟练if-else语句 |
第八周 | 20小时 | 341行 | 运用for循环语句 | 无 |
第九周 | 21小时 | 345行 | 学习了如何使用自定义函数 | 不太熟练 |
第十周 | 23小时 | 425行 | 熟悉并掌握多分支结构、字符型数据类型和逻辑运算符结构 | 各个运算符的意思还不太理解 |
第十一周 | 20小时 | 456行 | 熟悉并掌握分支结构switch语句 | 无 |
第十二周 | 25小时 | 430行 | 学会使用while和do-while结构解决问题 | 无 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
我们这周学习的是while语句和do-while语句,这是继for循环语句后学习到的2种语句,for循环语句是有循环次数确定的,while循环语句是用在不确定次数但是带有明确的循环终止条件,而do-while循环语句则是至少要执行一次。这是这周我的理解,使我对这三种语句的使用有了更清晰的认识,还有对字符的使用也熟练了很多,继续加油!