十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
c語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,其形式主要有三種——(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)
1)
順序結(jié)構(gòu)是按照代碼的順序,從上往下從前往后依次進(jìn)行執(zhí)行的
順序結(jié)構(gòu)的特點(diǎn)——1.自上而下 2. 依次執(zhí)行 3. 沒有分支
int main()
{
printf("1\n");? ? //1
printf("2\n");? ? //2
printf("3\n");? ? //3
printf("4\n");? ? //4
printf("5\n");? ? //5
return 0;
}
一段簡(jiǎn)單的printf代碼,其程序運(yùn)行結(jié)果如下
程序按順序1、2、3、4、5依次執(zhí)行,依次分別打印出的“ ”里的語(yǔ)句。
2)選擇結(jié)構(gòu)
選擇結(jié)構(gòu)兩大類——1*、if else語(yǔ)句
—— 2*、switch -case 語(yǔ)句
a.if else語(yǔ)句
函數(shù)使用--
if(函數(shù)表達(dá)式)
{
執(zhí)行語(yǔ)句;
}
else if(函數(shù)表達(dá)式)
{
執(zhí)行語(yǔ)句;
}
else
{
執(zhí)行語(yǔ)句;
}
int main()
{
? ? int i = 10;
? ? if( i >= 10 )
? ? ? ? printf("666\n");? ? //(1)
? ? else if( i<= 0)
? ? ? ? {? ? ? ? ? ? ? ? ? ? //(2)
? ? ? ? ? ? i++;
? ? ? ? ? ? printf("%d\n",i);
? ? ? ? }
? ? else
? ? ? ? printf("7777\n");? ? //(3)
? ? if( i >= 0)
? ? ? ? printf("我愛c語(yǔ)言\n");?//(4)
? ? printf("hahahaha\n");? ? //(5)
? ? return 0;
}
注意:這一段代碼里一共有五個(gè)printf函數(shù),而且{}的布置也有不同
程序執(zhí)行結(jié)果如上,最后只打印了執(zhí)行了3條printf函數(shù),現(xiàn)在來簡(jiǎn)單講解一下該段代碼實(shí)際上在編譯器中是如何運(yùn)行的
當(dāng)程序執(zhí)行時(shí),函數(shù)從主函數(shù)進(jìn)入,為常量i分配了一個(gè)int類型的空間并賦值為10,下一步就是進(jìn)入if語(yǔ)句分支,此時(shí)i = 10 滿足(i >= 10)進(jìn)入下方的執(zhí)行語(yǔ)句,打印出“666”,下一步程序指向下一個(gè)if(不是else 后面的 if),即直接來到第四個(gè)printf的判斷條件——(i >= 0),此時(shí)i = 10 >0 滿足條件判斷進(jìn)入打印“我愛c語(yǔ)言”,由于最后一個(gè)printf函數(shù)執(zhí)行沒有條件判斷,因此無論如何,只要程序不在前面的語(yǔ)句中斷,程序都會(huì)打印出“hahahahaha\n”。
|在這里補(bǔ)充上if分支的規(guī)則
.else優(yōu)先與近的if結(jié)合
if后的語(yǔ)句只執(zhí)行一條,如果要執(zhí)行多條語(yǔ)句,需要花括號(hào){}
當(dāng)一個(gè)程序有多個(gè)if語(yǔ)句時(shí),執(zhí)行完一個(gè)if后不干涉程序進(jìn)入下一個(gè)if,只要滿足條件判斷就可以執(zhí)行語(yǔ)句
if后的else if --當(dāng)if中條件判斷滿足時(shí),不進(jìn)入與之關(guān)聯(lián)的else if 和else 即使符合條件判斷也不進(jìn)入。
b.switch case語(yǔ)句
使用方法:
switch(條件參數(shù))
{
case _:
case _:
執(zhí)行語(yǔ)句;
break;
default:
執(zhí)行語(yǔ)句;
break;
}
e.g
int day = 5;
scanf("%d",&day);
switch(day)
{
? ? case 1:
? ? case 2:
? ? case 3:
? ? case 4:
? ? case 5:
? ? ? ? printf("工作日\(chéng)n");
break;
? ? case 6:
? ? case 7:
? ? ? ? printf("周末\n");
break;
? ? default:
? ? ? ? printf("輸入錯(cuò)誤\n");
}
以上的代碼用于在用戶輸入數(shù)字1234567對(duì)應(yīng)的日期判斷每個(gè)星期中的工作日或者周末
break的用法是在循環(huán)或者switch分支中直接結(jié)束當(dāng)前結(jié)構(gòu)語(yǔ)句(循環(huán)或者分支),上面的例題中如果沒有break,那么在執(zhí)行完”工作日“打印后程序不會(huì)結(jié)束,而是進(jìn)入下一步執(zhí)行語(yǔ)句。
3)循環(huán)結(jié)構(gòu)
循環(huán)有三大類a.while 循環(huán)
b.do while 循環(huán)
c.for循環(huán)
a*) while 循環(huán)注意事項(xiàng)和使用
while (判斷條件)
{
執(zhí)行語(yǔ)句;
必須要有限制條件;
}
int i = 10;
while(i)
{
? ? printf("%d",i);
? ? i--;
}
最后程序執(zhí)行如下
代碼執(zhí)行分析:
由main函數(shù)進(jìn)入后為變量i分配一塊空間并且賦值為10
while()內(nèi)的循環(huán)判斷條件規(guī)則是:0為假,非零為真,即結(jié)果不為0時(shí)符合條件判斷就可進(jìn)入執(zhí)行語(yǔ)句
在執(zhí)行的語(yǔ)句中遵循順序結(jié)構(gòu),先printf后i自減,經(jīng)過了十次循環(huán)后i=0作為判斷條件,不進(jìn)入之后的執(zhí)行語(yǔ)句,因此執(zhí)行過程在while循環(huán)中往往比判斷少一輪。
b*) do while循環(huán)
使用:
do
{
循環(huán)體;
必須有限制條件;
}while(條件判斷);
當(dāng)程序進(jìn)入do while循環(huán)后,先進(jìn)入一次循環(huán)體,再進(jìn)行條件判斷,當(dāng)判斷結(jié)果為真時(shí),進(jìn)入下一次循環(huán),當(dāng)結(jié)果為假時(shí),退出循環(huán)結(jié)構(gòu)。
在循環(huán)體中,除了當(dāng)前的執(zhí)行語(yǔ)句之外,必須要有能限制while循環(huán)次數(shù)的語(yǔ)句來防止死循環(huán),一個(gè)循環(huán)體中可以沒有其它的執(zhí)行條件,但是必須要有限制條件;
當(dāng)循環(huán)體中程序進(jìn)行到break,則程序會(huì)直接終止在循環(huán)結(jié)構(gòu)的進(jìn)程,從而進(jìn)行下一語(yǔ)句,值得注意的是,break只能跳出一層循環(huán)/分支結(jié)構(gòu),在多組循環(huán)或者分支嵌套的情況下往往采用多個(gè)break來結(jié)束程序在循環(huán)中的進(jìn)程。
當(dāng)循環(huán)體中的程序進(jìn)行到continue,程序會(huì)直接終止該次循環(huán)結(jié)構(gòu)的進(jìn)程,與break不同的是:continue執(zhí)行后程序下一步執(zhí)行的是下一次的循環(huán)體語(yǔ)句,而不是循環(huán)結(jié)構(gòu)后的程序。
c*) for循環(huán)
使用:
for( 初始條件 ;限制條件 ;控制循環(huán)變量 )
{
循環(huán)體;
}
e.g打印出0 - 9的十個(gè)數(shù)字
for(i = 0 ; i< 10 ; i++ )
{
? ? printf("%d ",i);
}
實(shí)際上如果底層邏輯沒有太大區(qū)別的時(shí)候,for循環(huán)和while循環(huán)可以相互轉(zhuǎn)換上面的for循環(huán)還可以這樣寫
i = 0;
while(i< 10)
{
? ? printf("%d ",i);
? ? i++;
}
兩者執(zhí)行的效果是完全相同的,只是在一些特定的場(chǎng)合,人們更傾向于特定的寫法,像是while常被用于做未知循環(huán)次數(shù)的循環(huán),for循環(huán)更多被應(yīng)用于已知循環(huán)次數(shù)的循環(huán)。
值得注意的是,不管是那種循環(huán),其限制循環(huán)次數(shù)的條件是一個(gè)合格的循環(huán)所必備的,而且循環(huán)限制條件可以不僅限于一條,在有需求的環(huán)境下,人們可以創(chuàng)建多個(gè)變量來控制循環(huán)次數(shù)。
int i = 0,j = 10;
for( ;i >3 && j % 2 != 0;i++,j++)
{
? ? ;
}
如上,i 和 j都是控制循環(huán)次數(shù)的變量;
在for循環(huán)的設(shè)計(jì)中,括號(hào)中的條件可以省略不寫,但必要在循環(huán)體中體現(xiàn),雖然這樣的代碼c語(yǔ)言支持讀寫,但為了避免程序出現(xiàn)錯(cuò)誤和程序難以被看懂,應(yīng)該盡量減少這樣的寫法。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧