分支程序设计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配对呢? [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;

else

max = b;

可用条件表达式写为 max = (a>b) ? a : b; 执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。  

使用条件表达式时,还应注意以下几点:

  1) 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。 因此

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]  

switch语句

  C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: [caption id="attachment_76" align="aligncenter" width="150"] switch语句[/caption]   其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。 [codesyntax lang="c"]
#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]  

在使用switch语句时还应注意以下几点:

1) 在case后的各常量表达式的值不能相同,否则会出现错误。 2) 在case后,允许有多个语句,可以不用{}括起来。 3) 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 4) default子句可以省略不用。   [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LCRDQACUICGG']视频下载[/Downlink]
posted @ 2010-10-17 09:00  我就爱小甲鱼  阅读(148)  评论(0编辑  收藏  举报