博客园 首页 私信博主 显示目录 隐藏目录 管理

C语言I博客作业03

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/CST2020-2/
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11453
这个作业的目标 从PTA题目集中选出3个你最满意的题目完成老师安排的作业要求;去阅读他人的优秀代码,挖取自己学习的地方,补短;完成好自己本周的学习感悟与学习总结。
学号 20208980

1.PTA实验作业(15分/题)

1.1:2-18 求组合数 (20分)

1.1.1实验代码截图:

1.1.2数据处理

数据表达:变量是 n,m,c 数据类型是基本类型中的整数类型int 实型double 变量是通过定义而来,自定义函数double fact(int n);
数据处理:标准库函数<stdio.h> 最重要的是自定义了函数,从而达到阶乘的计算,顺序结构

1.1.3 PTA提交列表及说明:


说明:
Q1:一开始编译错误,报错位置很多。
A1:仔细检查后发现有几处不太显眼的位置的 ; 没有,才导致整行报错
Q2:一开始此句错误

c=fact(n)/fact(m)*fact(n-m);

A2:改正后

c=fact(n)/fact(m)/fact(n-m);

问题是对算数优先级掌握不熟 存在问题

1.2:L1-056 猜数字 (20分)

1.2.1 实验代码截图:

1.2.2 数据处理

数据表达:变量是num name[10] i n sum=0 数据类型是基本类型中的整数类型int 实型类型double 变量是通过定义,赋值而来,其中还输入了数组数据。
数据处理:运用for的循环结构,if的判断语句 运用了两个库函数<stdio.h> <string.h>

1.2.3 PTA提交列表及说明


说明:
Q1:一开始编译错误贯穿我的整个程序。
A1:小错误居多,出现各类问题,符号漏打,未对齐整;编写有时来劲,就毛病都冒出来了。
Q2:过程中的格式错误。
A2:调试报错是对格式错误最好的解释,精心设计一批测试用例,然后分别用这些测试用例运行程序,看程序的实际运行结果与预期输出结果是否一致,这是软件测试的基本思想,如果发现运行结果有错误,就要调试程序,查出并改正错误,程序的测试和调试需要反复的进行。测试用例越多,越能找到潜在的错误,但是也要量力而行。

1.3:L1-034 点赞 (20分)

1.3.1 实验代码截图:

1.3.2 数据处理

数据表达:数组m[1000]={0} 常量a b c d e=999 变量N n 数据类型是基本类型中的整数类型int 变量是通过定义指定而来,a b c d e通过了赋值,其中还输入了数组数据。
数据处理:调用printf() scanf()函数 来自库函数<stdio.h> 程序结构是for循环来串联的

1.3.3 PTA提交列表及说明


说明:
Q1:单处小错误的解决办法
A1:先扫描自己的源程序,是否能直接查出错误,再去通过调试,我自己的问题出在12行,m c-1++; 改正后:m [c-1]++;

2.阅读代码(-5——5分)

class Solution {
public:
    /*int lengthOfLongestSubstring(string s) {  //之前的代码,复杂度O(n^2)
        int  size,i=0,j,k,max=0;
        size = s.size();
        for(j = 0;j<size;j++){
            for(k = i;k<j;k++)
                if(s[k]==s[j]){
                    i = k+1;
                    break;
                }
            if(j-i+1 > max)
                max = j-i+1;
        }
        return max;
    }*/
    int hashmap[130];
    int lengthOfLongestSubstring(string s) { //双指针滑动窗口
        int max=0;
        int n = s.size();
        for(int i=0,j=0;j<n;j++){//当前判断是否重复的串为s[i..j]
            hashmap[s[j]]++;
            while(hashmap[s[j]]>1){
                hashmap[s[i++]]--;  //i指针右移
            }
            if(j-i+1>max)
                max = j-i+1;
        }
        return max;
    }
};

这是来自力扣题库的热题,该题解的作者收到广泛的好评,做到后面突然想到这题之前的写法不太行,之前写的代码实际上也是暴力,复杂度最差也是暴力,只是简单的优化了一下。时间复杂度为的算法双指针滑动窗口,空间复杂度,代码是用哈希表的一种写法,也可以使用集合。总的来说这次的代码比上次的代码在很多地方上做了优化,虽然也有比上次繁琐的地方,但是就整体而言整个代码还是做了优化。这是我值得学习的地方。

3.学习总结(15分)

3.1 学习进度条(5分)





3.2 累积代码行和博客字数(5分)


ps:上表的数据仅供参考

3.3 学习感悟(5分)

感悟:第三周的学习,我们学习了for的循环,通过这一周的学习,我想学习关于更多的循环,例如do while

个人建议课堂的作业可以再稍稍加点时间,让我们有更多的时间来自我发挥。学习过程的总结:

1.每当接触一个新的知识点时,在自己理解的情况下,多去实践,亲自运用起来,或者去敲别人的好的代码,理解学习别人代码的优点。

2.时刻做好笔记,做好盲点,不懂的名词积极百度,实时记录下来。

3.在听好视频课程的·前提下,要多加训练,不一定要是刷某个题,带着探究精神去探究它的奥妙,它的规律,计算机的思维,等等,联想到更多东西。

4.尽可能降低自己的压力,能简单化的事情,不要复杂化。拿出更多的时间去学习新知识,并实践。

posted @ 2020-11-05 16:38  Jason_William  阅读(353)  评论(22)    收藏  举报