分支程序设计04 – 零基础入门学习C语言13
第四章:分支程序设计04
让编程改变世界
Change the world by program
if语句的嵌套
当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。
其一般形式可表示如下:
if(表达式)
if语句;
或者为
if(表达式)
if语句;
else
if语句;
在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。
例如:
if(表达式1)
if(表达式2)
语句1;
else
语句2;
其中的else究竟是与哪一个if配对呢?
if语句配对
为了避免这种二义性,C语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。
比较以下两题目:哪一个是运用嵌套方法?
include
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[B]
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[B]采用嵌套结构实质上是为了进行多分支选择,实际上有三种选择即A>B、A[B]
这种问题用if-else-if语句也可以完成。而且程序更加清晰。
因此,在一般情况下较少使用if语句的嵌套结构。以使程序更便于阅读理解
条件运算符和条件表达式
条件运算符为“?和:”,它是一个三目运算符,即有三个参与运算的量。
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2: 表达式3
其求值规则为:如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。
条件表达式通常用于赋值语句之中。
例如条件语句:
if( a > b )
max = a;
else
max = b;
可用条件表达式写为
max = (a>b) ? a : b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
使用条件表达式时,还应注意以下几点:
- 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此
max=(a>b)?a:b
可以去掉括号而写为
max=a>b?a:b
- 条件运算符?和:是一对运算符,不能分开单独使用。
- 条件运算符的结合方向是自右至左。
例如:
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。
include
void main()
{
int a,b,max;
printf("n input two numbers: ");
scanf("%d%d",&a,&b);
printf("max=%d",a>b?a:b);
}
补充:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
include
void main ( )
{
char ch;
scanf("%c", &ch);
ch=(ch>='A' && ch
switch语句
C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
switch语句
其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
include
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");
}
}
为了避免上述情况,C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。
请看后边例子……
include
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");
}
}
在使用switch语句时还应注意以下几点:
- 在case后的各常量表达式的值不能相同,否则会出现错误。
- 在case后,允许有多个语句,可以不用{}括起来。
- 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
- default子句可以省略不用。
视频下载
技术, IT技术, 视频教程, C语言
风险提示及免责条款
市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!