2024.10.30-控制语句

每日学习打卡
优质创作者: 人工智能技术领域
2024-10-30 11:40:54

控制语句详细总结

一、条件语句 ✨

1. if 控制语句

在编程中,if 语句是一种基础结构,根据条件的真伪来决定是否执行某段代码。常见于多种编程语言,例如 Python、Java、C++ 等。C 语言中的 if 语句有以下三种形式:

  • 单分支 if 结构:只有一个条件分支。

    if (表达式) 语句
    

    当表达式为真时,执行语句;为假时,跳过该语句。

  • 双分支 if-else 结构:有两个分支,满足条件则执行 if 部分,否则执行 else 部分。

    if (表达式)
        语句A
    else
        语句B
    
  • 多分支 if-else if-else 结构:用于多个条件判断。

    if (表达式)
        语句A
    else if (表达式)
        语句B
    else
        语句C
    

2. 实例:得到两个数中的较大值 👇

使用 ifif-else 语句找到两个数中较大的一个。

#include <stdio.h>
#pragma warning(disable:4996)
int main() {
    int a, b, max;
    printf("Input a,b:");
    scanf("%d,%d", &a, &b);
    if (a > b) max = a;
    else max = b;
    printf("max = %d\n", max);
    return 0;
}

3. 条件运算符和条件表达式

简化代码时,可使用条件运算符:

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

二、Switch 语句 🛠️

1. 基础结构

Switch 语句用于多分支选择,根据表达式的值选择对应的 case 分支。

switch (表达式) {
    case 常量表达式1:
        语句1;
        break;
    case 常量表达式2:
        语句2;
        break;
    ...
    default:
        默认语句;
}

2. 实例:将百分制成绩转换为五分制等级

根据成绩范围输出相应的等级。

#include <stdio.h>
#pragma warning(disable:4996)
int main() {
    int score, mark;
    printf("Please input score:");
    scanf("%d", &score);
    mark = score / 10;
    switch (mark) {
        case 10: case 9: printf("Grade: A\n"); break;
        case 8: printf("Grade: B\n"); break;
        case 7: printf("Grade: C\n"); break;
        case 6: printf("Grade: D\n"); break;
        default: printf("Grade: E\n");
    }
    return 0;
}

⚠️ 注意:忘记 break 会导致“贯穿”,即执行后续 case 语句。

三、程序测试 🧪

1. 什么是程序测试?

程序测试是运行程序,检查输出是否符合预期结果的过程。测试主要包含以下步骤:

  • 输入测试数据
  • 运行程序
  • 对比实际输出和预期结果

2. 测试示例:成绩等级转换

使用 switch 语句来将分数转换为等级:

  • 输入:0, 15, 55
  • 预期输出:E
  • 实际输出:符合预期,测试通过

3. 测试方法分类

  • 白盒测试:完全了解程序内部逻辑,根据代码结构设计测试。
  • 黑盒测试:仅关注输入输出是否符合预期,不关心内部实现。

4. 边界测试

测试时应重点考虑边界条件,例如0-5960-69等区间的边界值,避免边界值错误。边界条件下错误率高,应多加注意。

5. 测试实例:三角形类型判断

根据三条边的长度判断三角形类型。

#include <stdio.h>
#include <math.h>
#pragma warning(disable:4996)
int main() {
    float a, b, c;
    printf("Input the three edge lengths:");
    scanf("%f,%f,%f", &a, &b, &c);
    if (a + b > c && b + c > a && a + c > b) {
        if (a == b || b == c || c == a)
            printf("等腰三角形\n");
        else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a)
            printf("直角三角形\n");
        else
            printf("一般三角形\n");
    } else {
        printf("不是三角形\n");
    }
    return 0;
}
  • 测试用例
    • 直角三角形:输入3, 4, 5
    • 等腰三角形:输入4, 4, 5
    • 非三角形:输入3, 4, 9

四、代码风格建议 📝

  • 使用花括号:即使只有一行代码,推荐加上花括号,代码结构更清晰。
  • 一致性:保持代码格式统一,方便后期维护和阅读。

五、常见问题与调试技巧 🕵️‍♂️

  • 设置断点:在调试器中设置断点,检查程序执行到特定位置的变量值。
  • 检查边界值:通过测试边界值来确保代码覆盖到所有分支。
  • 总结:调试过程中,常见的错误在于边界情况和忘记 break 语句。
...全文
33 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

27,307

社区成员

发帖
与我相关
我的任务
社区描述
记录每一天的学习进展,分享心得与成长。通过每日学习打卡,帮助成员养成良好的学习习惯,提升个人成长。社区内互相鼓励、文明互动,并通过打卡积分和排行榜激励每个人坚持不懈地追求进步!
学习考研生活 个人社区 广东省·广州市
社区管理员
  • 小ᶻ☡꙳ᵃⁱᵍᶜ꙳
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

✨每日学习打卡社区公告📚

亲爱的社区成员们:

欢迎加入每日学习打卡社区!在这里,我们一起坚持学习、共同进步。这个社区是一个为大家提供打卡学习、互动分享的平台,致力于帮助每一位成员养成良好的学习习惯,提升个人成长🚀。

1. 核心使命🎯

我们的社区使命是通过每日学习打卡📅,激励大家坚持学习📖,实现知识积累的飞跃。无论是英语、数学、专业课程还是学术论文📊,社区提供丰富的学习内容版块,满足大家的多样化学习需求。每一次打卡,都是离目标更近的一步💪!

2. 注意事项⚠️

  • 每日打卡:在学习打卡、英语学习、数学学习等专属频道坚持打卡📅,分享你的学习成果和心得📝。
  • 内容规范:发布内容需选择相应的分类📂,确保主题清晰,利于大家查找交流🔍。
  • 文明互动:在分享和讨论时,请保持积极向上的态度😊,互相尊重🤝,营造良好的学习氛围🌱。

3. 社区激励机制🎁

  • 打卡奖励:坚持打卡的用户将累计学习积分🏆,积分可用于兑换荣誉称号🎖️。
  • 排行榜:每周更新学习排行榜📈,排名靠前的用户可获得社区特别奖励🎉,激励大家保持学习动力💥。
  • 优质分享奖:定期评选优质学习心得💡,分享个人独到经验的成员有机会赢取特别奖励🎊。

期待每一位成员在这里找到学习的乐趣🌟,坚持不懈,迈向更好的自己💼!

试试用AI创作助手写篇文章吧