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

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

时间:2024-07-07 17:27:09浏览次数:18  
标签:语句 零到 执行 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/140249165

相关文章

  • C语言大师之路:从零到王者/新手入门(2)变量与运算符
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......
  • 【C语言】常用库介绍
    在上一篇博文中,我们讲了C语言的知识点,感兴趣的小伙伴可以自行阅读:一文学完C语言【完整版】在本篇博文中,我们将会介绍C语言一些常用的库和系统函数。stdio.hstdio.h是C语言的标准I/O库,用于读取和写入文件,也用于控制台的输入和输出。标准I/O函数以下函数用于控制台......
  • C语言 找出 1000 以内的所有完数
    一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是“完数”,编程序找出1000以内的所有完数,并按下面格式输出其因子:6itsfactorsare1,2,3这个程序找出1000以内的所有完数,并输出每个完数及其因子。(如果因子和等于该数,则该数为完数。)#i......
  • C语言 会员卡计费系统
    设计一个会员卡计费管理系统。功能要求:(1)新会员登记。(将会员个人信息及此会员的会员卡信息进行录入。)(2)会员信息修改。(3)会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示。此时可以进行续费,续费后,提示成功,并显示更新后的信息。)(4)会员消费结......
  • DAY 1: C语言异或(^)以及按位与(&)的用法
    1.异或(^)的定义        在C语言中,异或操作符是^。异或操作符用于对两个操作数执行按位异或运算,即只有在两个操作数对应位不同时,结果为1。即相同为0不同为1。2.重要结论    1.任何一个数,假定为a,0^a等于a(不进位计算求和),a^a等于0。        2.异或运......
  • 洛谷P5726 【深基4.习9】打分——C语言
    本题思路:1.先在for循环中分别求出最大值(max),最小值(min),以及它们的和(s);2.最后将它们的和减去最大值,最小值,然后就可以求平均值了,注意是除以n-2#include<stdio.h>intmain(){  intn;  scanf("%d\n",&n);  ints=0,max=-1000,min=300000;//max要小些,min要的......
  • C语言实现字符串排序
    如果只有英文字符且不区分大小写的话按照字典序排序可以用strcmp函数,两个字符串自左向右逐个字符相比(按ASCII值大小相比较)strcmp(s1,s2)当s1<s2时,返回为负数;当s1==s2时,返回值=0;当s1>s2时,返回正数。例如"A"<"C"、"d">"D"、"computer">"compare"如果想要不区分大小写的......
  • G3.【C语言】EasyX的窗口坐标体系和绘制基本图形
    左上角是坐标原点注意标题栏不计入坐标中getwidth()获取窗口宽度getheight()获取窗口高度画点头文件COLORREFgetpixel(intx,inty); //Getpixelcolorvoidputpixel(intx,inty,COLORREFcolor); //Setpixelcolor画线头文件线的坐标voidline(intx1,......
  • 【C语言入门】初识C语言:掌握编程的基石
    ......
  • C语言教程-12_1-初识函数
    title:C语言教程-12_1-初识函数tags:[C]categories:C语言教程description:程序功能进一步复杂-使用函数进行分离提要:初步讲解C语言的函数的概念和语法前置知识:学习过数学,知道什么是数学的函数掌握C语言复合语句的概念什么是函数数学意义上的函数近代定义:......