局域網(wǎng)做網(wǎng)站福州seo排名優(yōu)化
? ? ? ?C語言程序的執(zhí)行順序是從前到后依次序執(zhí)行的。如果想要控制程序執(zhí)行的流程,就必須使用
流程控制的語法結(jié)構(gòu),分為條件執(zhí)行和循環(huán)執(zhí)行。
1、if語句
? ? ? ? if 語句在前面的舉例中曾經(jīng)出現(xiàn)過,這里做詳細(xì)介紹。該語句用于條件判斷,滿足條件時,就執(zhí)行指定的語句。
? ? ? ? 格式一、 if (條件表達(dá)式) 要執(zhí)行語句 //含義:如果"條件表達(dá)式 "為"真" 則執(zhí)行 "要執(zhí)行的語句",否則就跳過去。例如:
if(x==5) printf("x的值是5"); //運行結(jié)果:只有當(dāng)x等于5時,才顯示"x的值是5"
? ? ?? 如果 "要執(zhí)行的語句" 有兩條及以上,就需要把 "要執(zhí)行的語句" 用大括號括起來,一般另起一行更清楚。格式如下:
? ? ? ? ? ? if ( 條件表達(dá)式 )
? ? ? ? ? ? {
? ? ? ? ? ? ? ?語句1;
? ? ? ? ? ? ? ?......
? ? ? ? ? ? ? ?語句n;//要執(zhí)行語句后邊必須有分號";"
? ? ? ? ? ? } //大括號后邊不用加分號(";")
? ? ?實際上,即使只有一條要執(zhí)行的語句加上大括號后在邏輯上也顯得更清楚。
? ? ?格式二、if (條件表達(dá)式)
? ? ? ? ? ? {
? ? ? ? ? ? ? ?語句1;
? ? ? ? ? ? ? ?.....
? ? ? ? ? ? ? ?語句n;
? ? ? ? ? ? } else //這里有一個else,在其后執(zhí)行"條件表達(dá)式"為"假"的語句
? ? ? ? ? ? {
? ? ? ? ? ? ? ?語句1;
? ? ? ? ? ? ? ?.....
? ? ? ? ? ? ? ?語句n;
? ? ? ? ? ? }
? ?另外,else 后邊還可以與另if語句連用,形成嵌套結(jié)構(gòu),格式如下:
? ? if (條件表達(dá)式1)
? ? ? {語句或語句塊1;}
? ? ? ? ?else if (條件表達(dá)式2)
? ? ? ? ? ?{語句或語句塊2;}
? ? ? ? ? ? ......
? ? ? ? ? else if(條件表達(dá)式n-1)
? ? ? ? ? ? {語句或語句塊n-1;}
? ? ? ? ? ? else
? ? ? ? ? ? ? ?{語句或語句塊n;} //收底語句
? ? ? 順帶說一句,編輯代碼時,根據(jù)執(zhí)行的層次進(jìn)行適當(dāng)縮進(jìn),可以在看代碼時邏輯更清楚。
? ? ? 據(jù)說多層嵌套的if...else...if結(jié)構(gòu)不是好的結(jié)構(gòu)形式,容易出錯,盡量不用。
2、三目運算符 "?? :"
? ? ?三目運算符可以看做是if...else結(jié)構(gòu)的簡寫。
? ? ?格式:(條件表達(dá)式) ? (表達(dá)式1或值1) : (表達(dá)式2或值2) // 括號非必須?
? ? ?條件表達(dá)式為真返 (表達(dá)式1或值1),否則 (返回表達(dá)式2或值2)
?3、switch語句
? ? ?switch語句可以說是if...else語句的變種,用于判斷有多個結(jié)果的情況??雌饋肀萯f...else
?語句更清楚。格式如下:
? ? ?switch(有返回值的表達(dá)式或變量)
? ? ?{
? ? ? ? ? case 返回值1: 語句1
? ? ? ? ? ? ? ? ? ? break; //為了執(zhí)行完相應(yīng)語句后跳出switch結(jié)構(gòu),在下一case語句前
? ? ? ? ? ? ? ? ? ? ? ? ? ?//加一個break以結(jié)束switch
? ? ? ? ?case 返回值n: 語句n
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ?.......
? ? ? ? ?default: 兜底語句; //兜底語句后不用加break,后邊沒有要執(zhí)行的語句了
? ? }
? switch?這種結(jié)構(gòu),多用于編寫菜單代碼。
?4、用上面介紹的流程控制語句編寫一個小程序,用以加深對流程控制的理解。
#include<stdio.h>
int main(void)
{
//1、if語句的使用int a = 100;if (a > 50) printf("a的值大于50\n"); //條件后只有一個語句時可省去{}if (a == 100) //if..else...結(jié)構(gòu){printf("a的值等于100\n"); //條件成立執(zhí)行此語句}else{printf("a的值不等于100\n"); //條件不成立執(zhí)行此語句}
//2、三目運算符的使用int x = 1;a=500;int y;y = (x == 1) ? a : 50; //條件成立返回500,不成立返回50printf("y的值是%i\n", y);
//3、swich語句的使用int choice = 4;switch (choice){case 0: printf("choice的值是0\n");case 1: printf("choice的值是1\n");case 2: printf("choice的值是2\n");default:printf("choice的值不是1、2、3\n");}getchar();return 0;
}
//運行結(jié)果:
/*
a的值大于50
a的值等于100
y的值是500
choice的值不是1、2、3
*/