C语言分支结构之ifelse语句
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语⾔分⽀结构之ifelse语句
前⾯我们看到的代码都是顺序执⾏的,也就是先执⾏第⼀条语句,然后是第⼆条、第三条……⼀直到最后⼀条语句,这称为顺序结构。
但是对于很多情况,顺序结构的代码是远远不够的,⽐如⼀个程序限制了只能成年⼈使⽤,⼉童因为年龄不够,没有权限使⽤。
这时候程序就需要做出判断,看⽤户是否是成年⼈,并给出提⽰。
在C语⾔中,使⽤if和else关键字对条件进⾏判断。
请先看下⾯的代码:
1. #include <stdio.h>
2. int main()
3. {
4. int age;
5. printf("请输⼊你的年龄:");
6. scanf("%d", &age);
7. if(age>=18){
8. printf("恭喜,你已经成年,可以使⽤该软件!\n");
9. }else{
10. printf("抱歉,你还未成年,不宜使⽤该软件!\n");
11. }
12. return 0;
13. }
可能的运⾏结果:
请输⼊你的年龄:23↙
恭喜,你已经成年,可以使⽤该软件!
或者:
请输⼊你的年龄:16
抱歉,你还未成年,不宜使⽤该软件!
这段代码中,age>=18是需要判断的条件,>=表⽰“⼤于等于”,等价于数学中的≥。
如果条件成⽴,也即 age ⼤于或者等于 18,那么执⾏if后⾯的语句(第8⾏);如果条件不成⽴,也即 age ⼩于 18,那么执⾏else后⾯的语句(第10⾏)。
if 和 else 是两个新的关键字,if 意为“如果”,else 意为“否则”,⽤来对条件进⾏判断,并根据判断结果执⾏不同的语句。
总结起来,if else 的结构为:
if(判断条件){
语句块1
}else{
语句块2
}
意思是,如果判断条件成⽴,那么执⾏语句块1,否则执⾏语句块2 。
其执⾏过程可表⽰为下图:
所谓语句块(Statement Block),就是由{ }包围的⼀个或多个语句的集合。
如果语句块中只有⼀个语句,也可以省略{ },例如:
1. if(age>=18) printf("恭喜,你已经成年,可以使⽤该软件!\n");
2. else printf("抱歉,你还未成年,不宜使⽤该软件!\n");
由于if else 语句可以根据不同的情况执⾏不同的代码,所以也叫分⽀结构或选择结构,上⾯的代码中,就有两个分⽀。
求两个数中的较⼤值:
1. #include <stdio.h>
2. int main()
3. {
4. int a, b, max;
5. printf("输⼊两个整数:");
6. scanf("%d %d", &a, &b);
7. if(a>b) max=a;
8. else max=b;
9. printf("%d和%d的较⼤值是:%d\n", a, b, max);
10. return 0;
11. }
运⾏结果:
输⼊两个整数:34 28↙
34和28的较⼤值是:34
本例中借助变量max,⽤max来保存较⼤的值,最后将max输出。
只使⽤if语句
有的时候,我们需要在满⾜某种条件时进⾏⼀些操作,⽽不满⾜条件时就不进⾏任何操作,这个时候我们可以只使⽤ if 语句。
也就是说,if else 不必同时出现。
单独使⽤ if 语句的形式为:
if(判断条件){
语句块
}
意思是,如果判断条件成⽴就执⾏语句块,否则直接跳过。
其执⾏过程可表⽰为下图:
只使⽤ if 语句来求两个数中的较⼤值:
1. #include <stdio.h>
2. int main()
3. {
4. int a, b, max;
5. printf("输⼊两个整数:");
6. scanf("%d %d", &a, &b);
7. max=b; // 假设b最⼤
8. if(a>b) max=a; // 如果a>b,那么更改max的值
9. printf("%d和%d的较⼤值是:%d\n", a, b, max);
10. return 0;
11. }
运⾏结果:
输⼊两个整数:34 28
34和28的较⼤值是:34
本例程序中,输⼊两个数a、b。
把b先赋予变量max,再⽤ if 语句判别max和b的⼤⼩,如max⼩于b,则把b赋予max。
因此max中总是⼤数,最后输出max的值。
多个if else语句
if else 语句也可以多个同时使⽤,构成多个分⽀,形式如下:
if(判断条件1){
语句块1
} else if(判断条件2){
语句块2
}else if(判断条件3){
语句块3
}else if(判断条件m){
语句块m
}else{
语句块n
}
意思是,从上到下依次检测判断条件,当某个判断条件成⽴时,则执⾏其对应的语句块,然后跳到整个 if else 语句之外继续执⾏其他代码。
如果所有判断条件都不成⽴,则执⾏语句块n,然后继续执⾏后续代码。
也就是说,⼀旦遇到能够成⽴的判断条件,则不再执⾏其他的语句块,所以最终只能有⼀个语句块被执⾏。
例如,使⽤多个 if else 语句判断输⼊的字符的类别:
1. #include <stdio.h>
2. int main(){
3. char c;
4. printf("Input a character:");
5. c=getchar();
6. if(c<32)
7. printf("This is a control character\n");
8. else if(c>='0'&&c<='9')
9. printf("This is a digit\n");
10. else if(c>='A'&&c<='Z')
11. printf("This is a capital letter\n");
12. else if(c>='a'&&c<='z')
13. printf("This is a small letter\n");
14. else
15. printf("This is an other character\n");
16. return 0;
17. }
运⾏结果:
Input a character:e↙
This is a small letter
本例要求判别键盘输⼊字符的类别。
可以根据输⼊字符的ASCII码来判别类型。
由ASCII码表可知ASCII值⼩于32的为控制字符。
在“0”和“9”之间的为数字,在“A”和“Z”之间为⼤写字母,在“a”和“z”之间为⼩写字母,其余则为其它字符。
这是⼀个多分⽀选择的问题,⽤多个 if else 语句编程,判断输⼊字符ASCII码所在的范围,分别给出不同的输出。
例如输⼊为“e”,输出显⽰它为⼩写字符。
在使⽤ if 语句时还应注意以下两点:
在 if 语句中,判断条件必须⽤括号括起来。
语句块由{ }包围,但要注意的是在}之后不需要再加分号;(当然加上也没错)。
if语句的嵌套
if 语句也可以嵌套使⽤,例如:
1. #include <stdio.h>
2. int main(){
3. int a,b;
4. printf("Input two numbers:");
5. scanf("%d %d",&a,&b);
6. if(a!=b){ //!=表⽰不等于
7. if(a>b) printf("a>b\n");
8. else printf("a<b\n");
9. }else{
10. printf("a=b\n");
11. }
12. return 0;
13. }
运⾏结果:
Input two numbers:12 68
a<b
if 语句嵌套时,要注意 if 和 else 的配对问题。
C语⾔规定,else 总是与它前⾯最近的 if 配对,例如:
1. if(a!=b) // ①
2. if(a>b) printf("a>b\n"); // ②
3. else printf("a<b\n"); // ③
③和②配对,⽽不是和①配对。