欢迎食用『主界面』~,这里是赵苦瓜的看板娘desu~

#
【点滴记录】C语言的初步学习
首页 > 点滴记录    作者:赵苦瓜   2020年11月9日 15:16 星期一   热度:1841°   百度已收录  
时间:2020-11-9 15:16   热度:1841° 

C语言.jpg

前言:

C语言几乎已经成了大学的一门必修课程。这就足以说明它的基础性以及重要性。作为一个只接触过中文编程——易语言的我(其实高中的时候应付合格考试也学了一点VB),这是一门全新的语言。

第一节C语言课,老师推荐了几款编译器比如VC++,Dev C++,Visual Studio等。老师用的是Dev C++,老师说考试可能会用VC++,而我选择了VS 2019。(VS code还是不会用qwq)。

选择了VS

我为什么选择了体积如此庞大的VS 2019呢?大家都知道VS是一个综合性的IDE,看到过很多影视资料中也经常能看到它的身影。而我之前也安装过这个软件,所以对于软件的安装流程比较熟悉。而另两款软件,由于我找不到官方地址而不清楚去哪里下载。于是,我选择了VS。

在后来的使用中,VS的实时查错功能也特别方便,有了便捷的功能,牺牲一点硬盘空间还是值得的(bushi

但是用VS写C语言要有一个注意事项,scanf之类的函数是不安全的,必须要用scanf_s之类的。为了规避这些问题,需要添加一个开头。添加#define _CRT_SECURE_NO_WARNINGS用来取消安全检查。这样的话基本上就没有什么大问题了。

HelloWorld!

学一门编程语言,要编写的第一个程序是什么?肯定是HelloWorld啦~(据说写了之后就会有BUFF加成,以后会少出BUG2333)。

以下就是我写的第一个C程序啦:

 #include <stdio.h>

    int main()
    {
        printf("Hello,World!\n"); /*Hello World My first C program */
        return 0;
    }

从此,我开启了我的C语言学习。

C语言基础

C语言的基础部分,我是跟着慕课网上这门免费课程学习的。

https://www.imooc.com/learn/249

同时我在Github上发布了我学习时的练习记录

https://github.com/Zhaokugua/MOOC_249_Examples

这门课没有视频讲解,不需要看枯燥无味的视频开二倍速了23333

电脑访问在网页中就能完成代码的编写和执行,效率比较高,利于学习。

有不理解的地方,底下可以进行交流,,还是很方便的。

不过,在网页上写的唯一缺点,我认为就是无法输入进去数。所以说除了里面的题目,也要多在自己的程序里面进行练习。

另外,有些题目校验”过于严格“。比如解一道题可以有多种方法,但是它有的课后题必须让你那样写,代码里不包含他想让你用的代码就不会通过。我觉得这似乎有点局限思维。

以下,我会对里面的知识点进行总结,便于以后我及时查看。

知识点总结

1-1 照着写了个HelloWorld。

1-2 C语言基本结构包括【头文件(#include )】和【主函数(int main())】。

1-3 头文件的正确写法:#include 写<>是去库函数找,写""是先从本地目录找,找不到再去库函数找。

1-4 主函数是C语言的唯一入口。printf()——格式输出函数。return——函数的返回值。

1-5 代码书写规范:一个说明或语句占一行。缩进清晰明了。括号成对写。语句后有分号。所有符号均为英文半角。

1-6 注释的书写。 多行注释 / 内容 / 单行注释 // 内容

2-1 标识符——给变量或函数起的名字。由大小写字母、数字、下划线组成。首位不能是数字。长度尽量不超8位。不能是C语言的保留字。严格区分大小写。见名知意。

2-2 合法的标识符:For 不合法的标识符:$price、auto、3sport

2-3 使用变量前必须定义。定义格式:数据类型 变量名,变量名,变量名,变量名; 如 int a; int b=8; int c,d; 定义中不允许连续赋值。如int a=b=5;是不合法的。

2-4 基本数据类型。常用三种:整形:不带小数。实型(浮点型):小数。字符型。

C语言没有字符串变量,只能将字符串存储到字符数组当中。后续会有详细讲解。

2-5 格式化输出语句——printf。格式:printf("输出格式符",输出项); 输出项有多个需要用逗号隔开。

2-6 选择合适的输出语句。float a = 1.7; printf("%f\n",a);

2-7 不可改变的量——常量。常用的有整型、实型、字符(需使用单引号引起来)、字符串(需要用双引号括起来)

定义方法: #define 标识符 常量的值 常量一般用大写字母表示。

2-8 自动类型转换。char类型可由ASCII码对应值自动转换成数值。其它适用于字节小的向字节大的转换。

2-9 强制类型转换。(数据类型)(表达式) 数据类型和要转换的表达式都要加括号。转换后不会改变原来的变量的数值。结果不遵循四舍五入。如:double型变量6.777转换成整型后会变为6。

3-1 运算符号+加-减*乘/除 算术运算符、赋值运算符、关系运算符、逻辑运算符、三目运算符。

3-2 基本算数运算符。除法注意:两个数均为整数,则结果也为整数。其中一个为小数,则结果也为小数。取余运算:只适用于两个整数之间的运算。

3-3 自增与自减运算符。注意自增自减运算符和变量标识符的相对位置。

3-4 int a=3,b=4; a+b%(a+b)/a+a*b-b=?

原式=3+4%7/3+12-4=3+4/3+8=3+1+8=12

3-5 简单赋值运算符=,把右边的值赋给左边。复合赋值运算符+=、-=、*=、/= 如a+=5等价于a=a+5

3-6 关系运算符。关系表达式的值是真(在C语言中用1表示)和假(在C语言中用0表示)。

3-7 逻辑运算符。&&逻辑与、||逻辑或、!逻辑非。

3-8 int a=5,b=9; 则b++>=a*2||b-a<=a的结果为1

3-9 三目运算符。 表达式1?表达式2:表达式3; 先判断表达式1是否为真,为真接着执行表达式2,否则执行表达式3。

3-10 运算优先级的问题。要适当加括号。

4-1 简单if条件语句。if(条件/表达式) 换行 执行代码块; 注:如果只有一条语句可以不加{},多条语句必须加{},否则将只执行第一条语句!

4-2 简单if-else语句。if(条件/表达式) 换行 执行代码块1; else 执行代码块2; 关于{}的要求同上。

4-3 多重if-else语句。就是上面那个在if 和 else 直接加数个else if() ,格式基本一致。当有某一条件为真时,则不会向下接着执行。

4-4 嵌套if-else语句。就是在上面的if-else语句里面套娃。

4-5 老王年底打算买辆车,他制定出的方案是,如果存款在100万以上包括100万买A6,如果存款在50万到100万之间买帕萨特,如果在20万到50万之间买奇瑞,如果在20万以下的话就买奥拓,选择最合适的分支语句——多重if-else语句。

4-6 while循环。while(表达式) {代码执行块} 表达式为循环条件,执行代码块为循环体。

4-7 do-while循环。 do {执行代码块}while(); //这里有分号。 do-while循环至少要进行一次。

4-8 for循环。for循环更加直接、简单、灵活。 for(表达式1;表达式2;表达式3) {执行代码块}

4-9 表达式1写赋值语句,控制初始值。表达式2判断关系,决定什么时候退出循环。表达式3是循环变量的步进值。这三个表达式均可缺省,但;不能缺省。各变量要在循环前定义。括号内多条语句用逗号隔开。如for(sum=0,num=0;num<=3;num++,sum++)

4-10 知道循环次数的情况下适合用for循环。不知道循环次数,有一次都不执行的情况用while,其它用do-while。三者可以灵活运用,互相转化。

4-11 在C语言中, while 语句在循环开始前检查条件表达式,使循环代码块一次不执行;do-while语句使循环执行代码块至少执行一次;在循环次数已知的情况下,通常使用for语句控制循环。

4-12 多重循环就是在循环结构体中又出现循环结构。实际开发一般最多用到三层循环。

4-13 使用for循环打印9×9乘法表。

4-14 break语句——跳出当前循环。需要在循环结构中使用。多层循环中,一个break语句只能跳出当前循环。

4-15 continue——结束本次循环,进行下一次循环。

4-16 分支结构——switch语句。switch(表达式){case 1:XXX;break; case 2:XXX; break…… default :XXX;}

case后的常量表达式的值不能相同。case后的语句若没有break,则会发生case穿透,直到遇到break才会跳出switch语句。

4-17 switch语句和if语句的应用——计算某年某月某日是该年中的第几天。

4-18 使当前循环中断,除了break语句,还可以使用goto语句。break语句除了可以用在循环体内,还可以用在switch语句内。continue只能用在循环体内。

4-19 臭名远扬的goto语句。在想要去的语句前面加上标号,如start: 然后goto 语句标号;就行了。goto语句会破坏顺序化程序结构,一般不要使用。

5-1 自创函数——模块化编程。除了C语言自带的大量库函数外,我们还可以自创函数。[数据类型说明] 函数名 ([参数]) {执行代码块;return (表达式);} []数据类型说明可以省略,省略后默认为int类型。参数省略表示为无参函数。自定义函数尽量放在main函数之前,否则要对其进行声明。

5-2 函数调用。函数名([参数]); 对于无参函数,参数可省略。多个参数,各参数用逗号分隔。

5-3 有参函数与无参函数。 int hanshu(int i) int hanshu()

5-4 形参与实参。形参只在函数内部有效,如上方的i。实参调用函数时传递的值,必须有确定的值,且数量、类型、顺序均与形参一致。

5-5 函数的返回值。return 表达式; 或者 return (表达式); 。返回值的类型一般要与定义的函数类型一致。如果不一致将以函数的返回类型为准,进行强制转换。另外,空函数void()可以不写返回值。写了则起到结束函数运行的作用。如return; 。

5-6 一个函数中可以有多个return语句,但只能返回一个返回值。

5-7 递归函数——对自身的调用。

5-8 递归函数必须有结束条件。

5-9 递归函数的练习。

5-10 局部与全局——变量的作用域。局部变量(内部变量)的作用域仅限于函数内或复合语句范围内。全局变量(外部变量)的作用域是整个程序。

5-11 变量的存储类别:静态存储与动态存储。自动(auto)、静态(static)、寄存器的(register)、外部的(extern)

其中auto可以省略。

5-12 C程序函数定义的自动变量,系统不自动赋确定的初值。直接读取则会读取内存中上个程序保存的垃圾内存。

5-13 内部函数与外部函数。static [数据类型] 函数名 ([参数]) extern [数据类型] 函数名 ([参数]) 。没有指定是内部函数还是外部函数时,系统会默认为外部函数。

5-14 综合练习。

6-1 数组的初体验。数组是一块连续的,大小固定并且里面的数据类型一致的内存空间。数组声明 数据类型 数组名称 [长度]; 初始化的两种方式:数据类型 数组名称 [长度n(不写则默认后面的最大长度)]={元素1,元素2,...,元素n}或数组名称[0]=元素1;数组名称[1]=元素[2];...;数组名称[n-1]=元素n; 数组获取 = 数组名称[元素对应下标]

6-2 数组的遍历。采用循环的方式获取每一位元素,从而遍历数组。不要越界访问。

6-3 数组不要越界访问。

6-4 数组作为函数参数。传入参数void temp ( int arr[] ) 函数的参数temp(arr);

6-5 数组的应用一——冒泡排序。相邻两两元素比较,然后排序。

6-6 数组的应用二——通过数组的遍历实现数组元素的查找。

6-7 字符串与数组。两种定义方法:char 字符串名称[长度]="字符串值"; 或 char 字符串名称 [长度]={'字符1','字符2',...,'字符n','/0'};

使用printf("%s",字符数组名称)或puts(字符数组名称)进行输出。

6-8 常用字符串函数。


6-9 多维数组。 定义格式: 数组类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n];

两种初始化方式:

1、数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

2、数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n]; 数组名称[下标1][下标2]...[下标n] = 值;



6-10 定义正确的多维数组:int x[][3]{{0},{1},{1,2,3}};   int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};  intx[][3]={1,2,3,4}     定义错误的多维数组:int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3},};  //二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。

6-11 多维数组的遍历:注意下标不能超界!



本文作者:赵苦瓜      文章标题: 【点滴记录】C语言的初步学习
本文地址:https://blog.jixiaob.cn/?post=19
版权声明:若无注明,本文皆为“赵苦瓜のBlog~”原创,转载请保留文章出处。

返回顶部    首页    后花园  
版权所有:赵苦瓜のBlog~    站长: 赵苦瓜    程序:emlog   鲁ICP备20030743号-1   鲁公网安备37048102006726 萌ICP备20222268号    sitemap