概述
文章目录
- 前言
- 第1章 程序设计和C语言
- 第2章 数据类型、运算符和表达式
- 第3章 顺序结构程序设计
- 第4章 分支结构程序设计
- 第5章 循环结构程序设计
- 第6章 数组
- 第7章 函数
- 第8章 指针
- 第9章 结构体与链表
- 总结
前言
这些内容是我个人在学习C语言时遇到或使用到的个人觉得比较重要的内容,有些对于做题是比较重要的基础知识,大部分使用到了老师的PPT。
第1章 程序设计和C语言
1、C程序是由函数组成的。(重要)
2、所有的C程序有且只有一个main()函数。(重要)
C程序总是从main()函数的第一条语句开始运行,当main()函数结束时,程序也就结束了。
3、 程序中包含了数据表达与数据处理(流程控制)两部分。
4、 算法的特征
(1)确定性。
(2)有穷性。
(3)可行性。
(4)有零个或多个输入。
(5)有一个或多个输出。
5、标识符命名规范(重要)
由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。区别分大小写
6、关键字
7、运行C程序的步骤与方法
第2章 数据类型、运算符和表达式
1、C语言的数据类型
2、直接常量
十进制表示:由数字0~9,正、负号组成;
八进制表示:以0(数字0)为前缀,其后由数字0~7组成;八进制数一般是无符号数。
十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成,十六进制数一般是无符号数。
3、常见的转义字符
4、在字符串中如遇到’ ’则认为该字符串结束
5、整型变量
Visual C++ 2010环境下,各种整型的关键字及占用内存字节数和取值范围如下表:
6、实型变量
Visual C++ 2010环境下,各种整型的关键字及占用内存字节数和取值范围如下表:
7、算术运算符和算术表达式
注意:
(1)两个整型数据做除法运算时,结果一定是整数。
(2)求余运算的结果是两个整型数据相除的余数。求余运算只能用于整型数据的运算。
(3)双目运算符两边的数据类型应相同,若不同时,编译系统会先转换为同一数据类型,然后再进行运算。
(4)如果a和b都是整型,则其商也为整型,小数部分被舍去,如3/4的结果为0,4/3的结果为1
8、自动转换
注意:
强制类型转换是一种不安全的转换,如果是从高级类型转换成低级类型,则会损失数据的精度。
第3章 顺序结构程序设计
1、整型数据的输入和输出
scanf()函数中的格式修饰符
printf()函数中的格式修饰符(重要)
2、实型数据的输入和输出
3、函数对字符型数据进行输入输出
使用getchar()函数和putchar()
(1) getchar()函数
ch=getchar();
(2) putchar()函数
putchar(输出参数);
4、常用数学库函数
使用时包含数学库函数 #include<math.h>
① 指数函数exp(x):计算ex。
---如exp(2.3)的值为9.974182。
② 绝对值函数fabs(x):计算|x|。
对double型的变量取绝对值
---如fabs(-2.8)的值为2.8。
对int型的变量取绝对值
---如abs(-2)的值为2。
③ 以e为底的对数函数log(x):计算lnx。
---如log(123.45)的值为4.815836。
④ 幂函数pow(x,y):计算xy。
---如pow(1.3,2)的值为1.69。
⑤ 平方根函数sqrt(x):计算 。
---如sqrt(4.0)的值为2.0。
第4章 分支结构程序设计
1、逻辑运算符
短路:C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。(重要)
例如:
a && b 如果a为 0 或者 false 则表达式为 0 或者 false 不再判断 b 的值
int a=0,b=1;
(a && b++);
printf("%d %d",a,b); 结果为: 0 1
a || b 如果a为 1 或者 true 则表达式为 1 或者 true 不再判断 b 的值
int a=1,b=1;
(a || b++);
printf("%d %d",a,b); 结果为: 1 1
2、if-else语句
一般形式:
单分支if语句
if(表达式)
语句1;
双分支if语句
if(表达式)
语句1;
else
语句2;
语句的嵌套
if (表达式1 )
if(表达式2 )
语句1;
else
语句2;
else
if(表达式3)
语句3;
else
语句4;
switch语句的一般形式如下:
switch(表达式)
{
case 常量表达式1:语句1;break;
case 常量表达式2:语句2;break;
…
case 常量表达式n:语句n;break;
default:语句n+1;break;
}
关于switch语句的几点说明。
(1)switch后的表达式可以是任何表达式,其值必须为整型,或字符型,或枚举型。
(2)每个case后面的常量表达式的值必须互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
(5)switch语句允许嵌套使用。
第5章 循环结构程序设计
1、循环结构
for语句的一般形式为:
for(表达式1;表达式2;表达式3)
循环体语句;
for语句的执行过程如下: ① 首先计算表达式1。
② 判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第③步;若值为假(0),结束循环,转到第
⑤步执行。
③ 计算表达式3。
④ 返回第②步继续执行。
⑤ 循环结束,继续执行for语句的下一条语句。
while语句的一般形式如下:
while(表达式)
循环体;
do
循环体
while(表达式);
2、改变循环结构的跳转语句
(1)break语句的作用是跳出循环。
(2)continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if条件语句一起使用。
注意:只能用于switch语句和循环语句中。 使用for语句、while语句及do-while语句相互嵌套。
第6章 数组
1、一维数组的定义
一维数组定义的一般形式为:
类型名 数组名[常量表达式];
例如:
int a[6];
注意:常量表达式不能为变量。如:
int b[n]; 是错误的。
一维数组初始化的一般形式为:
类型名 数组名[数组长度] = {初值表};
初值表中依次存放数组元素的初值。例如:
int a[6] = {6,1,4,5,7,2};
二维数组的一般形式为:
类型名 数组名[常量表达式1][常量表达式2];
int a[4][3];
初值表中依次存放数组元素的初值。例如:
int a[3][4] = {{ 1 , 2 , 3 , 4 }, { 5 , 6 , 7 , 8 }, {9 , 10 , 11 , 12 }};
字符数组也分一维字符数组与二维字符数组。
(1)一维字符数组的一般形式为:
char 数组名[常量表达式]
例如:char str[5];
(2)二维字符数组的一般形式为:
char 数组名[常量表达式1] [常量表达式2]
例如:char book[5][20];
字符数组初始化的一般形式为:
char 数组名[常量表达式] = {初值表};
例如:char str[5]= {'C', 'h', 'i', 'n', 'a'};
注意:
字符’ ’代表整数0,也就是ASCII码为0的字符。但’ ’不是字符’0’,字符’0’的ASCII码值为48。
2、字符串(重要)
字符串的输入
字符串常量是用双引号括起来的字符序列,它有一个结束标志’ ’。
1)利用函数scanf(),配合%s格式描述符。
调用格式为:
scanf("%s", 字符数组名) ;
输入一个字符串后,会自动在字符串后面加上’ ’。
2)使用函数gets()输入完整的字符串。
调用格式为:
gets(字符数组名);
输入一行字符时以Enter键作为结束符,且自动将回车符’n’转换为’ ’,作为字符串的结束标志。
字符串的输出
1)利用标准输出函数printf(),配合%s格式描述符。
调用格式为:
printf("%s",字符数组名);
2)使用函数puts()输出完整的字符串。
调用格式为:
puts (字符数组名);
几个输入输出字符串的函数的比较:
3、字符串处理函数
(1)字符串复制函数strcpy()
一般调用格式为:
strcpy(字符串l,字符串2)
功能:将字符串2复制到字符串1。
注意:
1)参数字符串2可以是字符数组名,也可以是字符串常量。但参数字符串1必须是字符数组名。
2)字符串l必须有足够的空间,以便能容纳字符串2。
3)复制时直到遇到字符串2中的'