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);
			}

	 }
}









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