首页 > 其他分享 >C语言大师之路:从零到王者/新手入门(3)选择语句

C语言大师之路:从零到王者/新手入门(3)选择语句

时间:2024-06-30 21:31:57浏览次数:17  
标签:语句 零到 执行 else 新手入门 score printf C语言 Class

序(一些闲话)

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

C语言大师之路:从零到王者/新手入门(3)选择语句

介绍

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

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

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

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

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

一、分支结构

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

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


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

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

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
读者可以自己一试
在这里插入图片描述


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

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

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

标签:语句,零到,执行,else,新手入门,score,printf,C语言,Class
From: https://blog.csdn.net/2302_79751907/article/details/140086734

相关文章

  • C++ : 如何用C语言实现C++的虚函数机制?
    前言在 googletest的源码中,看到gtest-matchers.h中实现的MatcherBase 类自定义了一个VTable,这种设计实现了一种类似于C++虚函数的机制。C++中的虚函数机制实质上就是通过这种方式实现的,本文用c语言自定义虚函数表VTable实现了一下virtual的功能,来深刻理解其机制。我们通过创......
  • C语言力扣刷题11——打家劫舍1——[线性动态规划]
    力扣刷题11——打家劫舍1和2——[线性动态规划]一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划2、思路说明四、解题代码(附注释)一、博客声明  找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解题思路,开辟这个系列来记录......
  • 【C语言】--操作符详解
    ......
  • C语言教程-11-字符串
    title:C语言教程-11-字符串tags:[C]categories:C语言教程description:最重要的交互信息-字符串及其存储,操作提要:本章要讲解字符串的内容.同时会使用到前面基本输入输出一章中讲解的各种输入输出函数和数组,若不了解请自行复习.注意:本章需要的前置知识为:1.......
  • C语言 | Leetcode C语言题解之第188题买卖股票的最佳时机IV
    题目:题解:intmaxProfit(intk,int*prices,intpricesSize){intn=pricesSize;if(n==0){return0;}k=fmin(k,n/2);intbuy[k+1],sell[k+1];memset(buy,0,sizeof(buy));memset(sell,0,sizeof(sell));......
  • C语言 | Leetcode C语言题解之第187题重复的DNA序列
    题目:题解:#defineMAXSIZE769/*选取一个质数即可*/typedefstructNode{charstring[101];intindex;structNode*next;//保存链表表头}List;typedefstruct{List*hashHead[MAXSIZE];//定义哈希数组的大小}MyHashMap;List*......
  • c语言基础学习
    数据类型1.基本数据类型整数类型:用于表示整数值,包括int、short、long等。int:通常为4个字节,即32位。short:通常为2个字节,即16位。long:通常为4个字节,即32位(在32位系统上),为8个字节,即64位(在64位系统上)。longlong:通常为8个字节,即64位。intintege......
  • C语言编译和链接详解(通俗易懂,深入本质)
    我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(ExecutableProgram)。在Windows下,可执行程序的后缀有.exe和.com(其中.exe比较常见);在类UNIX系统(Linux、MacOS等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。可......
  • 【C语言】线程同步
    【C语言】线程同步线程同步1.互斥锁2.读写锁3.条件变量4.信号量最后线程同步  线程同步是指在多线程的情况下,如果多个线程去访问共享资源,需要按照一定规则顺序依次去访问,保证共享资源的数据一致性。1.互斥锁互斥相关函数//互斥量pthread_mutex_tmutex;......
  • C语言从入门到进阶(15万字总结)
    前言:《C语言从入门到进阶》这本书可是作者呕心沥血之作,建议零售价1元,当然这里开个玩笑。 本篇博客可是作者之前写的所有C语言笔记博客的集结,本篇博客不止有知识点,还有一部分代码练习。有人可能会问,作者不会是cv战士吧!作者在这里回答大家,有cv战士的成分,但不完全是。我是将......