C语言基本语法--分支篇(初学者必须知道的宝贵知识)

系列文章目录

C语言基本语法——循环篇(三种常见的循环)


文章目录


前言

对于C语言中的选择和循环,你知道该怎么学习吗?

你真的了解分支吗?分支该怎么使用呢?

对于学习C语言的小白来说,分支语句或许是一个比较困难的学习内容,因此作者希望小白们通过本文的阅读,可以了解到分支语句是如何使用的。(配合循环篇食用效果更佳哎)


一、语句是什么?

语句:构成程序的元素。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。本文此次介绍选择结构,选择结构也叫分支语句:if语句、switch语句。

二、分支语句

1. if语句

代码如下:

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int count = 0;
	for (i = 1; i <= n; i++)//循环
	{
		if (i % 2 == 1)//表达式
		{
			//语句
			count++;
			printf("%d ", i);
		}
	}
	printf("count=%d", count);
	return 0;
}

这是一个简单的求解给定数值范围内的奇数问题,其中的if语句,为我们提供了奇数的判断,如果i%2==1,则执行count++和打印的语句。

注:if如果没有使用代码块,其后面只能有一条语句。

如果表达式的结果为真,则语句执行。

C 语言中如何表示真假?
0 表示假,非 0 表示真。

语法结构:

if ( 表达式 )
    语句 ;

表现形式:

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

1.1 悬空else

代码如下:

int main()
{
	int a = 0;
	int b = 5;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}

此处输出结果为什么呢?

hehe还是haha呢?还是什么都没有呢?jain

输出结果:什么都没有

原因:else 和离他最近的if进行匹配,导致第一个If没有匹配的else,a!=0,if判断条件为假,其后面的语句不执行,无输出结果。

1.2 if书写形式

// 代码 1
if ( condition ) {
    return x ;
}
return y ;
// 代码 2
if ( condition )
{
    return x ;
}
else
{
    return y ;
}

代码1和代码2实际上是等效的,如果条件满足,则返回x,否则,返回y,但是第一个代码的书写方式给读者的感受是如果条件满足,则输出x,然后再输出y,总之,给人的感觉就是y是一定会输出的,所以由此可见,不同的if书写方式,会产生不同的理解,我们要写出好的,简洁易懂的代码。

2.switch语句

2.1 简单的switch 语句

代码如下:

int main()
{
	int score = 0;
	scanf("%d", &score);
	switch (score / 10)
	{
	case 9:
	{
		printf("A");
		break;
	}
	case 8:
	{
		printf("B");
		break;
	}
	case 7:
	{
		printf("C");
		break;
	}
	case 6:
	{
		printf("D");
		break;
	}
	default:
		printf("E");
		break;
	}
	return 0;
}

这是一个简单的输出成绩的题目,90-100输出A,80-90输出B,70-80输出C,60-70输出D,其余的输出E。

由此,我们可以看出switch语句适合于多分支的情况,可以将情况简化,代码量大大减少。

语法结构:

switch ( 整型表达式 )
{
    语句项;
}
语句项是什么呢?
// 是一些 case 语句:
// 如下:
case 整形常量表达式 :
    语句 ;

2.2 在switch语句中的break的作用

break语句的实际作用则是把语句列表划分为不同的分支部分。

编程小习惯

在最后一个 case 语句的后面加上一条 break语句。

(之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break 语句)。

2.3 default 子句

如果表达的值与所有的 case标签的值都不匹配的话,其结果就是所有的语句都被跳过。
程序并不会终止,也不会报错,因为这种情况在C 中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default 子句,把下面的标签
default
写在任何一个 case 标签可以出现的位置。
switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个 switch 语句中只能出现一条 default 子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个 case 标签一样执行 default 子句。
编程小习惯
在每个 switch 语句中都放一条 default 子句是个好习惯,甚至可以在后边再加一个 break

总结

以上就是今天要讲的内容,本文仅仅简单介绍了分支语句的使用,分支和循环是我们必须要掌握的内容,希望初学者们可以将两者合理结合,写出优异的代码(本文配合上篇循环食用更佳哦)!

  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值