C/分支结构

维基教科书,自由的教学读本
< C
跳到导航 跳到搜索

导论[编辑]

在前面认识了基本的数据结构与输入输出后,你或许会想,“要是我想根据使用者的输入值,输出不同结果时该怎么做?”

就像这样:

如果 ( 輸入1 )
    做這些事
    ...
如果 ( 輸入2 )
    做這些事
    ...
如果 ( 輸入3 )
    做這些事
    ...
...

这时候就需要运用 if/else 与 switch 句型进行判断了

判断[编辑]

if/else 子句[编辑]

最基本的判断子句,格式如下:

if ( 條件1 )
{
    // 條件1成立時執行
}

也可以加上 else,这样当条件不成立时,else 内的叙述句就会执行

if ( 條件1 )
{
    // 條件1成立時執行
}
else
{
    // 條件1不成立時執行
}

例如判断使用者输入的整数是否为正数

#include<stdio.h>
int main ( int argc, int argv[] )
{
    int a;
    scanf("%d", &a);
    if ( a <= 0 )
    {
        // a 不為正數時執行此行
        printf("Wrong number!");
    }
    else
    {
        // a 為正數時執行此行
        printf("You entered %d.", a);
    }
    
    return 0;
}
// 使用者輸入:5     輸出:You entered 5.
// 使用者輸入:-2    輸出:Wrong number!

一般来说,若 if/else 子句后的叙述句只有一行时不须加上大括号{}

#include<stdio.h>
int main ( int argc, int argv[] )
{
    int a;
    scanf("%d", &a);
    if ( a <= 0 )
        printf("Wrong number!"); // a 不為正數時執行此行
    else
        printf("You entered %d.", a); // a 為正數時執行此行

    return 0;
}

但还是建议养成在每一个 if/else 子句后面加上大括号的习惯,这样不仅可以增加程式的易读性,也可以在建立大型专案时便于维护与修改

switch 子句[编辑]

//for Ex.
#include <stidio.h>
main()
{
    int score=3; /*以5分制成绩为例*/
    switch(c)    /*如果结果为3,则打印字符串*/
    {
        case 5 : printf("Great!");
        case 4 : 
        case 3 : printf("Your score is %d \n",c); break;
        default: printf("You may need to work harder");
    }

    return 0;
}

逻辑运算子[编辑]

结语[编辑]

在C语言可以运用 if/else 句型与 switch 句型进行条件判断