if (表达式)
{
//满足条件执行
}
尽量带上这个{ },不带只管理一条语句
- //No.1 基本if语句
- if ("很帅") //非零表示成立
- {
- printf("太帅了!\n");
- }
- int a = 1;
- if (a = 0) //赋值语句充当条件,最终赋的值充当条件 if(0)
- {
- printf("赋值语句!\n");
- }
- //求最大值
- int b;
- int c;
- scanf_s("%d%d%d", &a, &b, &c);
- //No.2 if处理最大值问题
- int max = a;
- if (max < b)
- {
- max = b;
- }
- if (max < c)
- {
- max = c;
- }
- printf("max=%d\n", max);
- //No.3 if处理多个条件使用逻辑运算符 && ||
- //判断一个数字是否能够被 3 和 5 整除
- int num = 45;
- if (num % 3 == 0 && num % 5 == 0)
- {
- printf("满足条件的数字\n");
- }
- //判断一个数字是否能够被 3 但是不能被 5 整除
- num % 3 == 0 && num % 5 != 0
- //判断一个数字能够被 3 或者被 5 整除
- num % 3 == 0 || num % 5 == 0
//复合语句
if (表达式)
{
//条件成立执行这里
printf("1");
}
else
{
//条件不成立执行这里
printf("1");
}
如果输入的数字是奇数就打印奇数,如果输入的数字是偶数就打印偶数
- //No.4 if_else语句
- num = 3;
- if (num % 2 == 0) //被2整数
- {
- printf("偶数\n");
- }
- else
- {
- printf("奇数\n");
- }
//条件细化、条件的逐步筛选
if (表达式1)
{
//1.
}
else if (表达式2)
{
//2.
}
else if (表达式3)
{
//3.
}
. . . . . .
else
{
//可以省略
}
//整个语句是一条复合语句,只会做一次成功的比较,执行一个地方的语句
学生的成绩分段
90分:A
70分 - 89分:B
60分 - 69分:C
60分以下:D
- //No.5 if_else if _else
- int score = 0;
- printf("请输入一个分数:");
- //分数不定
- scanf_s("%d", &score);
- //不考虑不满足条件的分数: 180, -19
- if (score >= 90)
- {
- printf("A\n");
- }
- else if (score >= 70 /*&& score < 90*/)
- {
- printf("B\n");
- }
- else if (score >= 60/* && score < 70 被上面的拦截 */)
- {
- printf("C\n");
- }
- else
- {
- printf("D\n");
- }
1.else 不能独立存在
2.else 只和最近的 if 搭配(如果大家常写 { },不存在这样的问题)
- //No.6 if 和 else 的搭配问题
- int number = 3;
- if (number > 1)
- {
- printf("大于1\n");
- if (number > 2)
- {
- printf("大于2\n");
- }
- else
- {
- printf("小于2\n");
- }
- if (num==3)
- {
- printf("等于3\n");
- }
- }
- else
- {
- printf("小于1\n");
- }
- 大于1
- 大于2
- 等于3
- //没有{}的组合方式
- if (number > 1)
- printf("大于1\n");
-
- if (number > 2)
- printf("大于2\n");
- else
- printf("小于2\n");
-
- if (num==3)
- printf("等于3\n");
- else
- printf("小于1\n");
- 大于1
- 大于2
- 等于3
switch(表达式1)
{
case 常量1: //默认表达式1 和常量1 比较
语句1;
case 常量2:
语句2;
case 常量3:
语句3;
default:
所有 case 语句不满足才跳到这个位置,其他情况执行的地方;
}
1.switch执行过程
2.case后面必须是常量,一般写数字或者字符,不能写字符串
3.switch语句只做一次成功的比较,从满足条件的位置开始,后面的语句不需要比较,语句2、语句3、defalt 都会依次执行
- //No.1 switch语句基本形态
- char key = 'A';
- switch (key)
- {
- case 'A': //key=='A'
- putchar(key++); //A key='B';
- case 'C':
- putchar(key++); //B key='C'
- case 'B':
- putchar(key++); //C key='D'
- default:
- printf("END"); //END
- }
4.default的位置是随便放的,一般是放在最下面的
5.switch语句不执行 case 和 default 以外的其他语句,基本形态没有 break,break 是用来做跳出,语句 break 会跳出整个 switch 语句
- //No.2 更多情况结合break使用 保证只执行一个case
- printf("\n");
- key = 'A';
- switch (key)
- {
- case 'A': //key=='A'
- putchar(key++); //A key='B';
- break;
- case 'C':
- putchar(key++);
- break;
- case 'B':
- putchar(key++);
- break;
- default:
- printf("END");
- break;
- }
- //3.1 包含其他语句
- key = 'A';
- switch (key)
- {
- if (key == 'A') //不会执行,但是不会报错
- {
- printf("其他的代码!\n");
- break;
- }
- case 'A': //key=='A'
- putchar(key++); //A key='B';
- break;
- case 'C':
- putchar(key++);
- break;
- case 'B':
- putchar(key++);
- break;
- default:
- printf("END");
- break;
- }
- //3.2 在case中定义变量,一定要带{}或者在switch上面定义 限制变量的作用域
- printf("\n");
- key = 'C'; ←
- switch (key)
- {
- case 'A': //key=='A'
- {
- putchar(key++); //A key='B';
- int number;
- number = 3;
- printf("%d\n", number);
- break;
- }
- case 'C': ←
- {
- //变量number不存在
- printf("%d\n", number); ←
- putchar(key++);
- break;
- }
- case 'B':
- {
- putchar(key++);
- break;
- }
- default:
- {
- printf("END");
- break;
- }
- }
菜单跳转
- //1.菜单交互
- while (1)
- {
- //菜单绘制
- printf("------[xxx管理通]------\n");
- printf("\t0.退出系统\n");
- printf("\t1.录入信息\n");
- printf("\t2.删除信息\n");
- printf("\t3.查找信息\n");
- printf("-----------------------\n");
- //菜单交互
- int key = 0;
- scanf_s("%d", &key);
- switch (key)
- {
- case 0:
- printf("退出系统成功!\n");
- system("pause"); //防止闪屏,等待按键继续
- exit(0); //关闭整个程序
- break;
- case 1:
- printf("录入信息!\n");
- break;
- case 2:
- printf("删除信息!\n");
- break;
- case 3:
- printf("查找信息!\n");
- break;
- default:
- printf("输入错误 重新输入!\n");
- break;
- }
- system("pause"); //防止闪屏,等待按键继续
- system("cls"); //清屏
- }
按键交互
- #include <stdio.h>
- #include <stdlib.h> //system函数头文件
- #include <conio.h>
- int main()
- {
- while (1)
- {
- printf("貌美如花的小姐姐朝你走来!---\n");
- char userkey = _getch(); //不可见的按键交互,不需要回车确认输入
- switch (userkey)
- {
- //相同的case处理方案可以把所有case写在一起
- case 'w':
- case 'W':
- //键码值
- case 72:
- printf("你朝-->上方-->逃逸\n");
- break;
- case 'A':
- case 'a':
- case 75:
- printf("你朝-->左边-->逃逸\n");
- break;
- case 's':
- case 'S':
- case 80:
- printf("你朝-->下方-->逃逸\n");
- break;
- case 'd':
- case 'D':
- case 77:
- printf("你朝-->右边-->逃逸\n");
- break;
- }
- }
- return 0;
- }
作用域:使用范围
局部变量
全局变量
外部变量:extern
生命周期:变量产生到死亡的时间段
静态变量:与生命周期有关系
自动变量(auto),默认变量
看一个变量的作用域和生命周期只需要看 { } 即可
全局变量、静态变量没有做初始化,默认值为 0
全局变量不宜过多,因为生命周期只有当程序关闭才结束
- #include <stdio.h>
- int g_num; //全局变量
- extern int e_num; //告诉当前文件 该变量是外部文件中的变量 针对于多文件
- int main()
- {
- //静态变量养成初始化的习惯
- static int sNum=1;
- //会存放上一次执行结果,初始化操作只会做一次
- printf("%d\n", sNum);
- while (1)
- {
- static int sCount = 1; //只会执行一次
- int count = 1; //每一次循环都执行
- sCount++;
- count++;
- printf("sCount=%d,count=%d\n", sCount,count);
- }
- printf("%d\n", g_num);
- printf("%d\n", e_num);
- int iNum = 0; //局部变量
- {
- int number = 0; //局部变量
- printf("%d\n", number);
- }
- int num;
- //error C4700: 使用了未初始化的局部变量“num”
- //printf("%d\n", num);
-
- //printf("%d\n", number); 未定义的标识符
- for (int i;0;)
- {
- }
- //i = 3; //未定义
-
- return 0;
- }
- sCount=2,count=2
- sCount=3,count=2
- sCount=4,count=2