C语言博客作业08
一、本周教学内容&目标
第4章 循环结构 4.1-4.2 熟悉使用while和do-while结构解决问题。
二、本周作业
问题 | 答案 |
---|---|
这个作业属于哪个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/9977 |
我在这个课程的目标是 | 掌握并熟练用代码解决实际问题 |
这个作业在哪个具体方面帮助我实现目标 | 重复写代码,运用多种语句,例如lf-else语句,for语句,switch语句,while语句等 |
参考文献 | C语言程序设计I和习题实验指导书,QQ浏览器 |
三、本周作业
1.PTA实验作业
请在此处列出自己的排名图片
1.1 ```题目:7-1 求整数的位数及各位数字之和:对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过10的9次方的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。```
- 1.1.1数据处理
数据表达:先分别定义整数、整数的位数及各位数字之和,即N,sum,figure.均为整型变量,由于题目中的N为正整数,所以再利用while语句,条件便是N!=0,最后输出。
数据处理
include<stdio.h> /编译预处理命令/
int main( ) /定义主函数main/
{
int N,sum=0,figure; /定义三个整型变量N-正整数,sum-N的位数,figure-N的各位数字之和/
scanf("%d",&N); /*调用scanf()函数输入正整数N*/
while(N != 0) /*调用while()语句输入N不等于0的情况,即判断循环条件*/
{
sum += N%10; /*求出各个位数之和*/
N=N/10; /*整除后减少一位个位数,组成一个新数*/
figure++; /*位数加一*/
}
printf("%d %d",figure,sum); /*输出两个函数*/
return 0; /*结束函数调用,返回函数值0*/
}
-
1.1.2实验代码截图
-
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
323 | 3 8 | 323的位数为3,各个数字之和为8 |
41 | 2 5 | 41的位数为2,各个数字之和为5 |
4444 | 4 16 | 4444的位数为4,各个数字之和为16 |
8 | 1 8 | 8的位数为1,各个数字之和为8 |
12345 | 5 15 | 12345的位数为5,各个数字之和为15 |
- 1.1.4PTA提交列表及说明
提交列表:
说明:1.部分正确:输出部分的位数figure和各数字之和sum顺序搞反了 2.编译错误:while里面的条件!写成了中文版的!。
1.2```题目:7-5 爬动的蠕虫 (15 分)
一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
输入格式:
输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。
输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。 ```
- 1.2.1数据处理
数据表达:先定义五个变量,分别是井口高度,上滑量,下滑量,蠕虫消耗时间,距离井底的距离,均为整型变量,再利用for语句和If-else语句输入条件,最后输出。
数据处理
include <stdio.h> /编译预处理命令/
int main() /声明主函数/
{
int N,U,D,time,S=0; /定义变量:井口高度,上滑量,下滑量,蠕虫消耗时间,距离井底的距离/
scanf("%d %d %d",&N,&U,&D); /*调用scanf()语句,输入三个变量*/
for(time=1; ;time++) /*利用for语句将时间从一开始加,依次加一*/
{
if(time%2 > 0) /利用If语句判断时间除以2取的余数 与0的大小/
{
S += U; /总距离的计算/
if(S>=N) /利用if语句输入距离井底的距离大于等于井口高度的情况/
{
break;
}
}
else
{
S-=D; /距离井底总距离的计算,S=S-D/
}
}
printf("%d",time); /输出输出蠕虫爬出井的时间/
return 0; /*结束函数调用,返回函数值0*/
}
-
1.2.2实验代码截图
-
1.2.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
10 3 2 | 15 | 2<3,蠕虫爬出井的时间为15分钟 |
11 4 3 | 15 | 3<4,蠕虫爬出井的时间为15分钟 |
12 3 1 | 11 | 1<3,蠕虫爬出井的时间为11分钟 |
12 3 3 | 无输出 | 3=3,不满足D<U |
12 3 4 | 无输出 | 4>3,不满足D<U |
13 4 2 | 11 | 2<4,蠕虫爬出井的时间为11分钟 |
- 1.2.4PTA提交列表及说明
说明:1.部分正确:该题目要求所说的时间不足1分钟按1分钟计,那应该最小为1,而我以为是0,从而导致部分错误。 2.编译错误:for语句中条件规定为三个,即使没有条件也应该打一个分号,而我没有打分号,以为没有必要。
2.代码互评
2.1模板一
差异:1.该同学定义了多种变量,而我只定义了三个主要变量,即正整数N、位数figure、各个位数之和sum; 2.该同学运用的是do-while,而我是while语句,我觉得该同学的do-while语句更加严谨,先执行一次循环体,再进行N!=0的情况。 3.该同学是利用多设置的变量作为中间变量间接输出结果,而我是直接利用表达式得出结果,我的更快捷一点。
2.2模板二
差异:1.最明显的差异是该同学不仅运用了If语句,还运用了我们最近讲的while语句,而我运用的是for语句.虽然我的看起来简单,但该同学的代码更容易懂。 2.一开始我是以n=0作为for语句的条件1,而该同学首先定义的就是N=1。
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 4/h | 150 | 学会了输入输出字符 | 如何去定义和运用Markdown格式 |
第二周 | 12/h | 300 | 知道定义变量和表格的制作及Markdown格式的运用 | 运算符怎么输入 |
第三周 | 15/h | 396 | 学会了折线图的制作和lf-else语句的运用及多种运算符的使用 | 怎样才能使输入代码更加简便,有没有惯用的 |
第四周 | 13/h | 350 | for的循环结构 | 各种情况下各种变量的灵活运用 |
第五周 | 12/h | 370 | 用代码输入生成乘方表和阶乘表 | 不知道该定义多少个量 |
第六周 | 16/h | 400 | 字符型数据类型和逻辑与关系运算符 | 做了PTA上面的几个编程题,感觉有的题目自己看不懂,不知道如何写表达式 |
第七周 | 9/h | 310 | 多支结构switch语句 | 不知道该对谁应用switch语句,题目意思转化成代码不知如何表达 |
第八周 | 15/h | 410 | while与for语句使用的区别及do-while的使用 | 解决问题没有好的逻辑思维能力 |
3.2 累积代码行和博客字数
3.3 学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
老师在课程讲的内容你可能以为都听懂了,实际并没有,因为你并不会用,或者说变了一个题目你就不会用之前的方法解决,所以在这门课上,我们必须做到课前预习,课上认真,课后复习并练习,特别是反复练习,绝对不可少,这也就是我们为什么和别人本来是同一个起跑线,到后来落后的原因之一。
`