个人主页:天寒雨落的博客_CSDN博客-c,CSDN竞赛,python领域博主
💬 刷题网站:蓝桥杯ACM训练系统 - C语言网 (dotcpp)特别标注:该博主将长期更新c语言内容,初学c语言的友友们,关注博主不迷路!
目录
一、if语句
1.if语句
实例
2.if-else语句
实例
3. if-else if-else语句
实例
总结:
二、switch语句
1.一般形式
实例
2.省略式
实例
易错点:
三、if与switch语句混用
实例
四、总结
一、if语句
1.if语句
if(条件表达式){
代码
}
如果表达式为真则执行{}里的代码,如果不满足表达式的条件则跳过。
特别注意if条件表达式后面是没有;的
实例
请输入您的年龄,如果大于18,输出已成年
代码:
#include "stdio.h"
int main() {
int age;
scanf("%d", &age);
if (age > 18) {
printf("已成年!");
}
return 0;
}
或
#include "stdio.h"
int main() {
int age;
scanf("%d", &age);
if (age > 18)
printf("已成年!");
return 0;
}
执行结果:
注意两个代码是等效的,因为if语句有两类写法,一种是带{},一种是不带{},带{}的如果满足if条件则执行{}里面的语句,不带{}的只有下面的一行代码属于if语句里的内容(注意这里判断一行语句并非是真正的行列里的一行而是依靠;区分的,每行语句以分号结尾) 。
相关报错:[错误] 非法字符 '\243' 在程序中
原因:有中文字符,可能是引号也可能是分号。
if条件语句的判断:
1.(数字)为真
2.(x=1;)语句(去掉分号即可“;”代表一个语句的结束)不能为条件表达式
3.(x=4,x-2)x=4,x-2的值为2,为真
4.('字母')字母对于的ascll码不为0就为真
5.a=4,b=4(a>3&&b<5)为真(如果不理解如何判断&&和||请看上一篇)
2.if-else语句
if(条件表达式){
语句序列1
}
else{
语句序列2
}
如果表达式为真则执行{}里的语句序列1,如果不满足表达式的条件则执行else里的语句序列2
实例
请输入您的年龄,如果大于18,输出已成年,否则输出未成年
代码:
#include "stdio.h"
int main() {
int age;
scanf("%d", &age);
if (age > 18)
{
printf("已成年!");
} else {
printf("未成年!");
}
return 0;
}
执行结果:
3. if-else if-else语句
对于同类型的判断用else if就相当于if语句只是里面的条件不一样,所以前面加了一个else。如果执行了if语句或else if语句则后面的条件的else if语句不在执行。
实例
请输入您的年龄,如果小于12,输出儿童,如果大于18小于65,输出青年,否则输出老年
代码:
#include "stdio.h"
int main() {
int age;
scanf("%d", &age);
if (age < 12) {
printf("儿童!");
} else if (age > 18 && age < 65) {
printf("青年");
} else {
printf("老年!");
}
return 0;
}
执行结果:
注意c语言里不能直接写18<age<65,要把它分开写,写成age>18||age<65 ,因为它的执行结果是这样的,比如age为32,18<32为真的值为1,然后那这个1和65比较大小,1<65为真执行if语句,但是age为12,18<12为假的值为0,然后那这个0和65比较大小,0<65为真,执行if语句。不管输入什么这个条件都为真,都执行这个条件语句。
总结:
在if条件语句里只要不是0和false都为真都满足
二、switch语句
1.一般形式
switch(表达式){
case 常量1:语句序列1;break;
case 常量2:语句序列2;break;
......
case 常量n:语句序列n;break;
default:语句序列n+1;
}
计算表达式的值,并取整,那表达式取证的值与常量n进行等量判断,如果两个值相等则执行语句序列n,并跳出switch结构(因为语句序列n后面有break语句,break语句:各语句序列最后的break语句,用于跳出switch语句),default(可写可不写)相当于if语句里的else语句,若表达式的值与所有常量均不相等,则执行语句序列n+1,因为default是switch语句的最后一个部分所以后面不用加break了。
实例
输入一个数字输出对应的周几
#include "stdio.h"
int main() {
int day;
scanf("%d", &day);
switch (day) {
case 1:
printf("周一!");
break;
case 2:
printf("周二!");
break;
case 3:
printf("周三!");
break;
case 4:
printf("周四!");
break;
case 5:
printf("周五!");
break;
case 6:
printf("周六!");
break;
case 7:
printf("周七!");
break;
default:
printf("输入有效数字!");
}
return 0;
}
执行结果:
如果不加break语句的执行结果:
2.省略式
case 常量1:语句序列1;break;
case 常量2:语句序列2;break;
case 常量3:语句序列3;break;
case 常量4:语句序列4;break;
如果语句序列1,语句序列2,语句序列3,语句序列4相等的话可以写成:
case 常量1:
case 常量2:
case 常量3:
case 常量4:语句序列4;break;
实例
输入月份,输出该月的天数
代码:
#include "stdio.h"
int main() {
int month, day;
printf("请输入月份:");
scanf("%d", &month);
switch (month) {
case 2:
day = 29;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
default:
day = 31;
}
printf("第%d月有%d天", month, day);
return 0;
}
执行结果:
易错点:
1.case后面只能写成常量而不是范围也不能是小数不能包含变量,例如2~4,a~b,3.14,x+1等
2.case后面容易漏写break语句,如果没有加break语句,它就会把以下所有语句序列都执行一遍直到执行到break语句或default语句
三、if与switch语句混用
实例
输入年份和月份,输出该月的天数
代码:
#include "stdio.h"
int main() {
int year, month, day;
printf("请输入月份:");
scanf("%d%d", &year, &month);
switch (month) {
case 2:
day = 28;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
day = day + 1;
}
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
default:
day = 31;
}
printf("这个月有%d天", day);
return 0;
}
执行结果:
四、总结
if语句的条件表达式比较直接,switch语句的表达式需要构造。switch的效率比if多,一般判断条件较多的时候用switch比如:分数,月份。较少的时候用if-else,switch只计算一次,if-else每一个条件都要计算。
各位C语言的初学者有问题随时都可以问我,随时为您解惑!!!
点赞👍+评论✏️+收藏⭐️是对博主最大的鼓励与支持!!!
更多推荐
【初学者入门C语言】之选择结构语句(三)
发布评论