目录
顺序结构
从上至下,按顺序执行代码
选择结构之if语句
01零分支
if (条件)
表达式;
02双分支
详见第10篇
if (条件)
{
...
}
else
{
...
}
03多分支
使用if嵌套
if (条件1)
表达式1
else if (条件2)
表达式2
else if (条件3)
表达式3
else if (条件4)
表达式4
...
else
表达式n
//以if打头,else if居中,else殿后
if (条件1)
{
if (条件2)
表达式1
else if (条件3)
表达式2
else
表达式3
}
如:输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if (num > 0)
{
if (num % 2 == 0)
printf("偶数\n");
else
printf("奇数\n");
}
else
{
printf("非正数\n");
}
return 0;
}
if / else 后边默认只能控制一条语句,如果需要写多条语句的时候,需要使用 {},{}内放代码块,执行一个条件下的多条语句
例
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d",&a);
if (a < 0)
printf("A");
else if (a >= 0 && a < 7)
printf("B");
else if (a >= 7 && a < 30)
{
printf("C");
printf("!");
}
else
printf("D");
}
注意:不建议写成(0<=a<7) ,用&&(与)连接
分析:0<=a<7从左向右执行
判断0<=8条件为真,0<=8式子程序改成了1,1<7,条件成立,打印B(改成1的原因见第14篇)
练习
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("A");
else
printf("B");
return 0;
}
求执行结果
结果未打印A也未打印B
分析:else不与if (a==1)匹配 与 if (b==2)匹配即悬空else
注意:else与距离最近的if匹配 ,尤其注意书写的代码风格
实际上:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("A");
else
printf("B");
}
return 0;
}
如果想与第一个if匹配,带上大括号
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("A");
}
else
{
printf("B");
}
return 0;
}
小贴士
建议写成1==a,2==b
有时误写成a=1,b=2编译器不会报错,而1=a,2=b则会,由此减少错误
写判断句时建议常量写在左侧