分支和循环语句(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进行读取

分支和循环语句(1)

修改后:

#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

上一篇:第56篇-ProfileData与DataLayout


下一篇:C语言自学之路—第三天