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

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

时间:2024-07-26 21:59:39浏览次数:16  
标签:语句 零到 执行 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/140648121

相关文章

  • C语言大师之路:从零到王者/新手入门(4)循环语句
    序(一些闲话)我希望我的语言不要像专业书那样让人眼花缭乱,所以当我解释语法时,我会尽量避免使用太多专业术语,让说明更容易理解。我会用通俗易懂的语言来解释,而不是像专业书籍那样让人感到困惑。本人计划通过文章分享C语言的核心知识点和学习心得。鉴于仍处于学习阶段,文章中可......
  • c语言学习之输入输出--getchar、scanf、printf
    1.输入输出功能  (1).C语言本身并不提供输入输出功能。  使用的是c语言函数库中的"标准输入输出"函数 (2).c语言函数库提供的输入输出函数   getchar、putchar:操作一个字符 'a'  gets、puts:操作一个字符串 如"abcd"   scanf、printf:格式化......
  • C语言中的输入输出
    简单格式的输入输出简单的输出语句:printf语法printf"格式控制"输出表列举例:printf("%d,%f,%c",a,b,c);说明:由%和特定字符组成,如:%d、%c、%f等,是格式说明符,用于说明输出项目所采用的格式;基本的格式字符%d按十进制整型数据的实际长度输出。%c仅输出一个字符。......
  • C语言判断该数是否为素数
    素数判断方法:判断一个数是否为素数,即判断该数是否只能被1和自身整除,而不能被其他数整除。代码:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intisPrime(intnum){if(num<=1){return0;}for(inti=2;i*i<=num;i++){......
  • C语言入门介绍
    文章目录一、源文件和头文件的介绍二、一个简单的C语言程序三、main函数的简单介绍1.main函数的注意事项2.main函数的返回类型四、库函数和printf函数1.库函数2.printf函数五、关键字六、字符与字符串1.字符和ASCII值2.字符串和\03.转义字符七、什么是语句1.空语句2.......
  • 二叉树及其存储实现C语言(附上源码)
    1.什么是二叉树        二叉树是一种特殊的树型结构,其特点是每个结点至多只有两棵子树(即二叉树不存在度大于二的结点),并且二叉树的子树有左右之分,次序不可颠倒【有序树】。 2.二叉树的定义二叉树T:一个有穷的结点集合。    -这个集合可以为空;    -......
  • c语言(7.26)
    今天学习了二级指针和多级指针,数组指针数组指针#include<stdio.h>intmain(){ //利用指针遍历数组 intarr[]={10,20,30,40,50}; intlen=sizeof(arr)/sizeof(int); //获取数组的指针 //1获取数组的首地址 int*p1=arr; //2循环 for(inti=0;i<len......
  • C语言:操作符详解
    文章目录一、操作符(一)操作符的类型1.算术操作符2.移位操作符(1)左移操作符:(1)右移操作符:3.位操作符(二进制)(1)不使用第三个变量,将a和b的值交换。(2)统计整形中二进制中含1的数量(3)编写代码将13二进制序列的第5位修改为1,然后再改回04.赋值操作符5.单目操作符6.关系操作符7.逻辑......
  • “Elasticsearch精英进阶:从零到精通的安装,从Kibana到Java API,全面掌握CRUD与DSL查询及
    目录引言1.初识elasticsearch1.1.认识和安装 1.1.1.安装elasticsearch 1.1.2.安装Kibana 1.2.倒排索引1.2.1.正向索引1.2.2.倒排索引1.2.3.正向和倒排1.3.基础概念1.3.1.文档和字段1.3.2.索引和映射1.3.3.mysql与elasticsearch1.4.1.安装IK分词器1.4.2.使......
  • 校园导航图(C语言)
    功能分析主要实现了一个校园导航图的相关功能,具体分析如下:图的数据结构定义:AdjMatrix结构体定义了图的邻接矩阵、地点名称、地点介绍、地点个数和路线个数等信息。功能函数:WriteFileAdjMatrix:将邻接矩阵写入文件。delOldAddress:删除旧地点。delOldPath:删除指定路线。......