C语言I博客作业02
一:PTA实验作业
1.1
1.1.1:编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107093731891-43565327.png)
1.1.2::介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
- 数据表达:用了N,j,sum,k变量,N是赋的初始值,sum是求和的值,k是整型,double j是双精度浮点型。
- 数据处理:表达式:sum+=j/i; double x=i; i=j; j=j+x; 流程结构:for循环流程结构。
1.1.3:PTA提交列表及说明
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107100343540-2007955884.png)
- Q1:一开始不知道怎么表示分子,分母。
A1:经过反复尝试,将分子,分母定义为两个变量。
- Q2:对浮点数表示不清楚。
A1:通过书本知识和网上知识将浮点数理解清楚。
1.2
1.2.1:编写程序,据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107112000035-1806168043.png)
1.2.2::介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
- 数据表达:用了i,sum,A,B变量,i是赋的初始值,sum是求和的值,A,B是整型。
- 表达式:sum=A+B;if(A<=9&&A>=1&&B<=9&&B>=1)。流程结构:for循环流程结构。
1.2.3:PTA提交列表及说明
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107121811354-1792912868.png)
- Q1:题目完全无从下手,不知道怎么表示。
A1:通过进行for循环流程结构。
- Q2:对输出结果三个“Wang!”表示不了。
A1:对变量进行定义。
1.3
1.3.1:编写程序,如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107141036171-23832889.png)
1.3.2::介绍实现本题过程中,你的数据表达、数据处理是怎么做的。
- 数据表达:用了a,b,c变量,a,b,c是整型。
- 表达式: b=a+2;c=b%7;c=a+2。流程结构:if判断流程结构。
1.3.3:PTA提交列表及说明
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107140609841-462669351.png)
- Q1:对判断结构认识不清楚。
A1:从书上的例题了解判断结构,进行代码。
- Q2:对星期的范围没有定义。
A2:进行了1—7的范围定义。
二:阅读代码
#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define N 100005
#define ll long long
#define pi acos(-1.0)
int a[N],b[N];
int main()
{
int n,m,ans;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=1;i<=n;i++) scanf("%d",a+i);
for(int i=1;i<=m;i++) scanf("%d",b+i);
sort(a+1,a+n+1);
sort(b+1,b+m+1);
ans = 0;
int ii = 1,jj = 1;
while(ii<=n&&jj<=m)
{
if(a[ii]==b[jj])
{
ii++;
jj++;
ans++;
}
while(ii<=n&&a[ii]<b[jj]) ii++;
while(jj<=m&&b[jj]<a[ii]) jj++;
}
printf("%d\n",ans);
}
}
一开始看到这个代码就是懵逼。但是学习不就是迎难而上。以下是我看这个代码的收获。
- 了解了各种头文件,明白了不止有
- 明白EOF(end of file)是文件的结束,通常来判断文件的操作是否结束的标志,知道了EOF不是特殊字符,而是定义在头文件<stdio.h>的常量,一般等于-1。
- 更加深刻的认识了while结构和for结构的相互应用。
- 初步看到了代码应用和逻辑思维的结合。
- 对变量进行多次变化有点懵逼,但是也提供了我一个新的思维去理解代码的书写。
- 变量之间怎样联系,这种大幅度长的代码要多么细心也是我值得考虑的。
虽然理解这种代码很难,但是其中的好处是不少的,有许多许多的新东西等待着我们去发现,去想知道它是怎样表示的,它的意思是什么。
三:学习总结
3.1 学习进度条
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
八 |
15h |
346 |
了解代码的输入输出 |
变量的表示 |
九 |
25h |
541 |
进行变量计算,了解整型、浮点型 |
各个结构不清楚 |
十 |
40h |
749 |
对for结构的运用 |
对复杂问题的变量提供不全 |
3.2 累积代码行和博客字数
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107160612873-553363292.png)
![](https://img2020.cnblogs.com/blog/2180330/202011/2180330-20201107163135115-1432354550.png)
3.3 学习感悟
本周学习到了for结构,还需要巩固联系,一开始对各种变量的处理总是出问题,不知道变量之间的关系,对表达式的运算错误,代码打的太慢,问题还是太多,以后有空的话,多去看那些比较多的代码,然后通过各种查询去了解这个代码的结构。人生在勤,不索何获。