正常情况下,程序从main函数开始,语句自上而下执行每一条语句 。一些语句可以控制、修改程序的流程,称之为流程控制语句
条件判断语句:
1、if
if(表达式)
{
语句
} //代码段
2、if-else
if(表达式)
{
语句1
}
else
{
语句2
}
[逻辑]当程序执行到if-else语句时,首先计算表达式的值,如果表达式的值为真,则执行语句1,不执行语句2,否则执行语句2,不执行语句1.
[逻辑二则]
#include
int main()
{
char chr = ‘\0’;
scanf(“%c”,&chr);
if((chr >= ‘A’ && chr <= ‘Z’) ||
(chr >=’a’ && chr <= ‘z’))
{
printf(“是字母:%c\n”,chr);
}
else
{
printf(“不是字母:%c\n”,chr);
}
return 0;
}
3、if-else if
格式:
if(表达式1)
{
语句1
}
else if(表达式2)
{
语句2
}
else if(表达式3)
{
语句3
}else if(表达式N)
{
语句N
}
else//可有可无
{
}
逻辑:当程序执行到if else if,首先执行表达式1的值,如果表达式1的值为真,那么执行语句1,执行完语句1,跳出if else if语句执行“外语句”,如果表达式1的值为假,不执行语句1,继续执行表达式2的值,如果表达式2的值为真,则执行语句2,执行完语句2跳出if else if继续执行“外语句”,依此类推
[注意]再if else if语句中,每一个else都是对前面表达式的否定👹
[逻辑多则]
练习:输入一个人的年龄,输出不同的截断(if-else if)
0~3幼儿
4~12童年
13~18 少年
19~30 青年
31~40 壮年
41~50 中年
51~150 老年
150~ 妖精
0以下的同上
#include
int main()
{
int age = 0;
scanf(“%d”,&age);
if(age <=0 )
{
printf(“妖怪哪里逃!!😄\n”);
}
else if(age <=3)
{
printf(“幼儿\n”);
}
else if(age <= 12)
{
printf(“童年\n”);
}
else if(age <= 18)
{
printf(“少年\n”);
}
else if(age <= 30)
{
printf(“青年\n”);
}
else if(age <=40)
{
printf(“壮年\n”);
}
else if(age <=50)
{
printf(“中年\n”);
}
else if(age <=150)
{
printf(“老年\n”);
}
else if(age > 150)
{
printf(“妖怪哪里逃!!😄\n”);
}
return 0;
}
逻辑跳转语句
gotoswitch
1\goto
无条件跳到指定标号位置,向下继续执行
[注意]程序中一般不建用goto,他没有明确的套用关系,并且不能栈
#include
int main()
{
printf(“——0\n”);
printf(“——1\n”);
goto label;
printf(“——2\n”);
printf(“——3\n”);
printf(“——4\n”);
printf(“——5\n”);
label: //标号是冒号,起名符合标识符规则,位置随意
printf(“——6\n”);
printf(“——7\n”);
printf(“——8\n”);
printf(“——9\n”);
printf(“——10\n”);
printf(“——11\n”);
return 0;
}
switch()语句
格式:
switch(表达式)
{
case 标号1:
语句1
case 标号2:
语句2
case 标号3:
语句3
……
case 标号n:
语句n
default:
语句
}
【逻辑】当程序执行到swithc语句时,首先计算表达式的只,表达式的值是几,就跳到对应标号处继续向下执行。如果没有对应的标号,则跳到default处向下继续执行。
【break】用于跳出switch语句和循环语句,无视if。如果switch或者是循环zhi中右嵌套使用,那么break只跳出距离他最近的switch或者循环
#include
int main()
{
int a = 0;
scanf(“%d”,&a);
switch (a)
{
case 0:
printf(“the number is %d\n”,a);
break;
case 1:
printf(“the number is %d\n”,a);
break;
case 2:
printf(“the number is %d\n”,a);
break;
case 3:
printf(“the number is %d\n”,a);
break;
default:
printf(“输入有误😄\n”);
}
return 0;
}
输入星期的第一个字母,输出周几
monday
tuesday
wednesday
thursday
friday
saturday
sunday
#include
int main()
{
char chr = ‘\0’;
char dis = ‘\0’;
scanf(“%c%c”,&chr,&dis);
switch (chr)
{
case ‘m’:
case ‘M’:
printf(“今天是星期一\n”);
break;
case ‘w’:
case ‘W’:
printf(“今天是星期三\n”);
break;
case ‘f’:
case ‘F’:
printf(“今天是星期五\n”);
break;
case ‘t’:
case ‘T’:
scanf(“%c”,&chr);
switch (chr)
{
case ‘u’:
case ‘U’:
printf(“今天是星期二\n”);
break;
case ‘h’:
case ‘H’:
printf(“今天是星期四\n”);
break;
default:
printf(“—-input wrong\n”);
}
break;
default:
//default里面不接空语句,可以直接写“;”
printf(“input wrong\n”);
}
return 0;
}