2. 流程控制语句简述(if/for/while/goto)

发布于:2022-12-18 ⋅ 阅读:(391) ⋅ 点赞:(0)

目录

1、顺序结构

2、选择结构

2.1 if 语句

2.2 switch 语句

3、循环结构


C语言流程控制语句有三种结构:顺序结构、选择结构、循环结构

1、顺序结构

函数执行的入口:从main函数开始,自上而下,依次执行每一条语句

#include<stdio.h>
int main()
{
	int m[10],a,b,c,d,e;
	a=sizeof(int);
	b=sizeof(m);
	c=sizeof(m[0]);
	d=sizeof(m)/sizeof(int);
	e=sizeof(m)/sizeof(m[0]);
	printf("数据类型大小a=%d\n",a);
	printf("数组的大小b=%d\n",b);
	printf("数组元素数据类型大小c=%d\n",c);
	printf("数组长度d=%d\n",d);
	printf("数组长度e=%d\n",e);
	return 0;
}
//数据类型大小a=4
//数组的大小b=40
//数组元素数据类型大小c=4
//数组长度d=10
//数组长度e=10

2、选择结构

 满足某些条件,执行相应的语句

2.1 if 语句

①单分支 if

if(条件语句)

{

        语句1;

}

解释:先对条件语句进行判断,判断的结果:非0 即1;若条件满足,则执行语句1,若条件不满足,则执行 if 语句外的程序。

#include<stdio.h>
int main()
{
	int num;
	printf("请输入一个整数:\n");
	scanf("%d",&num);
	if(num<0)
	{
		printf("负数!\n");
	}
	printf("%d\n"num+1);
	return 0;
}//当输入的数值大于零,条件不满足,执行if语句外的程序,输出num+1的值;
 //当输入的数值小于零输出负数!和num+1的值。

②双分支if

if(条件语句)

{

        语句1;

}

else

{

        语句2;

}

解释:先对条件语句进行判断,判断的结果如果为真(即条件满足),则执行语句1,否则执行语句2;

#include<stdio.h>
int main()
{
	int num;
	printf("请输入一个整数:\n");
	scanf("%d",&num);
	if(num<0)
	{
		printf("负整数!\n");
	}
	else
	{
		printf("正整数!\n");
	}
	return 0;
}//当输入的数值小于零时,输出负整数!;当输入的数值大于零时,输出正整数!

③多分支if

if(条件语句1)

{

        语句1;

}

else if(条件语句2)

{

        语句2;

}

……

else

{

        语句n;

}

解释:先对条件语句1进行判断,判断的结果如果为真,执行语句1,然后对条件语句2进行判断,如果满足条件,则执行语句2……,(若均不满足,执行语句n);

#include<stdio.h>
int main()
{
	int m;
	printf("请输入一个整数:\n");
	scanf("%d",&m);
	if(m<0)
	{
		printf("y=%d\n",m+1);//若输入的m值为-1,输出0
	}
	else if(m>=0 && m<5)
	{
		printf("y=%d\n",m+1);//若输入的m值为2,输出3
	}
	else
	{
		printf("y=%d\n",m);//若输入的m值为7,输出7
	}
	return 0;
}

2.2 switch 语句

switch(表达式)     //表达式的值只能是整型或者字符型,一定不能为浮点型

{

case result1:语句1;break;

case result2:语句2;

case result3:语句3;break;

……

default:语句;

}

解释:switch先判断表达式的值,如果表达式的结果与result1完全一致,执行语句1;……最后如果都不满足,则执行 default 后面的语句;

break不可以省略!表示结束整个switch;(如果switch语句中没有一个break,不是语法错误,它会按顺序向下执行,直至遇到 } 结束整个switch语句)。

//0-59:不及格;60-69:及格;70-79:中等;80-89:良好;90-100:优秀; 
#include<stdio.h>
int main()
{
	int score;
	printf("请输入一个整数成绩:\n");
	scanf("%d",&score);
	switch(score/10)
	{
		case 10:      //如果成绩为100,因为没有遇到break,所以会继续执行case 9语句,输出优秀。
		case 9:printf("优秀\n");break;
		case 8:printf("良好\n");break;
		case 7:printf("中等\n");break;
		case 6:printf("及格\n");break;
		default:printf("不及格\n");break;
	}
	return 0;
}

3、循环结构

 满足一些条件,执行循环体

①for 循环语句

for(条件的初始值;条件判断;条件的改变)

{

        循环体;

}

#include<stdio.h>
int main()
{
	int i;
	for(i=1;i<5;i++)
	{
		printf("i=%d\n",i);//输出i=1,i=2,i=3,i=4
	}
	return 0;
}
/*************************
第一步:条件的初始值(i=1)           第五步:条件判断(2<3)满足条件
第二步:条件判断(1<3)满足条件       第六步:执行循环体(打印i=2)
第三步:执行循环体(打印i=1)         第七步:条件的改变(i=3)
第四步:条件的改变(i=2)
                                     ……

                                    条件不满足(5<5)  结束!
*************************/

循环可以嵌套:

                        外部循环执行一次,内部循环执行一遍!

                        本质:内层循环作为外层循环的循环体!

②while 循环语句

条件的起始值;   //需自己给初值

whlie(条件判断)

{

        循环体;

        条件的改变;

}

解释:先进行条件判断,若条件满足,则执行循环体,若条件不满足,则循环体不执行。

#include<stdio.h>
int main()
{
	int i=1;
	while(i<5)
	{
		printf("i=%d\n",i);//输出i=1,i=2,i=3,i=4
		i++;
	}
	return 0;
}
/*************************
第一步:条件的初始值(i=1)           第五步:条件判断(2<3)满足条件
第二步:条件判断(1<3)满足条件       第六步:执行循环体(打印i=2)
第三步:执行循环体(打印i=1)         第七步:条件的改变(i=3)
第四步:条件的改变(i=2)
                                     ……

                                    条件不满足(5<5)  结束!
*************************/

③do.......while 循环语句

条件的起始值;//需主动给初值

do

{

        循环体;

        条件的改变;

}while(条件判断);

解释:即使do......while条件不满足,也要至少执行一次循环体

while:可以一次都不执行;       do...while:至少执行一次

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

补充:三种死循环------for(;1;)--------for(;;;)---------while(1)

控制语句:break;countinue,return,goto

break:用在switch中,表示结束switch语句;用在循环语句中,表示结束本层循环

continue:用在循环语句中,表示结束本次循环,continue下面的内容不再执行

return:结束整个函数

goto:跳转(打乱原本程序执行的顺序),执行到goto 标识符的时候,代码会回到定义标识符的位置;

#include<stdio.h>
int main()
{
	int m;
loop:	                        //goto标识符
	printf("请输入一个整数:\n");
	scanf("%d",&m);
	if(m<0)
	{
		printf("y=%d\n",m+1);
	}
	else
	{
		printf("y=%d\n",m);
	}
	goto loop;
	return 0;
}
//输入一个m的值后,随即输出一个y值,程序运行到第十五行goto loop语句后跳转到第五行loop语句,
//然后请求再次输入一个数值,无限循环。


网站公告

今日签到

点亮在社区的每一天
去签到