首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言选择结构程序设计详解

C语言选择结构程序设计详解

作者头像
晚霞的不甘
发布2025-12-23 10:14:37
发布2025-12-23 10:14:37
1270
举报

1. 选择结构的基本概念

选择结构是程序设计中的三种基本结构之一(顺序、选择、循环),用于根据条件判断决定程序的执行路径。

2. if语句

2.1 基本if语句

代码语言:javascript
复制
if (条件表达式) {
    // 条件为真时执行的语句
}

示例:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int score = 85;
    
    if (score >= 60) {
        printf("恭喜,你及格了!\n");
    }
    
    return 0;
}

2.2 if-else语句

代码语言:javascript
复制
if (条件表达式) {
    // 条件为真时执行的语句
} else {
    // 条件为假时执行的语句
}

示例:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    
    if (num % 2 == 0) {
        printf("%d是偶数\n", num);
    } else {
        printf("%d是奇数\n", num);
    }
    
    return 0;
}

2.3 if-else if-else语句

代码语言:javascript
复制
if (条件1) {
    // 条件1为真时执行
} else if (条件2) {
    // 条件2为真时执行
} else if (条件3) {
    // 条件3为真时执行
} else {
    // 所有条件都为假时执行
}

示例:成绩等级判断

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int score;
    printf("请输入成绩(0-100):");
    scanf("%d", &score);
    
    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 70) {
        printf("中等\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    
    return 0;
}

3. switch语句

3.1 基本语法

代码语言:javascript
复制
switch (表达式) {
    case 常量1:
        // 语句
        break;
    case 常量2:
        // 语句
        break;
    // ...
    default:
        // 语句
}

3.2 示例:星期判断

代码语言:javascript
复制
#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("输入错误!\n");
    }
    
    return 0;
}

3.3 注意事项

· switch后面的表达式必须是整型或字符型 · case后面必须是常量表达式 · break语句用于跳出switch结构 · default是可选的 4. 条件运算符(三目运算符)

代码语言:javascript
复制
表达式1 ? 表达式2 : 表达式3

示例:

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int a = 10, b = 20;
    int max = (a > b) ? a : b;
    printf("较大的数是:%d\n", max);
    
    return 0;
}

5. 经典题目讲解

题目1:判断闰年

要求: 输入年份,判断是否为闰年

代码语言:javascript
复制
#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;
}

题目2:解一元二次方程

要求: 输入a,b,c,解方程ax²+bx+c=0

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

int main() {
    double a, b, c;
    double delta, x1, x2;
    
    printf("请输入一元二次方程的系数(a,b,c):");
    scanf("%lf %lf %lf", &a, &b, &c);
    
    if (a == 0) {
        printf("这不是一元二次方程!\n");
    } else {
        delta = b * b - 4 * a * c;
        
        if (delta > 0) {
            x1 = (-b + sqrt(delta)) / (2 * a);
            x2 = (-b - sqrt(delta)) / (2 * a);
            printf("方程有两个不相等的实根:\n");
            printf("x1 = %.2f, x2 = %.2f\n", x1, x2);
        } else if (delta == 0) {
            x1 = -b / (2 * a);
            printf("方程有两个相等的实根:\n");
            printf("x1 = x2 = %.2f\n", x1);
        } else {
            double realPart = -b / (2 * a);
            double imagPart = sqrt(-delta) / (2 * a);
            printf("方程有两个共轭复根:\n");
            printf("x1 = %.2f + %.2fi\n", realPart, imagPart);
            printf("x2 = %.2f - %.2fi\n", realPart, imagPart);
        }
    }
    
    return 0;
}

题目3:计算器程序

要求: 实现简单的四则运算计算器

代码语言:javascript
复制
#include <stdio.h>

int main() {
    char operator;
    double num1, num2, result;
    
    printf("请输入运算符(+, -, *, /):");
    scanf("%c", &operator);
    
    printf("请输入两个操作数:");
    scanf("%lf %lf", &num1, &num2);
    
    switch (operator) {
        case '+':
            result = num1 + num2;
            break;
        case '-':
            result = num1 - num2;
            break;
        case '*':
            result = num1 * num2;
            break;
        case '/':
            if (num2 != 0) {
                result = num1 / num2;
            } else {
                printf("错误:除数不能为零!\n");
                return 1;
            }
            break;
        default:
            printf("错误:无效的运算符!\n");
            return 1;
    }
    
    printf("%.2f %c %.2f = %.2f\n", num1, operator, num2, result);
    
    return 0;
}

题目4:成绩转换

要求: 将百分制成绩转换为等级制

代码语言:javascript
复制
#include <stdio.h>

int main() {
    int score;
    char grade;
    
    printf("请输入百分制成绩:");
    scanf("%d", &score);
    
    if (score < 0 || score > 100) {
        printf("输入成绩无效!\n");
        return 1;
    }
    
    switch (score / 10) {
        case 10:
        case 9:
            grade = 'A';
            break;
        case 8:
            grade = 'B';
            break;
        case 7:
            grade = 'C';
            break;
        case 6:
            grade = 'D';
            break;
        default:
            grade = 'E';
    }
    
    printf("成绩等级:%c\n", grade);
    
    return 0;
}

6. 编程练习题目

1. 判断三角形类型:输入三角形三边,判断是等边、等腰还是普通三角形 2. 日期判断:输入年月日,判断日期是否合法 3. 个人所得税计算:根据收入计算应缴个人所得税 4. 简单菜单程序:使用switch实现一个功能菜单 5. 字符分类:输入一个字符,判断它是字母、数字还是其他字符

7. 注意事项

  1. 关系运算符:==, !=, >, <, >=, <=
  2. 逻辑运算符:&&(与), ||(或), !(非)
  3. 运算符优先级:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符
  4. 常见错误: · 在if条件后误加分号 · 使用=而不是==进行比较 · switch语句中忘记break

通过系统学习选择结构,你可以编写出能够根据不同条件执行不同操作的智能程序,这是编程中的重要基础。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档