C语言1-分支语句(if,switch)与循环语句(while,for,do while)详解

151 阅读2分钟

1.分支语句

  • if
  • switch

2.循环语句

  • while

  • for

  • do while

1.1 if语句

1.1.1单分支

if(表达式)
   语句;
#include<stdio.h>
int main()
{
	int year = 19;
	if (year > 18)
	{
		printf("成年人");
	}

	return 0;
}

//结果:成年人

1.1.2双分支

if(表达式)
   语句1else	
   语句2
#include<stdio.h>
int main()
{
	int year = 19;
	if (year < 18)
	{
		printf("未成年人");
	}
	else
	{
		printf("成年人");
	}
	return 0;
}

//结果:成年人

1.1.3多分支

if(表达式a)
   语句1else if(表达式b)
   语句2else
   语句3;
#include<stdio.h>
int main()
{
	int year = 19;
	if (year < 18)
	{
		printf("未成年人");
	}
	else if(18<year<28)
	{
		printf("青少年");
	}
	else
	{
		printf("中年人");
	}

	return 0;
}

//结果:青少年

else

1.不存在{if()语句;},else与最近的一个if匹配

2.存在{if()语句;},else与程序内含if语句的第一个语句匹配

#include <stdio.h>
int main()
{
	int a = 0;
	scanf_s("%d", &a);
	if (a > 5)
		if (a < 10)
			printf("111");
		else
			printf("222");

	return 0;
}

//如果输入5,第一个if成立-->第二个if成立-->输出111
//如果输入50,第一个if成立-->第二个if不成立-->执行else(与第二个if匹配)-->输出222

#include <stdio.h>
int main()
{
	int a = 0;
	scanf_s("%d", &a);
	if (a > 5)
	{
		if (a < 10)
			printf("111");
	}
	else
		printf("222");

	return 0;
}

//如果输入6,第一个if成立-->第二个if成立-->输出111
//如果输入20,第一个if成立-->第二个if不成立-->无输出内容(第二个if内部无else匹配)
//如果输出1,第一个if不成立-->执行else(与第一个if匹配)-->输出222

1.2 switch语句

 switch(表达式)

{
case 1:
  语句1case 2:
  语句2case 3:
  语句3default:
  语句4;

}

表达式的结果需要是整形1.2.3...;
#include<stdio.h>
int main()
{
	int num = 0;
	scanf_s("%d", &num);
	switch (num)
	{
	case 1:
		printf("1");
		break;
	case 2:
		printf("2");
		break;
	default:
		printf("其他");
		break;
	}

	return 0;
}

//输入1-->输出1
//输入2-->输出2
//输入3-->输出其他

break

每条语句后需要break;跳出switch语句,否则会继续把程序后面的case(无需再次判断)的内容全部执行一遍;

#include<stdio.h>
int main()
{
	int num = 0;
	scanf_s("%d", &num);
	switch (num)
	{
	case 1:
		printf("1");
	case 2:
		printf("2");
	default:
		printf("其他");
	}

	return 0;
}

//输入1-->打印12其他

2.1while循环

while(表达式)
{
语句;
}
#include<stdio.h>
int main()
{
	int num=0;
	scanf_s("%d", &num);
	while (num<=10)
	{
		printf("111");
		break;
	}

	return 0;
}

//输入1-->输出111
//如果缺失break;将会一直打印111

2.2for循环

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

//表达式1填变量初始值
//表达式2填判断语句
//表达式3填执行后表达式的变化
//注意:表达式1,2,3均不写,则循环一直执行
#include<stdio.h>

int main()
{
	int i=0;
	for (i = 0; i < 5; i++)
	{
		printf("%d\n", i);
	}


	return 0;
}

//结果:01234

continue

continue 用来跳过本次循环剩下尚未被执行的语句,立刻进行下一次循环条件的判断

#include<stdio.h>

int main()
{
	int i=0;
	for (i = 0; i < 5; i++)
	{
	   if3==i)
	   {
	   continue;
	   }
		printf("%d\n", i);
	}

	return 0;
}

//结果:0124

:red_circle:break一般用于switch语句和循环语句,用于跳出循环,执行循环以外的第一条语句

:red_circle:contine一般用于循环语句,用于跳出本次循环剩下的内容,继续执行下一次循环的判断条件

2.3do while

do
{
  语句;

}
while(表达式);


//while不同的是,do while是先执行一次循环语句,然后再来判断是否继续执行下一次循环
int main()
{
	int i = 0;
	do
	{
		printf("%d", i);
		i++;
	} while (i<5);

	return 0;
}

//结果:01234

跳转 c语言-分支语句和循环语句练习