新手c语言讲解及题目分享(十二)--选择结构专项练习

目录

前言

一.if语句

1.单分支结构

Ⅰ.一般形式:

Ⅱ.执行原理:

2.双分支结构

Ⅰ.一般形式:

Ⅱ.执行原理:

3.多分支结构

Ⅰ.一般形式:

Ⅱ.执行原理:

4.if语句的嵌套

Ⅰ.一般形式

二.switch语句

1.一般形式:

2.执行原理:

三.经验总结和习题分享

1.经验总结

2.习题分享

1.判断奇偶数

2.成绩等级

3.星期几

4.计算器

5.闰年判断

6.月份天数

7.简单的菜单选择

8.BMI计算器


前言

选择结构根据某个具体条件的判断结果来执行相对应的语句,也称为判断结构或分支结构。接下来我将会依次讲解if语句switch语句,顺便分享一下需要注意的事项和我在学习过程中的经验总结。

一.if语句

if语句在执行时先对给定的条件进行判断,再根据判断的结果执行对应的语句。在c语言中,若条件成立则为1,条件不成立为0。c语言中的if语句包括,单分支,双分支和多分支3种表现形式。

1.单分支结构

Ⅰ.一般形式:

if(表达式)语句;

Ⅱ.执行原理:

单分支结构执行语句时,先判断表达式的值,若表达式成立则执行表达式后面的语句;若表达式不成立,则跳过if后面的语句,执行if的下一条语句。

注:if表达式可以为逻辑表达式或关系表达式,也可以为任意数值型的表达式;if后面的 () 不能省略;if 后面只能跟一条语句。如果包含多条语句,必须使用  {}  ;

2.双分支结构

Ⅰ.一般形式:

if(表达式)

       语句1;

else

       语句2;

Ⅱ.执行原理:

双分支结构的执行过程为:计算if后面的表达式,若表达式成立,则执行语句1,否则执行语句2。

注:else语句必须于if配对使用,不能单独作为一个语句来使用;条件运算符表达式都可以用if_else语句来实现;if和else是结构控制关键字,后面不能加“;”,而语句1和语句2后面的 “ ;”不能省略。

3.多分支结构

Ⅰ.一般形式:

if(表达式1)                        语句1;

else if (表达式2)                语句2;

else if (表达式3)                语句3;

                        ......

else if (表达式n)                语句n;

else                                        语句n+1;

Ⅱ.执行原理:

多分支结构语句执行过程:计算表达式1,结果不为0则执行语句1,否则计算表达式2;若表达式2的结果为真(非0),则执行语句2,以此类推。若n个表达式的结果都为0,则执行语句n+1。

注:一般用于计算分段函数的题目,或需要进行分段计算的题

4.if语句的嵌套

当if(表达式)或else后面的语句本身又是一个if语句结构时,就形成了if 语句的嵌套结构。

Ⅰ.一般形式

if(表达式1)

   if(表达式2)

         语句1;

   else

        语句2;

else

   if(表达式3)

       语句3;

  else

       语句4;

注:else总是与它前面最近且没有和其他else配对的if配对。

二.switch语句

虽然用if else语句可以解决多分支问题,但如果分支较多,会使程序很长,可读性降低。为了专门处理这种多分支问题,提供了switch-case语句。

1.一般形式:

switch(表达式)

{

    case 常量表达式1:语句1;[break;]

    case 常量表达式2:语句2;[break;]

                           ...

   case 常量表达式n:语句n;[break;]

   default: 语句n+1;[break;]

}

2.执行原理:

switch语句的执行过程是:计算switch后面表达式的值,将结果依次与case后面的常量表达式的值进行比较。若相等,则执行该case后面的语句。执行时,遇到break语句九退出,否则继续往下执行。若与各case后面的常量表达式的值都不相等,则执行default 后面的语句。

注:switch语句后不能加分号;表达式的值必须为整型,字符型或枚举型;case常量表达式的值必须为整型,字符型或枚举型,且互不相等;break语句可以不加,直到遇到break语句在停止;case语句可以为任意语句也可以为空。

三.经验总结和习题分享

1.经验总结

选择结构是C语言中用于控制程序流程的重要部分,主要包括`if`语句、`switch`语句等。以下是我对C语言选择结构的学习经验总结:

1. if语句
   - `if`语句用于根据条件的真假来执行不同的代码块。
   - 可以使用`else if`和`else`来处理多种条件。
   - 注意条件表达式的使用,确保逻辑清晰。   示例:

   if (condition) {
       // 执行代码
   } else if (another_condition) {
       // 执行其他代码
   } else {
       // 默认执行代码
   }


   2. switch语句
   - `switch`语句用于根据变量的值选择执行不同的代码块,通常用于处理多个可能的值。
   - 每个`case`后面可以跟一个`break`语句,以防止执行后续的`case`。
   - 可以使用`default`来处理所有未匹配的情况。

   示例:


   switch (variable) {
       case value1:
           // 执行代码
           break;
       case value2:
           // 执行其他代码
           break;
       default:
           // 默认执行代码
   }

3. 嵌套选择结构:
   - 可以在`if`或`switch`语句内部嵌套其他选择结构,以处理更复杂的逻辑。
   - 注意代码的可读性,避免过度嵌套。

4. 逻辑运算符:
   - 在`if`语句中,可以使用逻辑运算符(如`&&`、`||`)来组合多个条件。
   - 理解运算符的优先级和短路特性。

5. 调试技巧:
   - 在调试选择结构时,可以使用打印语句输出条件的值,以帮助理解程序的执行流程。
   - 使用调试工具逐步执行代码,观察每个条件的判断结果。

通过以上总结,可以更好地理解和运用C语言中的选择结构,提高编程能力。
 

2.习题分享

1.判断奇偶数

题目:输入一个整数,判断该数是奇数还是偶数。

#include <stdio.h>  

int main() {  
    int number;  
    printf("请输入一个整数: ");  
    scanf("%d", &number);  

    if (number % 2 == 0) {  
        printf("%d 是偶数。\n", number);  
    } else {  
        printf("%d 是奇数。\n", number);  
    }  

    return 0;  
}
2.成绩等级

题目:输入一个学生的成绩(0-100),输出对应的等级(A、B、C、D、F)。

#include <stdio.h>  

int main() {  
    int score;  
    printf("请输入成绩(0-100): ");  
    scanf("%d", &score);  

    if (score >= 90) {  
        printf("等级: A\n");  
    } else if (score >= 80) {  
        printf("等级: B\n");  
    } else if (score >= 70) {  
        printf("等级: C\n");  
    } else if (score >= 60) {  
        printf("等级: D\n");  
    } else {  
        printf("等级: F\n");  
    }  

    return 0;  
}
3.星期几

题目:输入一个数字(1-7),输出对应的星期几。

#include <stdio.h>  

int main() {  
    int day;  
    printf("请输入一个数字(1-7): ");  
    scanf("%d", &day);  

    switch (day) {  
        case 1:  
            printf("星期一\n");  
            break;  
        case 2:  
            printf("星期二\n");  
            break;  
        case 3:  
            printf("星期三\n");  
            break;  
        case 4:  
            printf("星期四\n");  
            break;  
        case 5:  
            printf("星期五\n");  
            break;  
        case 6:  
            printf("星期六\n");  
            break;  
        case 7:  
            printf("星期日\n");  
            break;  
        default:  
            printf("输入无效,请输入1到7之间的数字。\n");  
    }  

    return 0;  
}
4.计算器

题目:实现一个简单的计算器,输入两个数字和一个运算符(+、-、*、/),输出结果。

#include <stdio.h>  

int main() {  
    double num1, num2;  
    char operator;  
    printf("请输入两个数字和一个运算符(如 +、-、*、/): ");  
    scanf("%lf %lf %c", &num1, &num2, &operator);  

    switch (operator) {  
        case '+':  
            printf("结果: %.2lf\n", num1 + num2);  
            break;  
        case '-':  
            printf("结果: %.2lf\n", num1 - num2);  
            break;  
        case '*':  
            printf("结果: %.2lf\n", num1 * num2);  
            break;  
        case '/':  
            if (num2 != 0) {  
                printf("结果: %.2lf\n", num1 / num2);  
            } else {  
                printf("错误: 除数不能为零。\n");  
            }  
            break;  
        default:  
            printf("无效的运算符。\n");  
    }  

    return 0;  
}
5.闰年判断

题目:输入一个年份,判断该年是否为闰年。

#include <stdio.h>  

int main() {  
    int year;  
    printf("请输入一个年份: ");  
    scanf("%d", &year);  

    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {  
        printf("%d 是闰年。\n", year);  
    } else {  
        printf("%d 不是闰年。\n", year);  
    }  

    return 0;  
}
6.月份天数

题目:输入一个月份(1-12),输出该月的天数(考虑闰年)。

#include <stdio.h>  

int main() {  
    int month, year, days;  
    printf("请输入年份: ");  
    scanf("%d", &year);  
    printf("请输入月份(1-12): ");  
    scanf("%d", &month);  

    switch (month) {  
        case 1: case 3: case 5: case 7: case 8: case 10: case 12:  
            days = 31;  
            break;  
        case 4: case 6: case 9: case 11:  
            days = 30;  
            break;  
        case 2:  
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {  
                days = 29; // 闰年  
            } else {  
                days = 28; // 平年  
            }  
            break;  
        default:  
            printf("无效的月份。\n");  
            return 1; // 退出程序  
    }  

    printf("%d年%d月有%d天。\n", year, month, days);  
    return 0;  
}
7.简单的菜单选择

题目:实现一个简单的菜单,用户可以选择不同的操作。

#include <stdio.h>  

int main() {  
    int choice;  
    printf("请选择一个操作:\n");  
    printf("1. 打印Hello\n");  
    printf("2. 打印World\n");  
    printf("3. 退出\n");  
    printf("请输入你的选择: ");  
    scanf("%d", &choice);  

    switch (choice) {  
        case 1:  
            printf("Hello\n");  
            break;  
        case 2:  
            printf("World\n");  
            break;  
        case 3:  
            printf("退出程序。\n");  
            break;  
        default:  
            printf("无效的选择。\n");  
    }  

    return 0;  
}
8.BMI计算器

题目:输入体重(kg)和身高(m),计算BMI并输出相应的健康状态。

#include <stdio.h>  

int main() {  
    float weight, height, bmi;  
    printf("请输入体重(kg): ");  
    scanf("%f", &weight);  
    printf("请输入身高(m): ");  
    scanf("%f", &height);  

    bmi = weight / (height * height);  
    printf("您的BMI为: %.2f\n", bmi);  

    if (bmi < 18.5) {  
        printf("体重过轻。\n");  
    } else if (bmi >= 18.5 && bmi < 24.9) {  
        printf("正常体重。\n");  
    } else if (bmi >= 25 && bmi < 29.9) {  
        printf("超重。\n");  
    } else {  
        printf("肥胖。\n");  
    }  

    return 0;  
}

------每天不定时分享一些c语言的学习和题目以及32的项目,如果喜欢就关注一下吧,大佬们!!!!!!!!!!------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱娆π(准备保研版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值