c语言分支和循环语句浅谈

1.c语言的条件判断语句,也成为分支语句,例如:if语句,switch语句;

循环语句则有:for语句,while语句,do while语句;

2.分支语句

(1)if语句:

结构如下:

if(表达式)
{
   语句;
}
if(表达式)
{
   语句;
}
else
{
   语句;
}
if(表达式)
{
   语句;
}
else if(表达式)
{
   语句;
}
else
{
   语句;
}

具体体现如下: 

int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("未成年");
    }
    return 0;
}
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("未成年\n");
    }
    else
    {
        printf("成年\n");
    }
    return 0;
}
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age <= 18)
    {
        printf("少年\n");
    }
    else if (age <= 30)
    {
        printf("青年\n");
    }
    else if (age <= 50)
    {
        printf("壮年\n");
    }
    else if (age <= 80)
    {
        printf("老年\n");
    }
    else
    {
        printf("长命百岁\n");
    }
    return 0;
}

但是else的配给机制是与它最近的if匹配,所以我们在书写时务必注意格式,将else与最近的if放在同一水平线处,避免混淆;

(2)switch语句

switch语言也是一种分支语言,常用于多分支情况:

int main()
{
	int num = 0;
	scanf("%d", &num);//switch语句里必须是整形
	switch (num % 3)
	{
	case 0:
		printf("余数是0\n");
	case 1:
		printf("余数是1\n");
	case 2:
		printf("余数是2\n");
	}
	return 0;
}

一味的使用if...else if...else if... 语句太过于繁琐,所以使用switch语句会方便许多。

例如下图格式:


switch (表达式)
	{
	case 0:
       (语句);
	case 1:
		(语句);
	case 2:
		(语句);
	}

注意:switch语句中,case整形表达式后接冒号:,语句后接分号;

(2.1) break的使用

int main()
{
	int num = 0;
	scanf("%d", &num);//switch语句里必须是整形
	switch (num % 3)
	{
	case 0:
		printf("余数是0\n");
		break;
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	}
	return 0;
}

有时只想输出那一个值,却不料同时把代码后边的值一起输出了,这时候使用break,代码运行到break后直接跳出循环,就不会在运行后面的代码了!

switch语句的简便操作:有时几个case语句后所衔接的内容相同,例如:

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");
	case 7:
		printf("休息日\n");
		break;

		return 0;
	}
}

这样的操作着实繁琐,所以我们可以换一种方法使用它:

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

这种方法大大节约了时间,但是只有当case语句后面的内容相同重复时才最好使用。

(2.2)default的使用

如果表达的值与所有case语句的内容都不符合,此时程序并不会被终止,也不会报错,因为这在C语言中并不被认为是一个错误。但是,倘若你不想忽略不匹配case语句的表达式的值时,你可以在语句列表中加入一条dafault子句。

default:可以放在任意一个case语句可以出现的位置。

switch语句中所有case语句的内容都无法输出时,default语句便会执行。故,每条switch语句都只能出现一条default语句。

如下:

int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age <= 18)
    {
        printf("少年\n");
    }
    else if (age <= 30)
    {
        printf("青年\n");
    }
    else if (age <= 50)
    {
        printf("壮年\n");
    }
    else if (age <= 80)
    {
        printf("老年\n");
    }
    else
    {
        printf("长命百岁\n");
    }
    return 0;
}

在每条switch语句中加入default语句是一个好习惯,我们甚至可以在后边加上一个break。

3.循环语句

(3.1)while循环

我们已经学会了if语句,但如果条件不满足,if语句只会执行一次。但生活中我们可能需要重复的去完成某件事,此时使用while语句可以实现循环!

while语法结构

while(表达式)
{
	循环语句;
}

比如去实现在屏幕上打印1~10的数字:

int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

(3.1.1)while语句中continuebreak的使用​​​​​​​

continue介绍:

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;//跳过本次循环后面的代码,回到开头进入循环的位置
		printf("%d ", i);
		i++;
	}
	return 0;
}

语句运行到continue时会直接跳过后边语句的运行,重新跳转到while语句的判断部分,进行下一次循环的判断

break介绍:

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;
	}
	return 0;
}

代码运行到break时会直接停止后期所有的循环,直接跳出循环,来到return 0 处。

故break在while语句中是用于永久终止循环的。

scanf实现多组输入:

int main()
{
	int i = 0;
	while (scanf("%d", &i) != EOF)
	{
		循环语句;
	}
}

这样可以实现多组输入,想结束输入按CTRL+z结束。

(3.2) for循环

已经有了一个while循环了,为什么我们还有一个for循环呢?

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

表达式1:为初始化部分,用来初始化循环标量。

表达式2:为条件判断部分,用来判断循环时的终止。

表达式3:为调整部分,用于循环条件的调整。

使用for循环在屏幕上打印1~10的数字:

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

相比while语句:

int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

可以看出while循环中依然存在循环的三个必须条件,但是由于while语句的风格问题使得这三个部分分隔较远,如果后续要修改更正就不够便利。而for循环的三个表达式集中在一起,方便查找,故for循环的使用频率最高。

(3.2.1)for循环中break和continue的使用

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;//直接跳出循环
		printf("%d ", i);
	}
	return 0;
}
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;//i== 5 时 重新回到for循环处的判断部分,不输出5,进行下一次循环
		printf("%d ", i);
	}
	return 0;
}

(3.3)do...while.()循环

do语句的语法:

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

do...while语句使用如下:

int main()
{
	int  i = 0;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

因为使用场景的限制,所以使用次数很少。

(3.3.1)do...while循环中的break和continue

break:

int main()
{
	int  i = 1;
	do
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

continue:

int main()
{
	int  i = 1;
	do
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i++;
	} while (i <= 10);
	return 0;
}

break直接退出循环到return 0 处;

continue则是返回重新开始循环,故一直在i==5 处反复循环但不打印。

4.goto语句

goto语句是把双刃剑,大部分情况下一般都不会使用goto语句,但某些情况下,例如:程序在某些深度嵌套的结构中,此时使用goto语句能直接终止。

​​​​​​​goto语句

int main()
{
	printf("hehe\n");
	goto end;
	printf("haha\n");
end:
	printf("跳过haha的打印,直接来到这里\n");
	return 0;
}

以上就是全部内容了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

2201_75951753

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

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

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

打赏作者

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

抵扣说明:

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

余额充值