• 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

  • 相关阅读:
    Find all Windows Phone Application Bar Icon
    DELL PowerConnect 5548[初步]配置
    删除SD的分区
    Import/Export a database into Oracle
    索爱U100i排线更换笔记
    forrtl: severe (174): SIGSEGV, segmentation fault occurred
    下载功能和上传功能的实现
    自我小结:手动给GridView添加数据源
    删除指定目录内的文件
    GridView数据源中没有数据的时候显示表头
  • 原文地址:https://www.cnblogs.com/421x/p/13943254.html
Copyright © 2020-2023  润新知