• 预科C语言分支结构


    c程序的结构:

    顺序结构

    a = c;

    b = 6;

    选择结构(分支结构)

    if

    switch

    循环结构

    if goto

    for

    while

    do while

    1.分支结构 (if

    if语句有三种基本形式

    (1)

    if(表达式)

    语句

    假如“表达式”的值为真(非0,则执行“语句”

    eg:

    if(没吃早饭)

    吃早饭

    “表达式”:C语言任意合法的表达式都可以

    只需要一个有值的表达式

    “语句”:

    表达式  

    a+b

    表达式语句

    a+b;

    c语言中语句:

    表达式语句

    if

    while

    switch

    for

    goto

    do while

    return

    。。。。。

    单语句:只有一个;的语句

    复合语句:

    if/switch/for/while/do_while/{}

    if(5 > 4)

    {

    a = 5;

    b = 6;

    }

    编译建议:

    不管if后面有没有语句,先打{},确定if的“管辖范围”

    if(表达式)

    {

    语句

    }

    if(5>4>3;)//error

    {

    }

    if(12345)//right

    {

    }

    ===

    int sum(int a,int b)

    {

    return a+b;

    }

    if(sum(3,4))//right  sum(3,4) 函数调用表达式

    {

    }

    (2)

    if(表达式)

    语句1

    else

    语句2

    如果“表达式”的值为真(成立,非0),则执行语句1

    否则(表达式的值为假(0)),则执行语句2

    “表达式”:C语言任意合法的表达式都可以

    只需要一个有值的表达式

    “语句”

    单语句:只有一个;的语句

    复合语句:

    if/switch/for/while/do_while/{}

    只要出现else,就一定要有一个与之匹配的if

    eg:

    if(5>4)

    a = 4;

    b = 6;

    else //error ,else没有匹配的if

    a = 1024;

    => =>编译建议:

    不管if,else后面有没有语句,先打{},确定其“管辖范围”

    if()

    {

    }

    else

    {

    }

    3

    if(表达式1)

    语句1    // "表达式1为真" =》语句1

    else if(表达式2)

    语句2    //"表达式1" 为假,且 “表达式2”为真 =》语句2

    else if(表达式3)

    语句3

    else if(表达式4)

    语句4

    ...

    else if(表达式n)

    语句n

    else

    语句m

    上述if,是排斥关系,意思就是只要执行了某个if,后面的if就不会去判断

    if(表达式1)

    语句1    

    if(表达式2)

    语句2    

    if(表达式3)

    语句3

    if(表达式4)

    语句4

    ...

    if(表达式n)

    语句n

    上述if,是并列关系,即使执行了语句1,照样判断表达式2,表达式3....

    eg:

    if()

    if() 语句

    else 语句

    else

    if() 语句

    else 语句

    else总是与它上面的,最近的,同级的,未匹配的if匹配

    =

    if()

    {

    if()

    {

    语句

    }

    else

    {

    语句

    }

    }

    else

    {

    if()

    {

    语句

    }

    else

    {

    语句

    }

    }

    练习:

    1)从键盘上输入一个字符,判断是否为字母

    如果是输出YES”,否则输出“NO

    先写伪代码

    //step1:从键盘上输入一个字符

    char c;

    scanf();

    //step2:判断是否为字母

    if(c是一个字母)

    {

    输出  “YES

    }

    else

    {

    输出NO

    }

    伪代码  = 算法/思路

    =》实际的代码

    #include <stdio.h>

    #include <string.h>

    int main()

    {

    //ASC码 为65-  97-

    // '0' ~'9'  48 ~57

    // 'a'~'z'   97 ~122

    // 'A'~'Z'   65 ~ 90

    char a;

    scanf("%c", &a);

    if((a <= 122 && a >= 97) || (a <= 90 && a >= 65))

    {

    printf("YES ");

    }

    else

    {

    printf("NO ");

    }

    return 0;

    }

    (2)从键盘上输入三个整数a,b,c。求最大值并输出

    //step1:从键盘上输入三个整数a,b,c

    int a,b,c;

    scanf("%d%d%d",&a,&b,&c);

    //step2:判断

    if(a最大)

    {

    输出a

    }

    else if(b最大)

    {

    //输出b

    printf("b = %d ",b);

    }

    else

    {

    输出c

    }

    "a最大" :a >= b && a >= c

    "b最大" b >= a && b >= c

    =============

    两两比较

    int max;//用来记录最大的数值

    if(a >b)

    {

    max = a;

    }

    else

    {

    max = b;

    }

    =>max = a>b ? a : b;

    max = max > c ? max : c;

    printf("max = %d ",max);

    (3)

    从键盘上输入三个整数a,b,c。判断由这三个数为边,能不能组成一个三角形,

    如果可以,打印YES,否则打印NO

    //step1:从键盘上输入三个整数a,b,c

    int a,b,c;

    scanf("%d%d%d",&a,&b,&c);

    //step2:判断

    if(是能组成三角形)

    {

    print yes

    }

    else

    {

    print no

    }

    能组成三角形 :

    任意两边之和大于第三边

    <=> a+b > c && a+c > b && b+c > a

    (4)

    输入两个数a,b,按照从小到大的顺序输出

    a = 1;

    b = 3;

    int a,b,t;

    scanf("%d%d",&a,&b)

    if(a > b)

    {

    t = b;

    b = a;

    a = t;

    }

    printf("%d,%d",a,b);

    (5)输入三个数a,b,c,按照从小到大的顺序输出

    ===============

    int a;

    if(a == 1)

    {}

    else if(a == 2)

    {}

    else if(a == 3)

    {}

    ...

    else

    {}

    是在把a的值一一列举

    =switch case

    2.switch语句

    把一个“表达式”的值,一一列举

    语法形式:

    switch(表达式)

    {

    case 常量表达式1:

    语句1

    case 常量表达式2:

    语句2

    ..

    case 常量表达式n:

    语句n

    default:

    语句m

    }

    switch语句的实质

    把一个表达式”的值,一一列举

    判断“表达式”的值,如果“表达式”的值为“常量表达式1”(匹配case 常量表达式1

    则从“语句1”开始往下面执行,直到遇到break或者switch结束;

    如果“表达式”的值为“常量表达式2”(匹配case 常量表达式2

    则从“语句2”开始往下面执行,直到遇到break或者switch结束;

    ....

    如果“表达式”的值与每个case后面的值,都不匹配,则匹配default,则

    从语句m往下面执行,直到遇到break或者switch结束;

    注意:

    1)“表达式”的值必须为整数值

    why?

    表达式”的值的类型必须为:整型,字符型,枚举

    2)每个case后面的“常量表达式”的值也必须为整数值,每个case后面的常量表达式的值必须互不相同

    3)各个casedefault的出现次序不影响执行结果

    switch(a)

    {

    default

    语句

    case 1:

    语句1

    case 2:

    语句2

    case 3

    ;;

    break;

    }

    (4)当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,

    若所有case中的常量表达式的值都与表达式的值不相等,就从default后面的语句开始执行

    (5)多组case可以共用一组执行语句

    switch(a)

    {

    default

    语句

    case 1:

    case 2:

    switch(b)

    {

    case 1:

    break;

    }

    case 3

    printf("gfiurehio ");

    }//switch结束

    (6)breakcase里面用于跳出所属的switch语句

    练习:

    输入分数

    A : [90,100] 1

    B: [80,90)  2

    C:  [70,80)  3

    D: [60,70)  4

    E: 60以下   5

    int score;

    scanf("%d",&score);

    if(score>=90 && score <=100)

    {

    l = 1;

    }

    switch(l)

    {

    case 1:

    语句;

    break;

    case 2:

    ...

    }

    ======

    int score;

    switch(score/10)

    {

    case 10:

    case 9:

    printf("A ");

    break;

    case 8:

    printf("B ");

    break;

    case 7:

    printf("C ");

    break;

    case 6:

    printf("D ");

    break;

    default:

    printf("E ");

    }

    END

  • 相关阅读:
    胖虎都看得懂的CSS入门
    Python-ORM之sqlalchemy的简单使用
    类似fabric主机管理demo
    Redis 数据库学习
    sublime 3插件安装记录
    斐波那契数列—java实现
    mysql基础操作记录
    [转]修改github已提交的用户名和邮箱
    python nose的html报告优化
    python report中文显示乱码
  • 原文地址:https://www.cnblogs.com/qihuanye-229110/p/11147294.html
Copyright © 2020-2023  润新知