一、控制语句及其分类
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
二、分支语句
1、if语句
(1)、if语句的结构介绍
//if条件语句
if(表达式)
语句;
//if else选择语句
if(表达式)
语句1;
else
语句2;
//多分支语句
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
补充一下:
如果表达式的结果为真,则该语句执行,在C语言中0表示假,非0表示真。如果条件成立,要执行多条语句,怎应该使用代码块。如下所示:
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
(2)、悬空else
浅浅问一下大家下面的两个代码运行结果如何?相同吗?
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("OK!\n");
else
printf("NO!\n");
return 0;
}
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("OK!\n");
}
}
else
{
printf("NO!\n");
}
return 0;
}
显然第一个代码是没有输出结果的,第二个代码是会输出NO!由上面两个结果可知else是和离自己较近的if相匹配的。所以我们可以适当的使用{ }使代码的逻辑更加清楚,提高可读性。
2、switch语句
例如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
如果写成 if...else if ...else if 的形式太复杂了,这样就有不一样的语法形式。
这就是switch 语句。
switch语句的结构 :
switch(整型表达式)
{
语句项;
}
语句项就是case语句:
case 整形常量表达式:
语句;
对于上方例子可以由switch语句来表达:
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
换一种情况,周一到周五为工作日输入1-5则输出weekday,周六周日为周末,则输入6/7输出weekend。对应的代码可以这样写:
#include <stdio.h>
//switch代码演示
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
观察代码不免会有这样的疑问,为什么可以只在case:5后面写printf("weekday\n")呢?这是由于switch语句中,运行逻辑是从第一个case语句开始执行,执行完会继续执行第二个case语句,直到遇到break才会跳出switch语句。
default子句在switch语句中的作用
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
default:
printf("输入错误\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
运行结果可以看出来default的的位置与运行次序是一致的,但是当所有的case都不符,也还是会运行default子句。同时也可以看出来没有break语句,switch里面会一直从头运行到结尾,而不会结束,所以break在switch中起着很重要的作用。
今天的分享就到这啦
标签:语句,case,int,C语言,break,switch,奥秘,printf From: https://blog.csdn.net/2402_88991786/article/details/143828909