🔥博客主页🔥:【 坊钰_CSDN博客 】
欢迎各位点赞👍评论✍收藏⭐
引言:
大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识,另外,还会不定时更新【C语言训练题库】,想学好C语言的宝子们,一定要收藏起来,一起努力吧!
点赞!收藏!以防以后找不到了!!!
目录
1. if 语句
1.1 语法形式
1.2 else 语句
1.3 分支中包含多条语句
1.4 嵌套if 语句
1.5 else 语句悬空问题
2. 关系操作符
3. 条件操作符
4. 逻辑操作符 && || !
4.1 取反操作符 !
4.2 与运算符 &&
4.3 或运算符 ||
4.4 闰年的判断
5. switch 语句
5.1 switch 计算除以3后的余数
5.2 switch 中的 break 语句
5.3 switch 语句中的 default 语句
5.4 case 和 default 的顺序问题
6. while 循环
6,1 语法结构
6.2 while 循环实践
7. for 循环
7.1 for 循环语法形式
7.2 for 循环执行流程
编辑 7.3 for 循环的实践
8. do-while 循环
8.1 语法形式
8.2 执行流程
8.3 循环实践
9. 小结
1. if 语句
1.1 语法形式
if 语句的语法形式如下:
if (表达式)语句;
表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行
C语言中,0 表示为假,非 0 表示为真 ;
例:
//判断一个数是否为奇数#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num % 2 == 1)printf("%d 是奇数\n", num);return 0;
}
1.2 else 语句
如果上述不为奇数,为偶数,那就要用到 else 语句了
if else 语句语法形式
if (表达式)语句1;
else 语句2;
若表达式为真,执行语句1 ,若表达式为假,执行语句2;
上述判断奇数的代码可以优化一下
#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num % 2 == 1)printf("%d 是奇数\n", num);elseprintf("%d 是偶数\n", num);return 0;
}
1.3 分支中包含多条语句
看下面的代码,猜猜输出的是什么?
#include <stdio.h>
int main()
{int a = 10;if (a > 5)printf("haha");printf("hhhh");return 0;
}
答案是输出 haha;
因为,if 语句后只能执行一条语句,如果想要两条都执行,那要加上大括号 例:
#include <stdio.h>
int main()
{int a = 10;if (a > 5){printf("haha");printf("hhhh");}return 0;
}
这样就打印两条语句了
1.4 嵌套if 语句
if 里面也可以嵌套if 语句
#include <stdio.h>
int main()
{int n = 10;if (n>0){if (n>5){printf("haha");}else{printf("hehe");}}else{printf("hello");}return 0;
}
1.5 else 语句悬空问题
如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配
#include <stdio.h>
int main()
{int a = 0;int b = 2;if(a == 1)if(b == 2)printf("hehe\n");elseprintf("haha\n");return 0;
}
猜猜运行结果是啥?
结果是什么都不打印,这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配
如果我们希望else确实和第⼀个if匹配,可以这样修改代码
#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");}elseprintf("haha\n");return 0;
}
只要带上适当的大括号,代码的逻辑就会更加的清晰,所以大家以后在写代码的时候要注意括号的使用,让代码的可读性更高
2. 关系操作符
C语言主要的关系操作符有下面6个
- > 大于运算符
- < 小于运算符
- >= 大于等于运算符
- <=小于等于运算符
- == 相等运算符
- != 不相等运算符
关系操作符通常返回 0 或 1 ,表示真假
比如: (20>10) ----> 返回 1 ,(10>20) ---> 返回 0
注意: 相等运算符(==) 和 赋值运算符(=) 两个不一样
另⼀个需要避免的错误是:多个关系运算符不能连用
要表达 1 < 2 < 3 时的用法:
//错误用法1 < 2 < 3//正确用法1 < 2 && 2 < 3
3. 条件操作符
条件操作符也叫三目操作符,需要接受三个操作数的
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:
- 如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果
- 如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果
例:求两个数中的最大值
#include <stdio.h>
int main()
{int n = 0;int m = 0;scanf("%d %d", &n, &m);int max = m > n ? m : n;printf("%d", max);return 0;
}
4. 逻辑操作符 && || !
逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下⾯三个运算符
- ! :逻辑取反运算符(改变单个表达式的真假)
- && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
- || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
4.1 取反操作符 !
如果 a 为真的,那 !a 就是假的,反之 a 为假的,那 !a 就是真的
4.2 与运算符 &&
(exsp 1) && (exsp 2) && (exsp 3)
注意:如果 exsp 1 为假( 0 ),那后面两个 exsp 2 和 exsp 3 都不计算了
如果exsp 1 为真,则依次往下计算
4.3 或运算符 ||
(exsp 1) || (exsp 2) || (exsp 3)
注意:如果 exsp 1 为真( 1 ),那后面两个 exsp 2 和 exsp 3 都不计算了
如果exsp 1 为假,则依次往下计算
4.4 闰年的判断
输闰年判断的规则:
- 能被4整除并且不能被100整除是闰年
- 能被400整除是闰年
#include <stdio.h>//代码1
int main()
{int year = 0;scanf("%d", &year);if(year%4==0 && year%100!=0)printf("是闰年\n");else if(year%400==0)printf("是闰年\n");return 0;
}//代码2
int main()
{int year = 0;scanf("%d", &year);if((year%4==0 && year%100!=0) || (year%400==0))printf("是闰年\n");return 0;
}
5. switch 语句
除了 if 语句外,C语言还提供了 switch 语句来实现分支结构
switch 语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式
switch (expression)
{case value1: statementcase value2: statementdefault: statement
}
- switch 后的 expression 必须是整型表达式
- case 后的值,必须是整形常量表达式
5.1 switch 计算除以3后的余数
练习:输入任意⼀个整数值,计算除3之后的余数
#include <stdio.h>int main()
{int n = 0;scanf("%d", &n);switch(n%3){case 0:printf("整除,余数为0\n"); break;case 1:printf("余数是1\n"); break;case 2:printf("余数是2\n"); break;}return 0;
}
- case 和后边的数字之间必须有空格
- 每⼀个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句
5.2 switch 中的 break 语句
我们如果把上述代码中的break全都去掉,看看结果
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n % 3){case 0:printf("整除,余数为0\n");case 1:printf("余数是1\n");case 2:printf("余数是2\n");}return 0;
}
所以在 switch 语句中 break 语句是非常重要的,能实现真正的分支效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了
5.3 switch 语句中的 default 语句
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n){case 0:printf("输入数为 0\n");case 1:printf("输入数为 1\n");case 2:printf("输入数为 2\n");default :printf("输入错误,请重新输入\n");}return 0;
}
5.4 case 和 default 的顺序问题
在 switch 语句中 case 子句和 default 子句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实 际需求的就可以。 不过我们通常是把 default 子句放在最后处理的
6. while 循环
6,1 语法结构
while(表达式){语句;
}
6.2 while 循环实践
例:打印 1~10 数字
#include <stdio.h>
int main()
{int a = 1;while (a <= 10){printf("%d ", a);a++;}return 0;
}
7. for 循环
7.1 for 循环语法形式
for(表达式1; 表达式2; 表达式3){语句;}
- 表达式1 用于循环变量的初始化
- 表达式2 用于循环结束条件的判断
- 表达式3 用于循环变量的调整
7.2 for 循环执行流程
7.3 for 循环的实践
练习:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{for (int i = 1; i <= 10; i++){printf("%d ", i);}return 0;
}
8. do-while 循环
8.1 语法形式
do语句;
while(表达式)
8.2 执行流程
8.3 循环实践
在屏幕上打印1~10的值
#include <stdio.h>
int main()
{int a = 1;do{printf("%d ", a);a++;} while (a <= 10);return 0;
}
9. 小结
以上就是关于【玩转C语言】第四讲的内容了,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持!