关键字
存储类型:auto static extern register
数据类型:char short int long float double signed unsigned
构造类型:struct(结构体) union(共用体) enum(枚举)
选择结构:if else switch case default
循环结构:for while goto do break continue
其他:void(空类型)、typedef(重定义)、const(常量化)、sizeof(计算数据所占空间大小)
volatile(防止编译器优化)、return(返回值)
运算符:
算术运算符:+ - * / % ++ --
逻辑运算符:&& || !
逻辑或运算中:如果前面的表达式为真,则后面的表达式不执行
逻辑与运算中:如果前面的表达式为假,则后面的表达式不执行
位运算符:& | ^ ~ << >>
置一公式:a|(1<<n)
置零公式:a&(~(1<<n))
关系运算符:> < >= <= == !=
赋值运算符:= += -= *= /=
三目运算符:表达式1?表达式2:表达式3;
运算法则:先判断表达式1是否成立,如果成立就执行表达式2;否则就执行表达式3;
运算符优先级:单算移关与 异或逻条赋
变量:
概念:在程序运行中变化的量
分类:局部变量,全局变量
局部变量、全局变量的区别?
局部变量 | 全局变量 | |
定义位置 | 函数体内 | 函数体外 |
初值 | 随机值 | 0 |
存储位置 | 栈区 | 全局区 |
生命周期 | 同函数体共存亡 | 同整个程序共存亡 |
作用域 | 作用于函数体内部 | 作用于整个程序 |
常量:
概念:程序运行中不会发生变化的量
分类:
字符型常量:用' '括起来
字符串常量:用" "括起来
整形常量:int
浮点型常量:float
指数常量:2*10^-12 ->2e-12
标识常量:宏定义
函数三要素:功能、参数、返回值
垃圾字符回收
1.通过空格回收:可以回收一个或多个的空格、回车、tab
2.%*c:只能回收任意一个字符
3.getchar():只能回收任意一个字符,一般用于循环里面
循环
for循环
for(表达式1;表达式2;表达式3)
表达式1:赋初值
表达式2:循环的终止条件
表达式3:增值或减值
while循环
while(判断条件)
死循环
for(;;){} while(1){} while(1);
循环控制语句
break:直接结束循环
continue:结束本次循环,继续下一次循环
数组
概念:具有一定顺序的若干变量的集合
定义格式:存储类型 数据类型 数组名[元素的个数]
特点:
数据类型相同
内存连续
分类:
一维数组 :只有一个下标的数组
格式:存储类型 数据类型 数组名[元素个数];
数组的大小:
- 数据元素个数*数据类型大小
- sizeof(数组名)
数组遍历:把数组下标作为循环变量,用for循环遍历
字符数组:元素的数据类型为字符型的数组
字符数组的输入输出:
1.scanf:输入单个字符
2.for:用for循环循环输入字符串(scanf中需要带&)
3.gets:从终端获取字符串
4.puts:向终端输出字符串
计算字符串实际长度:
1.for循环遍历数组,直到\0为止:for(n=0;buf[n] != '\0';n++);
2.strlen
sizeof和strlen的区别?
sizeof | strlen |
sizeof是关键字 | strlen是函数 |
sizeof是计算数据所占空间大小 | strlen计算字符串的实际长度 |
sizeof计算包括\0, | strlen计算不包括\0 |
冒泡排序:
for(i=0;i<N-1;i++)//轮数
{
for(j=0;j<N-1-i;j++)//比较的次数
{
if(a[j] > a[j+1])//交换
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
选择排序:
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j] < a[k])
k=j;
}
if(i != k)
{
a[i]和a[k]交换;
}
}
二维数组
格式:存储类型 数据类型 数组名[行数][列数]
行数可以省略,列数不能省略
二维数组大小 = 数据类型大小*行数*列数
二维数组的遍历
for循环嵌套,外层行数,内层列数