C语言新手小白详细教程(3)选择语句

举报
意疏 发表于 2025/07/25 18:32:10 2025/07/25
【摘要】 这篇学习笔记是我付出心血撰写的一份关于学习C语言的指南,即使是毫无编程基础的人也能通过阅读它来理解编程代码的含义。很高兴与大家交流,共同分享学习心得。

序(一些闲话)

  1. 我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。
  2. 本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可能包含错误或片面观点,因此诚挚欢迎读者的指正。期望与读者共同学习、进步,最终成为入门C语言。
  3. 这个系列文章旨在简要介绍每个C语言知识点,希望读者(也包括自己)能对C语言有一个基本的了解。所以每一步尽量非常详尽 .

@[TOC](阅读指南:

介绍

这三个图对应着C语言的三种结构

从这三张图我们可以清晰看出,在C语言中,程序的执行结构主要分为三种:顺序结构、分支结构和循环结构。这三种结构是编程语言设计的基础,它们共同构成了程序的基本执行流程。

  1. 顺序结构
    顺序结构是指程序按照代码的书写顺序依次执行。在没有选择结构和循环结构参与的情况下,程序默认按照顺序结构执行。顺序结构是编程的基础,也是计算机内在逻辑的基础。

  2. 选择结构(分支结构)
    选择结构是指根据条件判断的结果,选择执行不同的代码分支。

  3. 循环结构
    循环结构是指根据条件判断的结果,重复执行某段代码。

在计算机中,在没有分支和循环结构参与的情况下,所有的程序都是默认的顺序结构,即程序是顺序执行的,所以顺序结构没有必要单独讲解,因为它是默认的执行方式。但它是编程和计算机内在逻辑的基础。在实际编程中,我们通过结合顺序结构、选择结构和循环结构,来实现各种复杂的程序功能。

一、分支结构

我们知道C语言的执行方式是自上而下的,但有时候 我们会面临一种二选一的需求。在日常生活中,我们经常需要在不同的选项之间做出选择。例如,在处理文件时,我们可能会面临保存或不保存的选择。如果选择保存,计算机将保存文件并退出;如果选择不保存,计算机将执行不同的处理操作。这种根据不同情况采取不同行动的需求,在编程中也得到了体现。

在C语言中,程序的执行通常是自上而下的顺序执行的。然而,在某些情况下,我们可能需要根据特定条件来决定执行不同的代码块。面对这种"二选一"的需求,我们可以用选择语句来表示。


首先我们来回顾一下运算符:

运算符号 说明 示例代码 结果
> (大于) 若X大于y返回真(1)否则为(0) 50 > 5 1
> = (大于等于) 若X大于y返回真(1)否则为(0) 50 > = 50 1
< (小于) 若X大于y返回真(1)否则为(0) 50 < 5 0
< = (小于等于) 若X大于y返回真(1)否则为(0) 50 < = 5 0
== (等于) 若X等于y返回真(1)否则为(0) 50 = = 5 0
!= (不等于) 若X不等于y返回真(1)否则为(0) 50 != 5 1

1.if语句

  • if语句的的格式

  • 表达式:返回一个bool值,真或假

  • if()括号中的表达式如果为真,就执行if内的语句;

  • 如果为假,则跳过if ,执行后面的语句。

  • 那么什么是真?什么是假呢?在计算机中 1代表真 0代表假。

下面我们来看一段示例代码

请从键盘录入一个整数a,如果小于0,则将其变为0:最后打印a。

#include <stdio.h>
int main() {
    int a; // 初始化变量a
    printf("请输入变量a: "); // 提示用户输入
    scanf("%d", &a); // 输入变量a
    if (a < 0) { // 判断a是否小于0
        a = 0; // 如果a小于0,则将a赋值为0
    }
    printf("a = %d\n", a); // 输出变量a
    return 0; // 程序结束
}

这里笔者输入了一个 -6 打印为0


2.if else语句

其中 if为如果,else为否则。根据条件判断并执行不同的语句。

  • if else语句的的格式

上述代码意为:
如果表达式为真 那么就执行语句块1的操作,否则就执行语句块2的操作。
下面我们来看一段示例代码

请从键盘录入一个整数a,如果是2的倍数,打印 “是偶数” 否则就打印 “是奇数”

#include <stdio.h>
int main() {
    int a;//定义变量a
    printf("请输入一个整数: ");
    scanf("%d", &a);
    if (a % 2 == 0) {//判断a是否为偶数
        printf("是偶数\n");
    } else {
        printf("是奇数\n");
    }
    return 0;//程序结束
}

这里笔者输入了一个整数 5 打印为奇数(如果输入偶数的话 则输出是偶数 )
读者可以自己一试

  • 针对单if判断格式中,无论执行哪个操作 因为程序是顺序执行,必须要判断所有表达式的真假 在这点上 时间上显得非常浪费。
  • 但是if-else语句只能判断两个分支,无法应对多种结果的情况。
  • 于是出现了else if 语句

3. else if语句

else if语句可以多个同时使用 构成多个分支。

  • else if语句的的格式

上述代码意为:
如果表达式1满足条件 则执行语句块1;
如果表达式2满足条件 则执行语句块2;
再然后如果条件都不满足,则执行语句块n;

含义为: 从上往下依次求值表达式1、2、当遇到真的结果时,则执行对应的语句块描述的操作,并停止对后续表达式的判断.如果所有表达式都不成立(可省略表示为什么都不做),则执行所有条件为假的代码块,然后继续执行后续代码。

一旦遇到能够成立的判断条件,则不再执行其他的语句块,最终只可以有一个语句块被执行。

下面我们来看一段示例代码

请从键盘录入一个分数score 打印出相对应的成绩
100-90 为 Class A
89-80 为 Class B
79-60 为 Class C
60以下 为 Class D

#include <stdio.h>
int main() {
    int score;
    printf("请输入一个分数: ");
    scanf("%d", &score);
    if (score >= 90 && score <= 100) {
        printf("Class A\n");
    } else if (score >= 80 && score <= 89) {
        printf("Class B\n");
    } else if (score >= 60 && score <= 79) {
        printf("Class C\n");
    } else if (score < 60 && score >= 0) {
        printf("Class D\n");
    } else {
        printf("输入的分数无效\n");
    }
    return 0;
}

这里笔者输入了一个整数 99 打印为Class
读者可以自己一试

C语言虽然不限制else if能够处理的分支数量,但当分支过多时,用if else处理不太方便,而且容易出现else if配对出错的问题。所以诞生出了switch语句

4. switch语句

switch语句也是一种分支结构语句,用来代替简单的,拥有多个分支的if-else语句。
含义:首先求表达式的值,然后依次与下面各个case的表达式做比较,如符合某个表达式,则执行对应语句以及后续所有的语句。

是一种分支结构,用来代替简单的,拥有多个分支的 if else 语句

第一种为switch的基本结构,从上到下将表达式依次与case的常量进行匹配,第一次匹配成功后,后面的语句顺序执行 不再进行匹配。


第二种则多了一个default,如果前面所有的case都不符合要求,那么会默认执行default的语句;

第三种,当遇到了第一个匹配的case后,执行完对应的语句会直接跳过,不再执行后面的case语句

break:专门跳出switch语句,一旦遇到break,就不再执行swtich的任何语句,包括当前分支中的语句和其他分支的语句。
即遇到break代表整个switch结束,执行switch的后续代码。

case后面必须为一个整数,或是结果为整数的表达式,但不能包含任何变量。(如case 9.5 或case a)就是错误的。
default不必须,当没有default时,如果所有的case匹配失败,那么就什么都不执行。

下面我们来看一段示例代码

请从键盘录入一个分数score 打印出相对应的成绩
100-90 为 Class A
89-80 为 Class B
79-60 为 Class C
60以下 为 Class D

#include <stdio.h>
int main() {
    int score;
    printf("请输入一个分数: ");
    scanf("%d", &score);
    switch (score / 10) {
        case 10:
        case 9:
    printf("Class A\n");  // 打印 "Class A",表示分数在90到100之间
        break;  // 跳出switch语句,不再执行后续的case
    case 8:  // 如果score / 10的结果是8,即分数在80到89之间
        printf("Class B\n");  // 打印 "Class B"
        break;  // 跳出switch语句
    case 7:  // 如果score / 10的结果是7,即分数在70到79之间
    case 6:  // 如果score / 10的结果是6,即分数在60到69之间
        printf("Class C\n");  // 打印 "Class C",表示分数在60到79之间
        break;  // 跳出switch语句
    default:  // 如果score / 10的结果不在上述任何一种情况,即分数在60以下
        printf("Class D\n");  // 打印 "Class D"
        break;  // 跳出switch语句
    }
    return 0;  // 返回0,表示程序正常结束
}

这里笔者输入了一个整数 99 打印为Class
读者可以自己一试


意气风发,漫卷疏狂
学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。

如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝“点赞”、“评论”和“收藏”,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。

我是意疏 下次见!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。