一、变量
在运行过程中会发生变化的量。
格式:
存储类型 | 数据类型 | 变量名 |
auto | int | a |
存储类型:决定了存储变量的位置。
数据类型:觉醒了变量开辟的空间大小。
数据类型 |
字节大小 | |
char |
字符型 |
1 |
int |
整型 |
4 |
short |
短整型 |
2 |
long |
长整型 |
32位:4;64位:8 |
float |
单精度浮点型 |
4 |
double |
双精度浮点型 |
8 |
如何查询变量的大小:使用sizeof语句。(ps:1字节=8位)
局部变量与全局变量的区别:
局部变量 |
全局变量 | |
定义位置 |
函数体内部 |
函数体外部 |
初值 |
未初始化时,值为随机值 |
未初始化时,值为0 |
存储位置 |
栈区 |
全局区 |
生命周期 |
同当前函数体共存亡 |
同整个程序共存亡 |
作用域 |
函数内部 |
整个程序 |
二、常量
在程序运行过程中不会发生变化的量。
2.1 整型常量
一般包括八进制、十进制、十六进制
2.2 字符常量
字符型用' '包裹,用来表示一个字符;
字符串用" " 包裹;
/0用于表示字符串结束标志。
2.3 浮点型常量
常见于 float double
2.4 标示常量
宏定义格式:
#define 宏名 常量值或表达式或函数。
宏名一般大写,为了与普通变量区别开。
宏定义的特点:只是单纯的替换,并不进行运算。(原样替换,换完后再计算)
例如:
#define N 2
#define M N+3
#define NUM N+M/2+1 //2+2+3/2+1
void main()
{
int a = NUM;
printf("%d\n",a); // 6
}
宏函数的应用:
这里定义NUM(a,b) 的函数为一个三目运算。
三、变量常量
3.1 按字符输入输出:
1)int getchar(void)
功能:终端输入字符
参数:无
返回值:字符的ASCII值
2)int putchar(int c);
功能:终端输出字符
参数:字符的ASCII码值
返回值:字符的ASCII码值
3.2 按格式输入输出
1)int printf(const char *format, ...);
功能:按格式终端输出
参数:多个
返回值:输出字符个数
格式:
%d int
%c char
%f float
%lf double
%s 字符串
%p 指针
%o 八进制
%x 十六进制 %#x
%m.n m位宽 .n保留小数位数
2)int scanf(const char *format, ...);
功能:按格式终端输入
参数:多个
返回值:正确输入字符的个数 开始位置输入错误,返回0
四、垃圾字符回收
4.1 通过一个或多个空格回收一个或多个字符
4.2 %*C 抑制符:回收任意一个字符
4.3 get char 回收
五、分支结构
5.1 if 结构
5.1.1 基本格式
if(表达式1)
{
语句块1;
}else
{
语句块2;
}
执行顺序:表达式一成立,则执行语句块一,否则执行语句块二
例如:
int age=22;
if(age>18)
{
printf("work\n");
}else
{
printf("study\n");
}
5.1.2 多层分支
if(表达式1)
{
语句块1;
}
else if(表达式2)
{
语句块2;
}
else
{
语句块3;
}
例如:
int age=22;
// 0-18 18-30 30-65 65-
if(age>=0&&age<18)
{
printf("weichengnian\n");
}else if(age<=30)
{
printf("qing\n");
}else if(age<=65)
{
printf("zhong\n");
}else
{
printf("lao\n");
}
5.1.3 嵌套结构
if(表达式1)
{
if(biaodashi 2)
{
语句块1;
}
}
例如:
if(age<0||age>200)
{
printf("error\n");
}else
{
}
注意:
1、if后边可以没有else ,else前边必须有if。
2、分支语句只有一行代码时,可以省略{ }。
5.2 switch结构
基本格式
switch(变量名或表达式)
{
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;
default:
语句块3:
break;
}
例如:
int a=33;
switch (a/10)
{
case 1:
printf("11111\n");
break;
case 3:
printf("333333\n");
break;
case 5:
printf("55555\n");
break;
default:
printf("error\n");
break;
}
注意:
1、case常量一般是整型或字符。
2、case后边可以没有break,程序会从符合条件的分支开始继续向下执行,直到遇见break为止,或执行到分支结束。
六、循环结构
6.1 for循环
6.1.1 基本结构
for(表达式1;表达式2;表达式3)
{
语句块;
}
表达式1:循环变量赋初值
表达式2:终止条件
表达式3:增值或减值
执行顺序:先执行表达式1,再判断表达式2是否成立。
成立:执行语句块;再执行表达式3,判断判断表达式2是否成立。。。
不成立:退出循环。
例如:
int i;
for(i=0;i<5;i++)
{
printf("%d\n",i);//0 1 2 3 4
}
printf("i=%d\n",i);//i=5
-----------------------------------------------------分割线-------------------------------------------------------------------
6.1.2 for 循环的嵌套结构
外层循环执行一次,内层循环执行一轮。
例如:
九九乘法表
6.2 while 循环
基本格式:
6.3 do while 循环
基本格式:
while 循环与do while 循环的区别:
while先判断再执行;do_while先执行一次,再判断。
七、循环控制
包括:
break:结束本次循环。
continue:结束本次循环,继续下个循环。
return 0:结束程序。