<C语言>分支语句

初识C语言检测答案

选择题

有疑惑可在评论区提出,答案若出现错误恳请在评论区指正

C D B C B

C C B B B

C B A C

编程题

编程题答案不唯一,不同解答可写在评论区

//BC17-计算表达式的值
#include <stdio.h>
int main() 
{
    int a=40,c=212;
    printf("%d",(-8+22)*a-10+c/2);
    return 0;
}
//BC41-你是天才吗?
#include <stdio.h>
int main() 
{
    int n;
    scanf("%d",n);
    if(n>=140)
    {
        printf("Genius");
    }
    return 0;
}
//BC32-输出学生信息
#include <stdio.h>
int main()
{
    printf("Name    Age    Gender\n");
    printf("---------------------\n");
    printf("Jack    18     man   \n");
    return 0;
}
//BC83-被5整除问题
#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    if(a%5==0)
        printf("YES");
    else
        printf("NO");
    return 0;
}
//BC18-计算带余除法
#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a>0&&b<10000)
    {
        printf("%d %d",a/b,a%b);
    }
    return 0;
}
//BC19-反向输出一个四位数
#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    while(n)
    {
        printf("%d",n%10);
        n=n/10;
    }
    return 0;
}
//BC33-计算机平均成绩
#include <stdio.h>
int main()
{
    int i;
    float sum = 0,n;
    for (i = 0; i <5; i++)
    {
        scanf("%f",&n);
        sum += n;
    }
    printf("%.1f", sum /5.0);
    return 0;
}
//BC49-判断2个数的大小
#include<stdio.h>
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        if(a>b)
        {
            printf("%d>%d\n",a,b);
        }
        else if (a<b)
        {
            printf("%d<%d\n",a,b);
        }
        else printf("%d=%d\n",a,b);
    }
    return 0;
}
//BC23-时间转换
#include<stdio.h>
int main()
{
    int m,f,s,n;
    scanf("%d",&n);
    m=n%3600%60;
    f=n%3600/60;
    s=n/3600;
    printf("%d %d %d",s,f,m);
    return 0;
}

前言

C语言是一门结构化程序设计语言,主要包括顺序结构,选择结构以及循坏结构

仔细想想,生活中任何事情都可以拆分成这三种结构的。

本文章将详细介绍分支(选择))语句和循环语句以及goto语句

什么是语句?

在正文开始前,我们先来了解一下,什么是语句?

在C语言中,语句可分为以下五类:

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

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

可分成以下三类:

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

语句是以 分号; 结尾的。

分支(选择)

经过初识C语言(一)我们已经知道分支(选择)语句包含了

if

switch

在我们人生当中,是到处面临选择的。拿自己来说,高考后分数够不够及格线,大学毕业后是选择就业还是考研这种选择,高考填志愿选择什么类别专业这样多种选择。

这种将改变人生的选择,也是我们生活中的一部分。好好学习就是为了让我们未来有更多的选择

if语句

那if语句的语法结构是怎么样的呢?

//if语法结构
if(表达式)
    语句;
    
//分支 
if(表达式)
    语句1;
else
    语句2;

//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;   

以上代码核心思想是这样的:

表达式的结果如果为真,语句就可以执行

在C语言中,零表示假,非零为真,也就是说,当表达式为非零的时候,我们就可以继续往下执行语句

分支语句就是有多种选择,表达式为真,我们执行语句1,否则表达式为零,我们执行语句2。

多分支语句就是,表达式1为真,则执行语句1;如果表达式1为假,表达式2为真,则执行语句2,否则执行语句3。

拿刚才的话来说,就是我的分数线能够满足上大学,那我就上大学。

代码表示:

#include <stdio.h>
int main()
{
	float score = 0;	//去定义一个高考成绩
	scanf("%f", &score);	//输入自己的高考成绩
	if (444 <= score)	//如果高考成绩大于或等于444,就可以上大学
	{
		printf("恭喜你已达到本科录取分数线,可以上大学!");
	}
	return 0;
}

友情提示,本分数线是山东省本科录取分数线,来源于网络

在这里插入图片描述

运行结果:

image-20221224163503619
假设很快大学四年过去了,我马上面临毕业,那么我要选择考研还是就业,这种可以用代码这么表示:

#include <stdio.h>
int main()
{
	int num = 0;	//定义一个数字
    printf("请输入数字 1 or 0\n");
	scanf("%d", &num);	//输入一个数字 1或0 
	if (num)	//当输入的数字为 1 时,选择考研,否则就业
	{
		printf("考研\n");	
	}
	else
	{
		printf("就业\n");
	}
	return 0;
}

执行结果:

image-20221224164332952

在这里还要特别强调个格式,如果语句是多个语句,则用 { } 括起来,否则编译器会报错,我本人是不管用多少个语句,哪怕一个我也会加上 { } 主要是为了方便,也避免了一些问题。

适当的使用{ }可以使代码的逻辑更加清楚。

代码风格很重要

被 { } 括起来的叫做语句块.

if(表达式)
   {
        语句列表1}
    else
   {
        语句列表2}

image-20221224165817224

#include <stdio.h>
int main()
{
	int num = 0;
	printf("请输入数字 1 or 0");
	scanf("%d", &num);
	if (num)
	{
		printf("考研\n");
		printf("一战成硕,一举上岸!\n");
	}
	else
	{
		printf("就业\n");
	}
	return 0;
}

运行结果:

image-20221224170038138

好,大学毕业了,该收拾行李回家了,这时候恰好有一段自行支配的时间可以选择和伙伴出去旅游,从山东到北京,出行方式可以选择高铁,自驾,飞机。

#include <stdio.h>
int main()
{
	int num = 0;
	printf("请输入数字 0 , 1 or 2 选择出行方式\n");
	scanf("%d", &num);
	if (1 == num)	
	{
		printf("高铁\n");
	}
	else if(num==2)
	{
		printf("飞机\n");
	}
	else
	{
		printf("自驾\n");
	}
	return 0;
}

运行结果:

image-20221224172418904

在这儿特别要注意 == 与 = 号的区别,前者判断两边是否相等,而后者是将右边的值赋值给左边

if嵌套

if语句可以嵌套,也就是说if与局内可以包含多个if语句

if (表达式1)
{
	if (表达式2)
	{
		语句1;
	}
	else
	{
		语句2;
	}
}
else
{
	语句3;
}

在生活中,很多大的选择当中包含着小选择,比如前面所说的话, 当高考分数到达录取分数线,就要开始填写志愿,比如要去青岛大学,除了分数要到达本科录取分数线之外,还要满足青岛大学对省内最低录取分数线529分。青岛大学分数线来源于网络

image-20221226084937469

#include <stdio.h>
int main()
{
	float score = 0;
	scanf("%f", &score);
	if (444 <= score)
	{
		printf("恭喜你已达到本科录取分数线,可以上大学!\n");

		if (529 <= score)
		{
			printf("恭喜您的分数满足青岛大学最低录取分数线!\n");
		}
		else
		{
			printf("很抱歉,您的分数未满足青岛大学最低录取分数线!\n");
		}
	}
	else
	{
		printf("很抱歉,您并未达到本科录取分数线\n");
	}
	return 0;
}

运行结果:

image-20221226090204678

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

switch语句

switch语句也是一种分支语句。 常常用于多分支的情况

switch语法结构:

switch(表达式)
{
    case 常量表达式1: 语句1;
    case 常量表达式2: 语句2;
    case 常量表达式3: 语句3;
        ...
            default :语句;
}

switch( 表达式 )中的表达式可以是字符型表达式也可以是整型表达式 ,但不能是字符串或浮点数

常量表达式像是普通的表达式,不能包含变量和函数调用,例如可以是1,2+3,a…但绝对不能是n+1,除非n是表示常量的宏。

C语言不允许有重复的分支标号,也就是说常量表达式不能相同

语句可以写一个或者多个,可不加 { },不出意外每组语句后面通常是break语句

switch语句中的default子句可以放在任意位置,每个switch语句中只能出现一条default子句,也可以不写default。

break 跳出循环

break语句

C 语言中 break 语句有两种用法:

  1. 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的

  2. 它可用于终止switch 语句中的一个 case。使程序不再往下执行

下面来举例说明第一种用法

//输出1-10以内第一个被2整除的数
#include <stdio.h>
int main()
{
	int num = 1;
	while (num <= 10)
	{
		if (num % 2 == 0)
		{
			printf("%d\n", num);
			break;
		}
		num++;
	}
	return 0;
}

执行结果:

image-20221226145316375

接下来是第二种用法

当高考分数出来后,接下来就该填写志愿,如果大专业类选择的是信息类,于是可以选择通信工程,物联网工程,网络工程,软件工程,计算机科学与技术,数字媒体技术等各种小专业

例如这些小专业通信工程为1,物联网工程为2,网络工程为3,软件工程为4,计算机科学与技术为5,数字媒体技术为6,可写成以下代码

#include <stdio.h>
int main()
{
	int code = 0;
	scanf("%d", &code);
	switch (code)
	{
		case 1: 
			printf("通信工程\n");
			break;
		case 2:
			printf("物联网工程\n");
			break;
		case 3:
			printf("网络工程\n");
			break;
		case 4:
			printf("软件工程\n");
			break;
		case 5:
			printf("计算机科学与技术\n");
			break;
		case 6:
			printf("数字媒体技术\n");
			break;
		default:
			printf("非信息类别\n");
	}
	return 0;
}

运行结果:

image-20221226150234574

当我们去掉break的时候,运行结果会是怎样?

#include <stdio.h>
int main()
{
	int code = 0;
	scanf("%d", &code);

	switch (code)
	{
		case 1: 
			printf("通信工程\n");

		case 2:
			printf("物联网工程\n");

		case 3:
			printf("网络工程\n");
			
		case 4:
			printf("软件工程\n");
			break;
		case 5:
			printf("计算机科学与技术\n");
			break;
		case 6:
			printf("数字媒体技术\n");
			break;
		default:
			printf("非信息类别\n");
	}
	return 0;
}

运行结果:

image-20221226150528021

由此可以看出break的作用
在这里插入图片描述

若以上代码,我们用if语句来写

#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (1 == num)
	{
		printf("通信工程\n");
	}
	else if (2 == num)
	{
		printf("物联网工程\n");
	}
	else if (3 == num)
	{
		printf("网络工程\n");
	}
	//......以此类推
	return 0;
}

相较于switch语句 if …else i的形式太复杂 ,所以多分支常用switch来表达。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾莜薇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值