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