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

目录

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

1.if 语句

1)语法结构

2)例题

2.switch语句

1)语法结构

2)例题

二、循环语句

1.while循环

1)语法结构

2)例题

2.for循环

1)语法结构

2)例题

3.do-while循环

1)语法结构

2)例题

4.扩展continue,break


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

1.if 语句

1)语法结构

1.单分支

if (表达式)
    语句;

2.双分支

表达式起判断作用,若表达式为真,执行语句1;若表达式为假,则执行语句2;(C语言中 0表示假,非0表示真)

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

3.多分支

if 语句后面只有一个 else,但可以有多个 else if ,else必须位于else if 的后面,同时一旦有其中的一个表达式正确,执行的当前语句后直接结束。

if (表达式1)
    语句1;
else if (表达式2)
    语句2;
else if (表达式3)
    语句3;
else if (表达式4)
    语句4;
.......
else
   语句n;

4.嵌套语句

在 if 和 else 语句中默认都控制一条语句,所以在嵌套过程中对 if 所控制的语句一定要用 {} 给括起来,同理,else后所控制的语句也要用 {} 给括起来。

if (表达式1)
{
    if (表达式2)
    {
        if (表达式3)
            语句1;
    }
    else if (表达式4)
    {
        if (表达式5)
            语句2;
        else
            语句3;
    }
    else
        语句4;
}
else if (表达式6)
    语句5;
else
{
    if (表达式7)
        语句6;
    else
        语句7;
}

2)例题

例题一   单分支

输入一个成绩,判断是否大于等于六十,若是,则输出该成绩,否则不输出。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a >= 60)
    //为养成良好的习惯,书写时尽量在if和else后面都是用{}
	{
		printf("%d", a);
	}
	return 0;
}

例题二   双分支

输入一个成绩,判断是否及格,并输出结果(及格或不及格)

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a >= 60)
	{
		printf("成绩及格");
	}
	else
	{
		printf("成绩不及格");
	}
	return 0;
}

例题三   多分支

输入一个成绩,判断该成绩所处的层次,0-59输出不及格,60-69输出及格,70-79输出中,80-89输出良,90-100输出优

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a <= 59)
	{
		printf("不及格");
	}
	else if(a<=69)
	{
		printf("及格");
	}
	else if (a <= 79)
	{
		printf("中");
	}
	else if (a <= 89)
	{
		printf("良");
	}
	else
	{
		printf("优");
	}
	return 0;
}

例题四   嵌套语句

输入两个成绩,只有两门成绩均位于90分以上才会输出优秀,否则输出无。

#include <stdio.h>
int main()
{
	int a = 0, b = 0;
	scanf("%d %d", &a, &b);
	if (a >= 90)
	{
		if (b >= 90)
		{
			printf("优秀");
		}
	}
	return 0;
}

2.switch语句

1)语法结构

switch判断,case 决定入口,break 决定出口,直接跳出当前语句,若输入的信息错误则会跳到default。只要逻辑恰当,case顺序可以调整,default如果不在最后,应在后面添break;

重点:Switch表达式中只能是整形和枚举类型!!!

switch (表达式)
{
case 常量1:
	语句1;
	break;
case 常量2:
	语句2;
	break;
	…
case 常量n:
	语句n;
	break;
default: 
	语句n + 1;
	break;
}

2)例题

例题一

输入一个数字,判断当前是星期几

#include <stdio.h>
int main()
{
    int day = 0;
	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;
        default:
			printf("输⼊错误\n");
			break;
	}
	return 0;
}

例题二

输入一个数字,判断当前是工作日还是休息日

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

	switch (day)
	{
	    case 1://case只决定的是入口,不决定出口,如果无break,则会一直执行完switch
		case 2://如果不写break会一直执行下去,直到遇到break
		case 3:
		case 4:
		case 5:
			printf("⼯作⽇\n");
			break;
		case 6:
		case 7:
			printf("休息⽇\n");
			break;
		default:
			printf("输⼊错误\n");
			break;
	}
	return 0;
}

二、循环语句

1.while循环

1)语法结构

//表达式为真,执行循环语句
while (表达式)
{
	循环语句;
}

while首先上来先执行判断表达式,若表达式的值为0,则循环直接结束;若表达式的值不为0,则执行循环语句,语句执行完再继续判断,判断结果决定是否执行下一次循环语句,所以while语句的条件表达式的执行次数总是比循环体的执行次数多一次。

2)例题

例题一

在屏幕上打印1-10的值 

#include <stdio.h>
int main()
{
	int n = 1;
	while (n <= 10)
	{
		printf("%d ", n);
		n++;
	}
	return 0;
}

例题二

输入一个正整数,逆序打印这个整数的每一行

1.第一步首先求n的个位数,⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
2.第二步使⽤ n=n/10 操作去掉最低位的,找出倒数第⼆位,如:n=1234/10得123
3.此时1234变成了123,循环前两个步骤,在n变成0之前,就能到所有的位数

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;
	}
	return 0;
}

2.for循环

1)语法结构

表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。

for (表达式1; 表达式2; 表达式3)
{
	循环语句;
}

⾸先执⾏表达式1,初始化循环变量;接下来就是执⾏表达式2判断部分,表达式2的结果如果==0,则循环结束;表达式2的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表达式3 ,调整循环变量,然后再去 表达式2的地⽅执⾏判断,表达式2的结果是否为0,决定循环是否继续。
整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。

2)例题

例题一

还是上面while的例子,在屏幕上打印1-10的值

#include <stdio.h>
int main()
{
	int i = 0;
	for(i=1;i<=10;i++)
	{
		printf("%d ", i);
	}
	return 0;
}

例题二

求1-n项的和

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

3.do-while循环

1)语法结构

do {

	循环体;

} while (表达式);

do while循环中先执⾏语句,执⾏完语句后再去执⾏判断表达式,若判断表达式的结果是!=0,则继续循环,执⾏循环语句;若判断表达式的结果==0,则循环结束。所以在 do while 语句中循环体是⾄少执⾏⼀次的。

2)例题

例题一

do while 打印数字1-10

#include <stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i < =10);
	return 0;
}

4.扩展continue,break

扩展 continue 语句

continue 的作用是跳过本次循环 continue 后面的代码,继续执行下一次循环

例题

do while打印数字1-10

#include<stdio.h>
int main()
{
	int i = 1;
	do
	{
		printf("%d\n", i);
		continue;//跳出此次循环,i一直等于1,死循环
        i++;
	} 
	while (i<=10);
	return 0;
}

同理,for循环和while循环中continue的用法基本一样

扩展 break 语句

break 的作用是永久的终止循环,只要 break 被执行,直接跳出循环,执行之后的语句

例题

for循环打印1-10

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;//跳出循环,直接结束
		printf("%d ", i);//输出1 2 3 4
	}
	return 0;
}

同理,while循环和do while循环中break的用法基本一样

以上就是今天的分享,我自己对分支和循环的一些理解,希望写出来对大家有帮助,如果可以的话能给我来个三连嘛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

根本学不会_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值