C语言是结构化的程序设计语言
日常生活中,语言有三种结构,分别是顺序结构,选择结构和循环结构。而选择结构和循环结构也是重中之重。
在C语言中,由一个分号隔开的就是一条语句。补充,C语言中0为假,非0为真。
分支语句(选择结构)(if;switch)
一、if的语法结构
1、if(表达式)————若此处为假,则语句不执行
语句;
int main()
{
int age = 10;
if(age >= 18)
printf(“成年\n”);
return 0
}
结果为不执行。
2、if(表达式)
语句1;
else
语句2 ;
int main()
{
int age = 20
if(age >= 18)
printf(“成年\n”);
else
printf(“未成年\n”);
return 0
}
但是要注意的是
int main()
{
int age = 20
if(age >=18)
printf(“成年\n”);
else
printf(“未成年\n”);
printf(“不能谈恋爱\n”);
return 0
}
如果是这样,结果会出现成年和不能谈恋爱,为什么呢会这样?
因为if——else只能控制一条语句,而不能谈恋爱对于else属于第二条语句,所以不能谈恋爱可以正常被执行。
那么,如果条件成立,要执行多条语句,该如何使用代码块呢?这时候,需要用到{}
int main()
{
int age = 20
if(age >=18)
printf(“成年\n”);
else
{
printf(“未成年\n”);
printf(“不能谈恋爱\n”);
}
return 0
}
3、当出现多分支的时候,我们常用
if(表达式1)
语句1
else if(表达式2)
语句2
else
语句3
int main()
{
int age = 60;
if(age < 18)
printf(“少年\n”);
else if(18 <= age < 26)
printf(“青年\n”);
return 0
}
如果去执行这个代码,会出现青年这个结果,很奇怪,为什么会出现这个结果呢。
其实错就错在else if(18 <= age < 26),我们来分析一下:
首先,age=60,满足18 <= age的条件,满足为真,真则为1,所以<左边为1,而1<26成立,所以最终打出青年这个结果。那么,我们把这个代码优化一下:
int main()
{
int age = 60;
if(age < 18)
printf(“少年\n”);
else if(age >= 18 && age < 26)
printf(“青年\n”);
else if(age >= 26 && age < 40)
printf(“壮年\n”);
else if(age >= 40 && age < 60)
printf(“中年\n”);
else if(age >= 60 && age <= 100)
printf(“老年\n”);
else
printf(“名人\n”);
return 0
}
关于悬空else
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if(b == 2)
printf(“hehe\n”);
else
prinff(“haha\n”);
return 0
}
最终的结果是不打印,因为else是与最近的if匹配,而int a = 0不满足if (a == 1),所以指令不会执行下去。
if书写形式的对比
//代码1
if(condition){
return x;
}
return y;
//代码2
if(condition)
{
return x;
}
else
{
return y;
}
练习
1、判断一个数是否为奇数
2、输出1-100之间的奇数
1、
int main
{
int num = 0;
scanf(“%d”,&num);
if(num%2 == 1)
printf(“是\n”);
return 0;
}
2、
int main
{
int i = 0;
for{i = 1,i <= 100;i++}
{
if(i%2 == 1)
printf(“%d”,i);
}
return 0;
}