C语言l博客作业03

  • 2020 年 11 月 8 日
  • 笔记

1.作业头

这个作业属于哪个课程 计科三班
这个作业要求在哪里 掌握for循环
这个作业的目标 实现指定次数的程序设计
学号 20209023

1.PTA实验作业
1.1
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+… 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
1.1.1 实验代码截图

1.1.2 数据处理
数据表达:用了x,count,它们都是整型变量。用了a,b,c,factor,sum,它们都是双精度符点型变量。x的值通过输入,其他的值通过赋值。
数据处理:通过for循环,sum=sum+factor;a=a+b;
1.1.3 PTA提交列表说明

Q1:一开始出现内部错误。
A1:通过多次提及解决。
1.2
本题要求编写程序,计算平方根序列从1到N的和。
1.2.1 实验代码截图

1.2.2数据处理
数据表达:用了i,N,都是整型变量。用了s,是双精度符点型变量。N的值通过输入,其它变量通过赋值。
数据处理:通过for循环,数学函数。s=s+sqrt(i)
1.2.3 PTA提交列表说明

Q1:一开始格式输入错误。
A1:通过提示反复检查最终解决。
1.3
据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。
本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。
1.3.1实验代码截图

1.3.2数据处理
数据表达:用了整型变量i,A,B;A,B变量通过输入值。
数据处理:通过for循环。
1.3.3 PTA提交列表说明

本题问题不大。

2.阅读代码

include

include

include

include

include

include

include

define N 500005

typedef long long LL;
using namespace std;
int n ;
LL X[N] , Y[N] , Z[N];
char str[55];

LL cal(LL k)
{
LL sum = 0 , x;
for (int i = 1 ; i <= n; ++ i)
{
if (k < X[i]) continue;
x = min(k , Y[i]);
sum += (x – X[i]) / Z[i] + 1;
}
return sum;
}

void work()
{
n = 1;
X[n] = 0;
sscanf(str , “%I64d %I64d %I64d” , &X[n] , &Y[n] , &Z[n]);
if (!X[n]) return;
memset(str , 0 , sizeof(str));
while (gets(str) , *str)
++ n , sscanf(str , “%I64d %I64d %I64d” , &X[n] , &Y[n] , &Z[n]) , memset(str , 0 , sizeof(str));
LL l = 1 , r = 1LL << 33 , m;
while (l < r)
{
m = (l + r) >> 1;
if (cal(m) & 1)
r = m;
else l = m + 1;
}
if (l == 1LL << 33)
puts(“no corruption”);
else printf(“%I64d %I64d\n” , l , (cal(l) – cal(l – 1)));
}

int main()
{
while(gets(str))
work();
return 0;
}
其中包括许多函数,运用了条件语句,还有循环语句,和一些字符串的转换。有很多可以学习的地方。

3.学习总结
3.1学习进度条

周 日期 第三周 1号-8号
这周所花时间 4小时
代码行 300行
学到知识点简介 for循环
目前比较疑惑问题 PTA上错误有时在其他编程软件上正确

3.2累积代码行和博客字数

时间 博客字数 代码行数
第一周 303 227
第二周 431 459
第三周 753 300

3.3学习感悟
本周学习比较艰难,不过经过努力,终于解决本周作业。c语言真的很难。