分支和循环语句(1)

1. 控制语句

用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。

可分为以下三类:

  • 条件判断语句也叫分支语句:if语句、switch语句;
  • 循环执行语句:do while语句、while语句、for语句;
  • 转向语句:break语句、goto语句、continue语句、return语句。

2. 分支语句(选择语句)

2.1 if语句

2.1.1 单分支语句

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

	if (age >= 18)
		printf("成年\n");
	return 0; 
}

2.1.2 双分支语句

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

	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0; 
}

2.1.3 多分支语句

#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("中老年");
	else if (age >= 80 && age < 100)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0; 
}

注:if后面默认跟一条语句,如需输出多条语句,需要加{....}

2.1.4 悬空else


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

注:else的匹配:else是和它离的最近的if匹配的。所以此程序的输出不执行if...else..语句,无输出。

2.1.5 判断一个数是否是奇数

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
		//if(n%2!=0)
	{
		printf("奇数\n");
	}
	return 0;
}

2.1.6 输出1~100之间的奇数

//方法一
#include <stdio.h>
int main()
{
	int i= 1;
	while (i <= 100)
	{
		printf("%d ", i);
		i=i+2;
	}
	return 0;
}
//方法二
#include <stdio.h>
int main()
{
	int i= 1;
	while (i <= 100)
	{
		//对i进行判断,是奇数才打印
		if(i%2==1)
		printf("%d ", i);
		i++;
	}
	return 0;
}

2.2 switch语句

switch语句也是一种分支语句,常常用于多分支的情况

#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;
	}
	return 0;
}
有时候我们的需求变了:
  输入 1-5 ,输出的是 “weekday”;
  输入 6-7 ,输出 “weekend”
#include <stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	default:
		printf("输入错误\n");
		break;
	}
	return 0;
}
注:default: 写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

3.循环语句

3.1 while循环

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

3.1.1 while语句中的breakcontinue

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;
	}
	return 0;
}
//只打印了1 2 3 4 
总结:
break while 循环中的作用:
其实在循环中只要遇到 break ,就停止后期的所有的循环,直接终止循环。
所以: while 中的 break 是用于 永久 终止循环的。
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i++;
	}
	return 0;
}
//打印1 2 3 4后死循环
总结:
continue while 循环中的作用就是:
continue 是用于终止本次循环的,也就是本次循环中 continue 后边的代码不会再执行,
而是直接跳转到 while 语句的判断部分。进行下一次循环的入口判断。
例子1:
#include <stdio.h>
int main()
{
	//getchar获取一个字符,putchar打印一个字符
	int ch = getchar();
	putchar(ch);
	return 0;
}
#include <stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//123456

	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if ('y' == ch)
		printf("确认成功\n");
	else
		printf("确认失败\n");
	return 0;
}
//代码报错愿意:scanf读取123456之后,将\n 默认放入缓冲区中,getchar进行读取

修改后:

#include <stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//123456

	//方法1
	//getchar()处理\n

	//方法2
	int tmp = 0;
	while ((tmp = getchar()) != '\n')
	{
		;
	}

	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if ('y' == ch)
		printf("确认成功\n");
	else
		printf("确认失败\n");
	return 0;
}

 例子2:

//只打印数字字符,跳过其他字符的
#include <stdio.h>
int main()
{
	int ch = '\0';
	while ((ch = getchar() )!= EOF)
	{
		if (ch < '0' || ch>'9')
			continue;
		putchar(ch);
	}
	return 0;
}

3.2 for循环

3.2.1 语法

for ( 表达式 1 ; 表达式 2 ; 表达式 3 )
循环语句 ;
表达式 1
表达式 1 初始化部分 ,用于初始化循环变量的。
表达式 2
表达式 2 条件判断部分 ,用于判断循环时候终止。
表达式 3
表达式 3 调整部分 ,用于循环条件的调整。
//打印1~10
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

3.2.2  breakcontinuefor循环中

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;

		printf("%d ", i);
	}
	return 0;
}
//打印1 2 3 4 
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue;

		printf("%d ", i);
	}
	return 0;
}
//打印1 2 3 4 6 7 8 9 10

3.2.3 例子

//请问循环要循环多少次?
#include <stdio.h>
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)
        k++;
 return 0; }

运行结果:for循环里面的k=0是赋值,不是判断。所以该循环不进行,循环0次。改成k==0,循环进行一次。

3.3 do...while()循环

3.3.1 do语句的语法:

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

3.3.2 执行

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

	return 0;
}
//1 2 3 4 5 6 7 8 9 10

3.3.3 do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

3.3.4 do while循环中的breakcontinue

#include <stdio.h>
int main()
{
	//1~10
	int i = 1;
	do
	{
		if (i == 5)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}
//1 2 3 4 
#include <stdio.h>
int main()
{
	//1~10
	int i = 1;
	do
	{
		if (i == 5)
			continue;
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}
//1 2 3 4 死循环
#include <stdio.h>
int main()
{
	//1~10
	int i = 1;
	do
	{
		
		printf("%d ", i);
		i++;

		if (i == 5)
			continue;
	} while (i <= 10);

	return 0;
}
//1 2 3 4 5 6 7 8 9 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值