首页 > 其他分享 >C语言 选择结构(分支语句)

C语言 选择结构(分支语句)

时间:2023-04-16 14:31:54浏览次数:36  
标签:语句 case 标号 C语言 switch else 表达式 分支

前言:在我们初学C语言学习的时是顺序结构,这是最简单程序结构。在顺序结构中,各语言都是按自上而下的顺序执行的,执行完上一个语句就自动执行洗一个语句,是无条件的,不用作任何判断。实际上,在很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作,或从给定的两种或多种操作选择一个,这就是选择结构要解决的问题。

http://t.csdn.cn/6RtwN也可以在CSDN中查看,同作者。

在我们学习选择结构前,先认识一下语句

C语句可以分为一下五类:

  1.  表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

今天学习的选择结构(分支语句)和循环结构(循环语句)是控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。

可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句
  2. 循环执行语句:do while语句、while语句、for语句
  3. 转向语句:break语句、goto语句、continue语句、return语句

1.选择结构和条件判断

在现实生活中需要进行判断和选择的情况很多。例如:

  • 如果考试不及格,要补考                          (判断是否及格)
  • 周末出去旅游                                            (判断是否是周末)
  • 输入一个数,输出其绝对值。可以写出以下语句
if (x <= 0)
		printf("%d", x);
	else
		printf("%d", -x);

我们要处理这些问题,关键在于进行“条件判断” 。

选择结构需要在进行下一个操作前先进行条件判断。

C语言的两种选择语句:

  1. if语句:用来实现两个分支的选择结构
  2. switch语句:用来实现多分支的选择结构

2.用if语句实现选择结构

2.1在C语言中选择结构主要是用if语句实现的,为了让大家进一步了解if语句的应用,我们举个例子

例:输入两个实数,由小到大输出这两个数

解题思路: 将两数进行比较,如果a<b,直接输出;如果a>b,将两数交换,然后输出。用if语句来判断。

要执行多条语句是,要使用代码块   “{}”     因为if语句默认后边只能管理一条语句

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d%d", &a, &b);
	if (a > b)
	{
        //将a,b的值互换
		int tmp = a;
		a = b;
		b = tmp;
	}
	printf("a=%d b=%d\n", a, b);
	return 0;
}

2.2if语句的一般形式

(1)    if(表达式)

                语句1

(2)   if(表达式)

                语句1

        else

                语句2

(3)     if(表达式1)

                语句1

          else if(表达式2)

                语句2

           else if(表达式2)

                语句3

           else

                语句4 

注意:表达式不可以连着写  例:1<x<10 

if(1<x<10)
//如果输入的x是11
//1<11表达式为真   返回1
//表达式将变为
if(1<10)
//1<10永远成立  就会执行if中的语句,会输出错误的结果


 应该写成:x>1&&x<10      

2.3悬空else

C语言 选择结构(分支语句)_switch语句

C语言 选择结构(分支语句)_if语句_02编辑

 根据上述代码,我们可以看出else并不是和第一个if结合,同时VS也默认将else和第二个if对其

else的匹配:else是和它离的最近的if匹配的

int num = 1;
if(num == 5)
{
    printf("hehe\n");
}

C语言 选择结构(分支语句)_switch语句_03

当我们写这样的代码错将等号(==)写成赋值符号(=),我们这个错误的代码也会运行下去,所以我们可以将变量写在右边,这样我们写错代码无法运行。

C语言 选择结构(分支语句)_if语句_04

C语言 选择结构(分支语句)_if语句_05

3.用switch语句实现多分支选择结构

switch语句的形式 

switch(整型表达式)
    case 整形常量表达式:
    语句;


我们要实现输出今天是星期几,可以用switch语句 

C语言 选择结构(分支语句)_if语句_06

C语言 选择结构(分支语句)_选择结构_07编辑

 我们发现输入3,会打印出3以后所有的情况。我们要在每种情况后加break语句,可以跳出switch语句(case决定入口,break决定出口 )

说明:

  1. stitch语句括号内的表达式,其类型为整数类型(包括字符型)
  2. 语句体内包含多个以关键字case开头的语句和最多一行的default开头的语句。case后面跟的常量,例如:case 1或case 'a‘和default都是起标号作用,用来标志一个位置。执行switch语句,先计算switch后面表达式的值,然后将它与各csae标号比较,如果与某个case标号中的常量相同,流程就转到此caes标号后的语句。如果没有与switch表达式相匹配的case常量,流程就转去执行default标号后的语句。
  3. 多个case标号可以共用一组执行语句:例
case 1:
case 2:
case 3:
case 4:
case 5:
    printf("weekday\n");

注意:caes标号只起标号作用:根据switch表达式的值找到匹配的入口标号,就不再进行条件检查,在执行完一个case标号后面的语句,就从此标号一直执行下去,不在判断。所以要合理利用break。

这次选择结构的知识在这里就讲完啦。希望大家读完可以对选择结构有更深的理解,有所收获,如果有不正确的地方大家可以指出,同时也感谢大家的支持。






标签:语句,case,标号,C语言,switch,else,表达式,分支
From: https://blog.51cto.com/u_15927947/6193462

相关文章

  • 通讯录的思路与实现(C语言)
     目录前言程序的分装程序的结构函数实现通讯录的初始化通讯录的扩容将数据保存到本地增加联系人显示通讯录所有联系人目标联系人的检索(根据名称)目标联系人的检索(根据号码)检索发展来的函数删除联系人查询目标联系人联系人信息的更改按名称对通讯录进行排序找到属于目标类别的联......
  • java语句
    语句语句是以;或}或)结尾的一段代码,目的是执行某些操作,并且没有返回值。语句块和方法体也算语句。所以,语句是可以嵌套的。函数体是一个有名称的语句。对于拥有子语句的语句,称为复合语句,否则就是简单语句。 简单语句空语句:;;;方法调用语句:setVal(34);表达式语句:i......
  • C语言函数大全-- i 开头的函数
    C语言函数大全本篇介绍C语言函数大全–i开头的函数1.imagesize1.1函数说明函数声明函数功能unsignedimagesize(intleft,inttop,intright,intbottom);获取保存位图像所需的字节数1.2演示示例#include<graphics.h>#include<stdlib.h>#include<s......
  • Vue2.0 学习 第三组 条件语句
    本笔记主要参考菜鸟教程和官方文档编写。1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定。如:<divid="app"><divv-if="test"></div></div><script>newVue({el:"#app",data:{test:true}})</script>2.v-show......
  • C语言文件按行修改
    voidfile_update_test(){ FILE*fp; charbuf[1024]={0}; fp=fopen("1.txt","rb+"); intupdate_index=2; intcnt=0; if(fp==NULL) { printf("openfail"); return; } while(fgets(buf,sizeof(buf),fp)) { ......
  • [每天例题]蓝桥杯 C语言 饮料换购
    饮料换购题目    题目要求凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。思路分析1.先进行一次if判断,不满足三瓶则直接输出2.满三瓶换一次,但是需要将原来的再加上换购的,然后不断循环,直到再次不符合三瓶。代码#include<stdio.h>i......
  • 【web 开发基础】PHP 中的goto语句的使用 -PHP 快速入门 (23)
    前言在所有的开发语言中不是都能使用goto语句,因为对goto的应用一直有争议。很多编程goto也只是作为保留关键字,比如java。支持goto的人认为goto语句使用起来比较灵活,而且有些情形能提高程序的效率。如果完全删去goto语句,有些情形反而会使程序变得过于复杂,增加一些不必要的计算量。......
  • MsSql 根据表名和条件,生成Insert语句
    ALTERproc[dbo].[proc_insert](@tablenamevarchar(256),@wherevarchar(max))asbeginsetnocountondeclare@sqlstrvarchar(MAX)declare@sqlstr1varchar(MAX)declare@sqlstr2varchar(MAX)select@sqlstr='select''INSERT'+@tablename......
  • Excel VBA语句集
    (第1辑)定制模块行为(1)OptionExplicit'强制对模块内所有变量进行声明OptionPrivateModule'标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示OptionCompareText'字符串不区分大小写OptionBase1'指定数组的第一个下标为1(2)OnErrorResumeNext'忽略......
  • Shell中的控制语句
     任何复杂结构的程序都可以由顺序、分支、循环三种结构实现。  Shell中的控制语句主要分为两大部分:一个是条件测试与判断语句,另一个是循环结构的控制语句。条件控制语句 1)if语句 ①无分支条件语句:if-then结构if[condition]  then   commands   ……......