第一周的C语言学习经历

103 阅读3分钟

这是第一次写博客文章,也是从学习到字符串之后,才开始记录学习的经历

1. 首先,本周开始学习的是字符串,所以先从字符串讲起:

  • 最开始是上网课,在acwing 的网站上。上网课时,觉得没什么,只是觉得知识点可能有点多,需要记得char,以及string 字符串命名的格式。需要记一些内置函数的使用方法。

    直到做题的时候,才突然发现char 以及string 这两个格式总是辨别不清使用的地方和使用的方式。就比如说:strlen, strcmp 只能用在char 上面,但是size 只能用在string 上面。当时的我傻傻分不清,一顿乱用,结果就是不断地报错。然后,不得已再去把网课再去看一遍,才勉强过关。

    可是字符串的题目不是那么容易就被做出来。难点不是不理解哪一方面的知识点,而是利用循环语句和判断语句,不断地对字符串进行编排。就像是一把手术刀一样,利用代码,精准地对字符串的每一个位置进行随意地修改。在这样的过程中,我也得到了历练。学会了很多不知道的函数,还接触了指针的内容(双指针算法),如下:

for(int i = 0; i < str.size(); i ++)
{
    int j = i;
    while(j < str.size() && str[j] == str[i]) j ++;
    if(distance < j - i) distance = j - i, c = str[i];
    i = j -1;
}

这只第一类是一道题目中的一小段。现在已经可以较为熟练地利用这几行代码去完成各种题目。对此,我将其以我自己的方式称呼它:将i 称为第一位置,将j 称为第二位置。这个算法的主要用途是,在输出字符串的过程中 ,可以一小节一小节地进行判断。

综上,字符串这一章节对我来说很难,乃至于最后几题没有一道题是我自己独立完成的。学完后,能力的提升很明显:写代码至少不会报错,对于一道题目的处理也更加的清晰。

2.接下来,就是学习了函数

  • 函数相对于字符串来说没有那么破天荒,就像是给我了一口喘息的时间。

函数的基本知识点主要就是编写和声明一个函数,然后,加以利用。至今在做题的过程中,对我来讲,函数只是对循环语句进行了一个包装。

函数的作用是:不断地利用函数,使代码变得更加简洁,而递归函数恰恰凸显了这一点。递归函数的本质是一个二叉树,利用函数本身向下循环,但是一定要有一个边界,不然就成了死循环。最简单的递归函数:阶乘函数,如下:

int fact(int n)
{
    if(n == 1) return 1;
    return fact(n - 1) * fact(n - 2);
}

综上,函数的内容相对来说简单一点。

好了,这篇文章到此就结束了,以此来记录我的学习经历。在此,也记录一下我写文章的问题:没有清晰的结构。