C语言——分支语句和循环语句

本文详细介绍了C语言中的分支语句(if和switch)和循环语句(while、for、do...while),包括它们的语法结构、控制流程、break和continue的使用,并提供了多个练习题帮助读者巩固理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、什么是语句

二、分支语句(选择结构)

1.if语句

1.1if语句的语法结构

1.2悬空else

1.3if书写形式的对比

1.4练习

2.switch语句

2.1switch语句

2.2 break语句

2.3 default语句

2.4 练习

三、循环语句

1.while语句

 1.2 while语句中的break和continue

 2.for循环

2.1for循环的语法结构

2.2 for循环中的break和continue

2.3for循环和while循环

2.4 for 语句中的循环控制变量

2.5一些for循环中的变种

2.6练习

3.do...while()循环

3.1语法结构

3.2 do语句的特点

3.3 do...while循环中的break和continue

四、练习


一、什么是语句

C语言的语句可以分为以下五类:

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,他们由特定的语句定义符组成,C语言有九种控制语句。可分为以下三类:

1.条件判断语句也叫分支语句:if语句、switch语句;

2.循环执行语句:do while语句、while语句、for语句;

3.转向语句:break语句、goto语句、continue语句、return语句;

二、分支语句(选择结构)

选择很好理解,如果你学习,你就可以收获知识;如果你不学习,你就会虚度光阴,这就是个选择。

1.if语句

1.1if语句的语法结构

if语句的语法结构是什么样子的呢?

语法结构:
//单分支
if(表达式)
    语句;
//双分支
if(表达式)
    语句1;
else
    语句2;
//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;

来个代码实例,判断年龄,如果年龄大于18,就输出成年

//单分支
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年\n");
	return 0;
}

再加一点,如果年龄大于18,就输出成年,否则就输出未成年

//双分支
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0;
}

再提升一下,让他判断少年青年中年老年几个阶段。

//多分支
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年\n");
	}
	else if (age >= 18 && age < 30)
	{
		printf("青年\n");
	}
	else if (age >= 30 && age < 50)
	{
		printf("中年\n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
	return 0;
}

                                      

通过这几个实例,我们可以明白if语句的基本用法了。如果表达式的结果为真,则语句执行。

那么在C语言中如何判断真假呢?在C语言中,0表示假,非0表示真。

如果条件成立,要执行多条语句,怎应该使用代码块?
#include <stdio.h>
int main()
{
    if(表达式)
   {
        语句列表1;
   }
    else
   {
        语句列表2;
   }
    return 0; 
}
这里的一对 { } 就是一个代码块。

1.2悬空else

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0; 
}

 这段代码输出的结果是hehe还是haha呢?如果我们运行代码,会发现什么也没输出

这是为什么呢?这是因为else与第二个if相匹配,共同构成第一个if的子语句。第一个if表达式不成立,所以程序直接跳出if这个分支语句,跳过了第二个if,自然也就没有执行else语句,其实如果我们把这段代码复制到编译器上就会发现else是默认跟第二个if对齐的。

 通过这个例子我们要明白,else默认和离他最近的if相匹配,而且我们也要意识到写代码规范的重要性,适当的使用{ }可以使代码的逻辑更清楚,

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0; }

我们适当的使用了{ },既避免了出错,又使代码更加美观。

1.3if书写形式的对比

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

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

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

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

对比一下四种代码的书写形式,我们会发现代码2和代码4更好,逻辑更加清晰,对比1,2,我们很容易发现代码2书写更好,那为什么对比3和4,代码4更好呢?这是因为代码4中,if表达式中常量在左,变量在右,这样可以防止将等于号==错写成赋值号,却无法找到错误。

1.4练习

1.判断一个数是否为奇数

#includ
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值