让编程改变世界
Change the world by program
if语句;
或者为 if(表达式)if语句;
elseif语句;
在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。 例如: if(表达式1) if(表达式2)语句1;
else语句2;
其中的else究竟是与哪一个if配对呢? [caption id="attachment_75" align="aligncenter" width="150"] if语句配对[/caption] 为了避免这种二义性,C语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。 比较以下两题目:哪一个是运用嵌套方法? [codesyntax lang="c"]#include <stdio.h> void main() { int a,b; printf("please input A,B: "); scanf("%d%d",&a,&b); if( a!=b ) if( a > b ) printf("A>Bn"); else printf("A<Bn"); else printf("A=Bn"); }[/codesyntax] [codesyntax lang="c"]
#include <stdio.h> void main() { int a,b; printf("please input A,B: "); scanf("%d%d",&a,&b); if( a == b ) printf("A=Bn"); else if( a > b ) printf("A>Bn"); else printf("A<Bn"); }[/codesyntax] 采用嵌套结构实质上是为了进行多分支选择,实际上有三种选择即A>B、A<B或A=B。 这种问题用if-else-if语句也可以完成。而且程序更加清晰。 因此,在一般情况下较少使用if语句的嵌套结构。以使程序更便于阅读理解
表达式1? 表达式2: 表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。 例如条件语句: if( a > b )max = a;
elsemax = b;
可用条件表达式写为 max = (a>b) ? a : b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。max=(a>b)?a:b
可以去掉括号而写为max=a>b?a:b
2) 条件运算符?和:是一对运算符,不能分开单独使用。 3) 条件运算符的结合方向是自右至左。 例如:a>b?a:c>d?c:d
应理解为a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。 [codesyntax lang="c"]#include <stdio.h> void main() { int a,b,max; printf("n input two numbers: "); scanf("%d%d",&a,&b); printf("max=%d",a>b?a:b); }[/codesyntax] 补充:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 [codesyntax lang="c"]
#include <stdio.h> void main ( ) { char ch; scanf("%c", &ch); ch=(ch>='A' && ch<='Z') ? (ch+32) : ch; printf("%cn", ch); }[/codesyntax]
#include <stdio.h> void main() { int a; printf("input integer number: "); scanf("%d",&a); switch (a) { case 1:printf("Mondayn"); case 2:printf("Tuesdayn"); case 3:printf("Wednesdayn"); case 4:printf("Thursdayn"); case 5:printf("Fridayn"); case 6:printf("Saturdayn"); case 7:printf("Sundayn"); default:printf("errorn"); } }[/codesyntax] 为了避免上述情况,C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。 请看后边例子…… [codesyntax lang="c"]
#include <stdio.h> void main() { int a; printf("input integer number: "); scanf("%d", &a); switch (a) { case 1:printf("Mondayn"); break; case 2:printf("Tuesdayn"); break; case 3:printf("Wednesdayn"); break; case 4:printf("Thursdayn"); break; case 5:printf("Fridayn"); break; case 6:printf("Saturdayn"); break; case 7:printf("Sundayn"); break; default:printf("errorn"); } }[/codesyntax]