这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/CST2020-4 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-4/homework/11455 |
这个作业的目标 | <掌握使用for循环语句实现指定次数的循环程序设计,熟练运用循环语句> |
学号 | <20209072> |
1.PTA实验作业(15分/题) | |
从PTA题目集中选出3个你最满意的题目完成以下内容,选择题目难度越大,分值越高,每题2分,内容要求如下: |
1.1题目内容
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
1.1.1实验代码截图
1.1.2数据处理
数据表达:通过整形变量N和i,输出N的值来确定循环的次数。
数据处理:运用for循环语句进行前n项和的计算。
1.1.3PTA提交列表及说明
.Q1:第一次不是很清楚denominator是什么
.A1:在同学的帮助下去了解才完成整个代码
.Q2:sum = %.3f这里忘记打空格
.A2:经过很长的检查才发现这个错误
1.2题目内容
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
1.2.1实验代码截图
1.2.2 数据处理
数据表达:调用头文件<math.h>使用整形变量n和i,使用sum变量,通过输出N的值来确定循环的次数
数据处理:利用for循环语句进行前n项和的运算
1.2.3PTA作业提交列表
.Q1:最初是发生格了式错误
.A1:进行了一番检查后发现最前面的“{”没打
.Q2:再次进行调试时发生了答案错误
.A2:通过仔细阅读提问要求后改正了错误
1.3题目内容
本题要求编写程序,计算平方根序列√1+√2+√3+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。
1.3.1 实验代码截图
1.3.2 数据处理
数据表达:调用头文件<math.h>使用整形变量n和i,使用双精度sum变量,使用sqrt函数,通过输出N的值来确定循环的次数
数据处理:利用for循环语句进行前n项和的运算
1.3.3 PTA提交列表及说明
.Q1:最初是发生编译错误
.A1:结果“&”打错了,打成了“%”
.Q2:再次进行调试
.A2:仔细阅读代码后发现错误并改正
2.阅读代码(-5——5分)
找一份优秀代码,理解代码功能,并讲出你所选代码有点及可以学习的地方。
include <stdio.h>
include
using namespace std;
define max(a,b) (((a) > (b)) ? (a) : (b))
define min(a,b) (((a) < (b)) ? (a) : (b))
class Solution {
public:
double findMedianSortedArrays(vector
int n = nums1.size();
int m = nums2.size();
if (n > m) //保证数组1一定最短
{
return findMedianSortedArrays(nums2, nums1);
}
// Ci 为第i个数组的割,比如C1为2时表示第1个数组只有2个元素。LMaxi为第i个数组割后的左元素。RMini为第i个数组割后的右元素。
int LMax1, LMax2, RMin1, RMin2, c1, c2, lo = 0, hi = 2 * n; //我们目前是虚拟加了'#'所以数组1是2*n长度
while (lo <= hi) //二分
{
c1 = (lo + hi) / 2; //c1是二分的结果
c2 = m + n - c1;
LMax1 = (c1 == 0) ? INT_MIN : nums1[(c1 - 1) / 2];
RMin1 = (c1 == 2 * n) ? INT_MAX : nums1[c1 / 2];
LMax2 = (c2 == 0) ? INT_MIN : nums2[(c2 - 1) / 2];
RMin2 = (c2 == 2 * m) ? INT_MAX : nums2[c2 / 2];
if (LMax1 > RMin2)
hi = c1 - 1;
else if (LMax2 > RMin1)
lo = c1 + 1;
else
break;
}
return (max(LMax1, LMax2) + min(RMin1, RMin2)) / 2.0;
}
};
int main(int argc, char *argv[])
{
vector
vector
Solution solution;
double ret = solution.findMedianSortedArrays(nums1, nums2);
return 0;
}
作者:bian-bian-xiong
链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/solution/4-xun-zhao-liang-ge-you-xu-shu-zu-de-zhong-wei-shu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
优点:思路清晰,奇数和偶数的虚拟数组的处理灵活,能让新手较为快速的弄懂
值得学习的地方:可以去学习这里面的一些新的代码
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学的知识点简介 | 目前比较迷惑的内容 |
---|---|---|---|---|
10/12——10/18 | 342 | 212 | printf(),scanf()的用法,if-else的用法 | 对一些函数的调用并不是很理解 |
10/24——11/1 | 543 | 342 | for循环 for循环的原理 | |
11/2——11/7 | 762 | 422 | pow(),sqrt()函数 |
3.2 累积代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 432 | 212 |
第二周 | 532 | 342 |
第三周 | 643 | 422 |