个性化阅读
专注于IT技术分析

C语言简明教程(九):分支语句和跳转语句

接上一节循环语句实例详解

C语言的分支语句有if-else语句、switch语句,跳转语句有break语句、return语句、continue语句,其中return语句用于函数返回值,break语句跳出本控制语句(常见有循环语句和switch语句),continue语句跳过本次循环。分支语句常常需要条件表达式语句,除了上节提到的比较表达式和逗号表达式,还有逻辑表达式。

一、逻辑运算符和逻辑表达式

常用的逻辑运算符有与或非&&、||、!,以及三目运算符?:,具体解释如下:

运算符和逻辑表达式 说明
&&,a && b a和b同时为真,该表达式才为真
||,a||b a和b只要有一个为真,则表达式为真
!,!a 对a取反
?:,a?b:c 如果a为真则表达式等于b,否则等于c

二、if else语句

C语言网站的if else语句格式如下:

if(表达式1){
    语句1;
}
else if(表达式2){
    语句2;
}
else{
    语句3
}

其中表达式1和表达式2是条件测试表达式,可用的表达式有比较表达式、逗号表达式和逻辑表达式,else if的语句块可以有多个,该if else语句只会执行其中一个语句块,若找到一个符合条件的则执行,执行完毕跳出该语句块,后面有符合条件的也不再检查,如果单独使用多个if判断,则每个都会执行,下面是if else语句的完整代码案例,其中使用到getchar和putchar字符输入输出函数,用于从控制台读取一个字符或输出一个字符,字符测试的相关函数再头文件ctype.h中。

#define SIZE 64

void print_01(void){
    // if else语句示例,循环从控制台读入字符,模拟命令行持续处理(一次性处理可以使用主函数main(int char**))
    char ch;
    char str[SIZE];
    memset(str, 0, SIZE);
    int i = 0;
    while ((ch = getchar()) != EOF){
        if(ch != '\n'){
            str[i] = ch;
            i++;
        }
        else{
            run(str);
            if(strcmp(str, "quit") == 0)
                break;
            i = 0;
            memset(str, 0, SIZE);
            putchar('\n');
        }
    }
    putchar('\n');
}

void run(char *message){
    // if-else if-else语句
    if(strcmp(message, "java") == 0) // java编译
        printf("compile java source successfully");
    else if(strcmp(message, "python") == 0) // 执行python脚本
        printf("running python script...");
    else if(strcmp(message, "time") == 0){ // 获取本地当前时间
        char local_time[128];
        format_time(local_time);
        printf("current time: %s", local_time);
    }
    else
        printf("processing...");
}

// 自定义格式化时间处理
char * format_time(char *local_time){
    struct tm *ptm;
    time_t t = time(NULL);
    ptm = localtime(&t);
    int year = ptm->tm_year + 1900;
    int month = ptm->tm_mon + 1;
    int day = ptm->tm_mday;
    int hour = ptm->tm_hour;
    int minute = ptm->tm_min;
    int second = ptm->tm_sec;
    // 字符串打印函数
    sprintf(local_time, "%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second);
    return local_time;
}

三、switch语句

switch语句语法格式如下:

switch(数值表达式){
    case 值1:
        语句;
    case 值2:
        语句;
    default:
        默认执行语句;
}

switch语句的圆括号中必须是数值类型的变量,case为该变量的可能值,其中要注意,默认情况下所有case的值都会测试,包括执行default语句,如果不需要测试所有情况在每个case语句后加break语句跳出switch语句,switch语句代码实例如下:

char ch = getchar();
switch(ch){
    case 'a':
        printf("A apple below the table.\n");
        break;
    case 'b':
        printf("Break down the tree is necessary.\n");
        break;
    case 'c':
        printf("Communicating with them is tired.\n");
        break;
    case 'd':
        printf("Digital image processing depends on mathematics\n");
        break;
    default:
        printf("A rainy day is a good day.\n");
}

四、goto语句

goto语句的格式如下:

goto: 标签名;
// ...语句
标签名: 语句开始;

执行到goto语句会跳转到指定的标签名的语句开始执行,并且不会返回执行,C语言仍然保留goto语句,但是goto语句不是一个友好的语句,尽量或者根本不用去使用它,使用goto语句写出来的代码会非常的难阅读和分析,下面是一个goto语句的代码实例:

printf("001\n");
goto label;
printf("002\n"); // 不会执行
label:
printf("003\n");
printf("004\n");
// 输出 001 003 004
赞(0)
未经允许不得转载:srcmini » C语言简明教程(九):分支语句和跳转语句

评论 抢沙发

评论前必须登录!