語句的學習在於多練習,大家直接在代碼中體會。
一、順序語句
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沒關係,都會執行。
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,如果爲假,則循環結束。
#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語句
#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語句
#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);
}
}
}