C语言基本流程控制

语句的学习在于多练习,大家直接在代码中体会。

一、顺序语句

正常情况下 C语言的代码是从上往下一行一行执行 比如以下代码

int main()
{
	int a = 0;
	printf("hello\n");
	printf("i am c");
	a = 1;
	printf("a= %d\n",a);
	return 0;
}
执行完第一行,再第二行,直到最后一行。

二、分支语句

2.1 if语句 

模型1 : 如果if() 条件成立 则执行紧跟着{}里面的内容,注意语句2,跟if没关系,都会执行。


if(条件)
{    
//语句1
}
语句2

---------------------------------------------------------------------------------------------------------------
int main()
{

			int a = xx;
			if(a == 1)
			{
				printf("a==1");				
			}
			printf("test\n");	
		
}
int main()
{

		<span style="white-space:pre">	</span>// 条件()里判断的是0 和 非0

			int a = xx;
			if(1)//if(2)//if(0)//if(-1)
			{
				printf("a\n");				
			}
			printf("test\n");
	
}



模型2:如果if()条件成立,则执行紧跟着{}里面的内容,否则执行else{}里面的内容

if(条件)

{

语句1

}

else

{

语句2 

}

语句3 

---------------------------------------------------------------------------------------------------------------

#include <stdio.h>
int main()
{
/*
			if 和else是互斥的。
*/
			int a = xx;
			if(a == 1)
			{
				printf("a ==1");				
			}
			else
			{
				printf("a!=1");
			}
			printf("test\n");
	
}


注意跟模型1区别,这里语句1和语句2是互斥的,要么语句1 要么语句2 ,语句3跟if没关系


模型3-1 : 每个条件之间是互斥的,只有上面所有的条件不成立,才会判断下面的条件, 所有的语句属于同一个if 范畴。

if(条件1)

{

语句1

}

else if(条件2)

{

语句2

}

else if(条件3)

{

语句3

}

条件4,条件5.。。

else

{

       语句6

}

---------------------------------------------------------------------------------------------------------------

</pre><p><pre name="code" class="cpp">#include <stdio.h>
int main()
{
			/*
				if与else if是互斥关系,从上往下,
				有一个条件成立则不判断其他if 
			*/		
			int a = xx;
			if(a <10)
			{
					printf("a<10");
			}
			else if(a<5)
			{
					printf("a<5");
			}
			else if(a<3)
			{
					printf("a<3");
			}
			else
			{
					printf("else");
			}
			printf("test\n");
	
}


模型3-2:注意下面这个模型根3-1区别,下面是3个if语句,相互没有关系.

if(条件1)

{

语句1

}

if(条件2)

{

语句2

}

 if(条件3)

{

语句3

}

-------------------------------------------------------------------------------------

#include <stdio.h>
int main()
{

			//与模型3-1比较
			int a = 1;
			if(a <10)
			{
					printf("a<10");
			}
			if(a<5)
			{
					printf("a<5");
			}
			if(a<3)
			{
					printf("a<3");
			}
			else
			{
					printf("else");
			}
			printf("test\n");
	
}


模型4 语句嵌套,在两个大括号之间可以是任何其他逻辑,可以是if  for  while switch等语句,大括号里面的语句也是按照C语言语句的基本逻辑执行。

if(条件1)

{

if(条件2)

{

}

}

else

{


}

#include <stdio.h>
int main()
{

			int a = xx;
			if(a <10)
			{
					printf("a<10");
					if(a<5)
					{
						 printf("a<5");	
					}
					else
					{
						 printf("a<10&&a>=5")	
					}
			}
			else
			{
				 	printf("a>=10");
				 	if(a>20)
				 	{
				 			printf("a>20");	 		
				 	}
				 	else
				 	{
				 			printf("a<=20 &&a>=10");	
				 	}
				
			}
			printf("test\n");
	
}

模型5:注意,初学者在前期养成良好习惯,把大括号都写上,不写大括号,if只负责管理一行语句

以下语句是等效的

if(a == 1)
	printf("a ==1 \n");
else
	printf("a!=1\n");
	
if(a == 1)
{
	printf("a ==1 \n");
}
else
{
	printf("a!=1\n");
}

但是,如果if下面有2行,就有可能会出现理解上的错误

if(a == 1)
	printf("a ==1 \n");
	printf("a!=1\n"); //这一句跟if没关系
	

2.2 switch语句

switch基本逻辑:switch会判断(表达式)的值,如果跟case后面的值相等,则从这条case 的冒号开始执行,直到遇到break,或者到最后一句结束。

注意 swtic ()表达式的值一定是能够 用 == 判断的值,比如double 就不能用到switch语句里。

swtich(表达式)

{

case 值1:

语句1;

case 值2:

语句2:;

default:

语句3;

}

#include <stdio.h>
int main()
{
	//比较break的作用
	int a = 1;
	switch(a)
	{
		case 1:
			printf("1\n");
		case 2:
			printf("2\n");
		case 3:
			printf("3\n");
		default:
			printf("other\n");
	}	
	a = 1;
	switch(a)
	{
		case 1:
			printf("1\n");
			break;
		case 2:
			printf("2\n");
			break;
		case 3:
			printf("3\n");
			break;
		default:
			printf("other\n");
	}	
	
	switch(a+1) //表达式a+1的值是int 类型
	{
		case 1:
			printf("1\n");
			break;
		case 2:
			printf("2\n");
			break;
		case 3:
			printf("3\n");
			break;
		default:
			printf("other\n");
	}	
	
}



三、循环语句

for语句:

该语句会在进入for的时候,执行一次第一个分号前的语句,然后判断第一个分号和第二个分号之间的表达式是否为真,如果为真则执行大括号里的内容,执行完大括号的内容再执行第二个分号后面的语句,然后在后面重复以下流程:判断表示式2的值,如果为真执行大括号里的内容,然后表达式3,如果为假,则循环结束。

for(表达式1; 表达式2,;表达式3)
{
语句
}
直接看代码比较:

#include <stdio.h>
int main()
{
	
	int i = 0;
	for(;i<10;i++)
	{
		printf("%d\n",i);	
	}
	
	for(i = 0;i<10;i++)
	{
		printf("%d\n",i);	
	}	
	
	for(i = 0;i<10;)
	{
		printf("%d\n",i);
		i++;//如果没有i++会出现什么问题.	
	}
	
		
}

while语句

判断()里面的条件是否成立,成立则循环执行{}语句,否则跳出循环。
while(条件)
{
语句
}

#include <stdio.h>
int main()
{
	/*
	注意循环变量的赋初始值以及递增
	*/
	int i = 0;
	while(i<10)
	{
		printf("%d\n",i);
		i++;	//如果没有这一句会出现什么状况。
	}
	while(i<10)
	{
			printf("hello");//hello能打印出来吗,为什么?
			i++;	
	}
	
	
}


do..while语句

先执行{}里的语句,再判断while()条件,成立则继续{},不成立则退出。
do{
语句
}while(条件);

#include <stdio.h>
int main()
{
	/*
	do while 与 while的 区别.
	*/
	int i = 0;
	do{
 		printf("%d\n",i);
 		i++;
 	
	}while(i<10);
	
		

}

循环嵌套

#include <stdio.h>
int main()
{
	/*
	各种语句是可以相互嵌套的
	*/
	 for(i = 0;i<10;i++)
	 {
			for(j = 0;j<10;j++)	//注意这里j的变化,每次重新进入该for,j = 0会执行
			{
					printf("i=%d,j=%d",i,j);
			}

	 }

	 for(i = 0;i<10;i++)
	 {
			j = 0;
			while(j<10)	
			{
					printf("i=%d,j=%d",i,j);
					j++;
			}
	 }
		
	 i = 0;	
	 while(i<10)
	 {
			for(j = 0;j<10;j++)	
			{
					printf("i=%d,j=%d",i,j);		
			}
			i++;
	 }
}


break,continue

#include <stdio.h>
int main()
{
	/*
	比较continue 与 break的区别
	continue,跳出本次循环。
	break ,跳出本层循环。
	*/
	int i = 0;
	for(i=0;i<10;i++)
	{
		<span style="white-space:pre">	</span>//各种语句之间是可以嵌套的。
			if(i == 5)
			{
					break;
				//	continue;
			}	
			printf("%d\n",i);
	}

}

再2层循环中更能说明break 和continue的区别

#include <stdio.h>
int main()
{
	/*
	分清本层 和 本次的区别
	*/
	 for(i = 0;i<5;i++)
	 {
			for(j = 0;j<5;j++)	
			{
					if(j == 2)
					{
						break;
						//continue;
					}
					printf("i=%d,j=%d",i,j);
			}

	 }
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章