IF语句
- 单独使用
- 只有if语句的代码为真时,内部的代码块才会执行
- if语句内部代码块只有一行时,可以省略大括号
if(表达式)
执行语句xxxx; ---> 如果表达式为真,那么执行该语句
yyyyy; ---> 不管条件是否为真,永远执行这个语句,因为这个表达式不属于if响应范围
- 配合else - else if使用
//if else语句
if(表达式)//如果为真,执行复合语句1,如果为假,则执行复合语句2
{
复合语句1;
}
else{
复合语句2;
}
-------------------------------------------------
//if else-if语句
if(表达式1)//如果为真,执行复合语句1
{
复合语句1;
}
else if(表达式2)
//如果判定条件1和判定条件2都满足,那么只会执行复合语句1,而不会执行复合语句2
{
复合语句2;
}
else if(表达式3)
{
复合语句3;
}
else //以上三个条件都不满足的时候,就会执行这个
{
复合语句4;
}
- 嵌套式使用
//if(){if(){}} 嵌套使用
int money = 100;
if (money > 9800){
printf("你是富人 \n");
}
if (money >= 110){
printf("你是中产 \n");
}
else{
if (money >= 50){
printf("你是有钱的底层 \n");
}
else if (money >= 10) {
printf("你是普通人 \n");
}
else{
printf("你是穷人 \n");
}
printf("你是底层 \n");
}
switch语句
- 表达式的值必须为整数(整型、字符型、枚举)
- 常量表达式的值必须为整数值,每个case后面的常量表达式的值必须不同
- 常量表达式的值与某个case后面的常量表达式的值相同的时候,就会打开开关执行冒号后的语句,直到出现break语句,就会跳出switch,否则就会轮到下一个case(穿透)
- break:
- 提前跳出switch循环
- 所有的case后面的常量表达式都不匹配时,就会执行default后面的语句
- 不适合用作范围判断
switch(表达式) // 或者也可以说是 判断值
{
case 常量表达式1:
执行语句1
break;
case 常量表达式2:
执行语句2
break;
case 常量表达式3:
执行语句3
break;
default:
其他情况下执行的语句
break;
}
循环体
for语句
for( 初始化语句表达式1; 判断语句表达式2; 循环操作语句表达式3)
{
循环体
}
while语句
while(表达式)//表达式的值为真(非0)时,进入循环体;为假时,跳出循环体
{
循环体//一定要写更新条件,否则陷入死循环
}
for循环更注重循环次数,while循环更注重循环条件
for <---> while 可以相互替换
int M = 777;
printf("请输入月份! \n");
//while循环
while (scanf("%d", &M) == 0)
{
printf("输入失败!请重新输入! \n");
getchar(); // 清除从缓冲区刷新出来的垃圾
}
//for循环
for (; scanf("%d", &M) == 0; )
{
printf("输入失败!请重新输入! \n");
getchar(); // 清除从缓冲区刷新出来的垃圾
}
do - while语句
无论条件是否满足,至少执行一次循环
do{
循环体
}while(表达式); //注意:表达式后有一个分号
goto 语句
- 可以跳转到当前函数的任意地方
- 向上跳转
- 可以与if构成循环
- 向下跳转
- 可以跳出多重循环
- 向上跳转
goto 标签;
标签: //代码跳转到此处执行
break和continue
- break
- 跳出最近一层循环,如果有多层循环,只能跳出一层
- 只能作用于循环语句和switch语句中
- 不能单独用于if语句
- cintinue
- 退出本次循环,进入下次循环
- 只能用于循环体,不能单独用于if或switch语句,除非外面包含了循环
练习:质数的求解和算法优化
#include <math.h> //math是动态库,需要-lm参数编译运行
int num = 29;
int flag = 1; // flag 是一个假设 1 表示假设他是质数 0 不是质数
//sqirt()开根号 ,数字乘法对称的一个数 乘以 大的数 得到目标结果
//平方根就是对称点,作用:减少循环次数
for (int i = 2; i < sqrt(num); i++)
{
printf("%d ", i);
if (num % i == 0) // 数字被除自身和1以外其他数整除, 表示不是质数,没有必要继续循环了
{
flag = 0;
break;
}
}
printf("\n");
printf("flag = %s \n", flag == 1 ? "是质数" : "不是质数");
Comments NOTHING