• 分支程序设计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]
  • 相关阅读:
    POJ
    hdu 5652
    CodeForces
    #6285. 数列分块入门 9
    #6284. 数列分块入门 8
    #6283. 数列分块入门 7
    #6282. 数列分块入门 6
    #6280. 数列分块入门 4 #6281. 数列分块入门 5
    #6278. 数列分块入门 2和#6278. 数列分块入门 3
    spark-sklearn TypeError: 'JavaPackage' object is not callable
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3845953.html
Copyright © 2020-2023  润新知