C语言分支与循环语句(一)
2026/7/27 6:41:27 网站建设 项目流程

一、内容提要

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构。生活中的常见的事物都可以拆分为这三种结构或者是这三种结构的组合。C语言可以通过if、switch实现分支结构(顺序结构、选择结构),通过for、while、do while实现循环结构。

二、具体结构的语句

1.分支结构

1.1 if语句
1.1.1 if

if 语句的语法形式如下:

代码块

1 if ( 表达式 )

2 语句;

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。 在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。默认在if语句中只控制一条语句,若要使if同时控制多条语句,可使用大括号将语句括起来。

例子1:输入一个整数,判断是否为奇数

例子2:输入一个成绩,判断是否合格,在输出合格的消息时,同时输出恭喜恭喜

1.1.2 else

一个正整数不是奇数,那就是偶数了,现在给定⼀个任意的正整数,要判断是奇数还是偶数,怎么表示呢?

这时候就需要使用if...else...的语句了,语法形式如下:

代码块

1 if ( 表达式 )

2 语句 1;

3 else

4 语句 2;

例子1:输⼊⼀个正整数,如果是奇数打印是奇数,否则打印偶数。

默认在else语句中只控制一条语句,若要使else同时控制多条语句,可使用大括号将语句括起来。

例子2:输入一个成绩,判断是否合格。在输出合格的消息时,同时输出恭喜恭喜,在输出不合格消息时,同时输出继续加油。

if 和 else 后⾯的 { } 可以括起来多条语句,是⼀个整体,这个大括号也叫程序块,或者复合语句

1.1.3 多分支

在 if else 语句中, else 可以与另⼀个 if 语句连用,构成多分支的场景。

代码块

1 if( 表达式 1)

2 语句 1;

3 else if( 表达式 1)

4 语句 2;

5 else if( 表达式 3)

6 语句 3;

7 else

8 语句 4;

例子:总价“满50减15,满30减8,满20减5,不满20元,不参与活动”,怎么实现?

1.1.4 嵌套if语句

有时候,我们需要在if语句中嵌套if语句,形成多层嵌套的判断。

例子:评奖学金资格,要求如下:

1. 成绩>=85,没有挂科,没有记过处分,有奖学金

2. 其中任意⼀个条件不满足,都不能评奖

1.1.5 悬空else问题

如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是与前面最近的、还没有配对的 if 结合。

例子:

上面的代码排版,让else与第一个if语句对齐,让我们以为else是和第一个if匹配的,当if语句不成立的时候,自然想到的是执行else语句,打印haha。但实际上else是和第二个if进行匹配的,这样后面的if...else语句是嵌套在第一个if语句中的,如果第一个if语句就不成立,嵌套if...else语句就没有机会执行了,最终什么都不打印。

如果代码写成这样,就更清楚一些:

或者如果想让else与第一个if匹配,可以进行如下的修改:

加上大括号,代码的逻辑就可以发生相应的改变。

1.2switch语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。

但是,既然有了if语句,为什么还需要switch语句呢?这时候,就需要引入语法糖的概念了。

DeepSeek AI的详细解释

简而言之,语法糖指的是编程语言中那些让代码写起来更简洁,但并没有引入新功能的语法。

switch 语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的 else if 改成更易用、可读性更好的形式。

switch 语句的语法形式如下:

代码块

1 switch ( 表达式 )

2 {

3 case num1: 语句 1;

4 case num2: 语句 2;

5 ...

6 default: statement;

7 }

在上面的代码中,根据switch后面的表达式产生的不同的值,执行相应的case分支(例如:表达式输出的结果为2,寻找case后面的num==2的分支,并执行相应的语句),如果找不到对应的值,就执行default分支(例如,表达式输出的结果为3,但是case后面的所有num!=3,于是执行default后面的语句)

switch后面的表达式必须是整形表达式(在C语言中,整型表达式就是计算结果为整数类型的表达式。这里“整型”包括intcharshortlong及它们的unsigned版本。)

case后面的值必须是整型常量表达式

整型常量表达式只能由以下元素组成,不能包含任何变量:

  • 整数常量:如100xFF0755

  • 字符常量:如'A''\n'(字符在C中本质是整型)。

  • 枚举常量:如enum Color {RED=5};中的RED

  • sizeof运算符:如sizeof(int)(它在编译期由编译器算出结果)。

  • _Alignof运算符(C11起)。

  • 强制类型转换:将上述常量进行转换,如(int)10.5

  • 算术/逻辑/位运算:用+-*/<<&&等连接上述元素,只要操作数都是常量。)

整形表达式整型常量表达式的区别:

它们最核心的区别在于求值时机

  • 整型表达式:通常在程序运行时(runtime)计算。

  • 整型常量表达式:必须在编译时(compile time)就能计算出确定的值。

1.2.1 if语句和switch语句的对比

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询