C语言I博客作业03

这个作业属于哪个课程 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& nums1, vector& nums2) {
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 nums1 = { 2,3, 5 };
vector nums2 = { 1,4,7, 9 };

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

posted @ 2020-11-08 11:54  冬夜暖风  阅读(88)  评论(0编辑  收藏  举报