C语言分支和循环语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、if语句
  • 二、switch语句
  • 三、while循环
  • 四、for循环
  • 五、do-while循环
  • 六、break和continue语句
  • 七、循环的嵌套
  • 八、goto语句
  • 总结


前言

        计算机科学家通过观察,将世界万物变化的规律归纳为顺序、选择与循环三种逻辑结构,并用代码的形式演绎它们,开发出了包括if语句、switch语句、for循环语句等计算机语言结构,又称分支和循环。通过上述结构的排列组合,程序员能借助计算机解决生活中的许多问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、if语句

  • if

if的语法格式

if (表达式)
    语句;

若表达式为真(结果非0),则执行语句;若表达式为假(结果为0),则不执行语句。

注意:if只能控制紧跟其后的第1条语句,若要控制if后的多条语句,则需要用大括号将其括起来,如:

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

若表达式为真,则执行语句1;若表达式为假,则执行语句2.

if……else的语法格式

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

注意:else总是与距离其最近的if配对,而同两者对其与否无关,如:

if (表达式1)
    语句1;
    if (表达式2)//else与此if配对
        语句2;
else
    语句3;
  • if……else if……else

若表达式1为真,则执行语句1;若表达式2成立,则执行语句2;以此类推,若表达式1~n-1都不成立,则执行语句n。

if……else if……else的语法格式

if (表达式1)
    语句1;
else if (表达式2)
    语句2;
……
else if (表达式n-1)
    语句n-1;
else 
    语句n;

  • if语句案例举隅

1. 输入一个人的年龄

2. 如果年龄<18岁,打印“少年”

3. 如果年龄在18岁至44岁之间,打印“青年”

4. 如果年龄在44岁至59岁之间,打印“中老年”

5. 如果年龄在60岁至89岁之间,打印“老年”

6. 如果年龄≥90岁,打印“老寿星”

#include <stdio.h>
int main()
{
    int age = 0;
    printf("请输入您的年龄:>");
    scanf("%d", &age);
    if (age < 18)
        printf("少年\n");
    else if (age >=18 && age <44)
        printf("青年\n");
    else if (age >=44 && age <60)
        printf("中老年\n");
    else if (age >=60 && age <89)
        printf("老年\n");
    else
        printf("老寿星\n");
    return 0;
}

二、switch语句

switch语句的语法格式

switch (表达式)
{
case value1:
    语句1;
    break;
case value2:
    语句2;
    break;
……
default:
    语句n;
    break;
}

根据表达式不同的值,执行不同的case分支下的语句,如表达式的结果为value1,则执行语句1。若表达式的结果与任意case分支的值均不匹配,则执行default分支下的语句。

break的作用是结束switch语句,当有break时,程序执行完相应case分支下的语句后随即跳出switch语句;没有break时,程序会依次执行每一个case分支下的语句,直到遇到break或执行完整个switch语句为止。

注意:switch后的表达式必须是整型表达式,case后的值必须是整型常量表达式。尽管如此,由于字符在计算机中是以ASCLL码的形式存储的,因而switch后表达式的结果或case后的值为ASCLL码表上的某一字符时,该语句并不会出现语法错误。

if语句和switch语句都属于分支语句,前者更适用于分支标准为数值范围的情况,后者更适用于分支标准为某个精确的数值的情况。

1. 输入一个1~7的数字,打印对应的星期几

2. 例如:输入1,输出“星期一”

#include <stdio.h>
int main()
{
    int day = 0;
    printf("请输入数字:>");
    scanf("%d", &day);
    switch (day)
    {
    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;
    case 7:
        printf("星期天\n");
        break;
    deault:
        printf("请重新输入\n");
        break;
    }
    return 0;
}

三、while循环

while循环的语法格式

while (表达式)
    语句;

 首先执行表达式,若表达式为假,则循环直接结束;若表达式为真,则执行循环语句,执行完后再判断是否进行下一次循环。

1. 输入一个正整数,逆序打印这个整数的每一位

2. 如:输入1234,输出“4 3 2 1”

#include <stdio.h>
int main()
{
    int i = 0;
    printf("请输入一个正整数:>");
    scanf("%d", &i);
    while(i)
    {
        printf("%d ", i % 10);
        i = i / 10;
    }
    return 0;
}

四、for循环

for循环的语法格式

for (表达式1; 表达式2; 表达式3)
    语句;

 表达式1用于循环变量的初始化,表达式2用于循环结束条件的判断,表达式3用于循环变量的调整。

首先执行表达式1初始化循环变量,然后执行表达式2进行判断,如果结果为假,则循环结束,如果结果为真,则执行循环语句,循环语句执行完后,再执行表达式3以调整循环变量,然后再执行表达式2判断是否进行下一次循环。

1. 计算1~100之间3的倍数的数字之和

#include <stdio.h>
int main()
{
    int i = 0;
    int sum = 0;
    for (i = 1; i <= 100; i++)
    {
        if (i % 3 == 0)
            sum += i;
    }
    printf("%d\n", sum);
    return 0;
}

五、do-while循环

do-while循环的语法格式

do
{
    语句;
} while (表达式);

 do-while循环先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,结果为真则进行下一次循环,结果为假则不再继续循环。

1. 输入一个正整数,计算这个整数是几位数

2. 如:输入1234,输出“4”

#include <stdio.h>
int main()
{
    int num = 0;
    int count = 0;
    printf("请输入一个正整数:>");
    scanf("%d", &num);
    do
    {
        count++;
        num = num / 10;
    } while (num);
    printf("%d\n", count);
    return 0;
}

六、break和continue语句

  • break

break的作用是用于永久地终止循环,只要break被执行,直接就会跳出循环,继续往后执行。

#include <stdio.h>
int main()
{
    int i = 1;
    while (i <= 10)
    {
        if (i == 5)
            break;//当i等于5后,就执行break,循环就终止了
        printf("%d ", i);
        i += 1;
    }
    return 0;
}

如上述代码所示,打印1、2、3、4后,当i等于5时,循环在break的地方终止,不再打印,不再循环。在for循环和do-while循环中亦是如此。

  • continue

continue的作用是跳过本次循环continue后面的代码,再for循环和while循环中有所差异。

while循环中的continue

#include <stdio.h>
int main()
{
    int i =1;
    while (i <= 10)
    {
        if (i == 5)
            continue;
            //当i等于5后,就执行continue,直接跳过continue后的代码,去循环判断的地方
            //因为这里跳过了i += 1,所以i一直为5,程序陷入死循环
        printf("%d ", i);
        i += 1;
    }
    return 0;
}

for循环中的continue

#include <stido.h>
int main()
{
    int i = 1;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            continue;//这里continue跳过了后边的打印,来到了i++的调整部分
        printf("%d ", i);
    }
    return 0;    
}

七、循环的嵌套

循环的嵌套,即一个循环内部使用另一个或多个循环。

1. 找出100~200之间的素数,打印在屏幕上,并计算其个数

2. 注:素数又称为质数,指只能被1和其本身整除的数字

#include <stdio.h>
#include <math.h>
int main()
{
	int i = 0;
	int j = 0;
	int count = 0;
	for (i = 100; i <= 200; i++)
	{
		int flag = 1;
		for (j = 2; j <= sqrt(i); j++)
                    //sqrt(i)表示i的平方根,只要判断2~sqrt(i)有无数能整除i即可
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}

		}
		if (flag == 1)
		{
			printf("%d\n", i);
			count++;
		}
	}
	printf("100~200间素数的个数是%d\n", count);
	return 0;
}

八、goto语句

goto语句可以实现在同一个函数内跳转到设置好的标号处。

#include <stdio.h>
int main()
{
    printf("hehe\n");
    goto next;    //next即为goto语句的标号
    printf("haha\n");
next:             //跳转至此,即跳过了“haha”的打印
    printf("heihei\n");
    return 0;
}

goto语句也可用于快速跳出多层循环。

for (...)
{
    for (...)
    {
        for (...)
        {
            if (disaster)
                goto error;
        }
    }
}
error:
    ...


总结

        分支和循环语句是构建C语言程序基本框架,前者包括if语句和switch语句,后者包括while循环、for循环和do-while循环语句。不同的语句之间可以嵌套使用,来解决复杂的问题。此外,还可以配合break、continue和goto等关键字使程序的实现和终止更加灵活。

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值