二級(jí)C語言考試輔導(dǎo)教程第三章:C語言程序設(shè)計(jì)初步[7]

字號(hào):

轉(zhuǎn)移語句
     程序中的語句通??偸前错樞蚍较颍?或按語句功能所定義的方向執(zhí)行的。如果需要改變程序的正常流向, 可以使用本小節(jié)介紹的轉(zhuǎn)移語句。在C語言中提供了4種轉(zhuǎn)移語句:
     goto,break, Continue和return。
     其中的return語句只能出現(xiàn)在被調(diào)函數(shù)中, 用于返回主調(diào)函數(shù),我們將在函數(shù)一章中具體介紹。 本小節(jié)介紹前三種轉(zhuǎn)移語句。 來源:www.examda.com
     1.goto語句
     goto語句也稱為無條件轉(zhuǎn)移語句,其一般格式如下: goto 語句標(biāo)號(hào); 其中語句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫的符號(hào), 放在某一語句行的
     前面,標(biāo)號(hào)后加冒號(hào)(:)。語句標(biāo)號(hào)起標(biāo)識(shí)語句的作用,與goto 語句配合使用。
     如: label: i++;
     loop: while(x<7);
     C語言不限制程序中使用標(biāo)號(hào)的次數(shù),但各標(biāo)號(hào)不得重名。goto語句的語義是改變程序流向, 轉(zhuǎn)去執(zhí)行語句標(biāo)號(hào)所標(biāo)識(shí)的語句。
     goto語句通常與條件語句配合使用??捎脕韺?shí)現(xiàn)條件轉(zhuǎn)移, 構(gòu)成循環(huán),跳出循環(huán)體等功能。
     但是,在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。 來源:www.examda.com
     統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。
     #inClude"stdio.h"
     void main(){
     int n=0;
     printf("input a string\n");
     loop: if(getChar()!=’\n’)
     { n++;
     goto loop;
     }
     printf("%d",n);
     }
     本例用if語句和goto語句構(gòu)成循環(huán)結(jié)構(gòu)。當(dāng)輸入字符不為’\n’時(shí)即執(zhí)行n++進(jìn)行計(jì)數(shù),然后轉(zhuǎn)移至if語句循環(huán)執(zhí)行。直至輸入字符為’\n’才停止循環(huán)。
     break語句
     break語句只能用在switCh 語句或循環(huán)語句中, 其作用是跳出switCh語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于break語句的轉(zhuǎn)移方向是明確的,所以不需要語句標(biāo)號(hào)與之配合。break語句的一般形式為: break; 上面例題中分別在switCh語句和for語句中使用了break 語句作為跳轉(zhuǎn)。使用break語句可以使循環(huán)語句有多個(gè)出口,在一些場合下使編程更加靈活、方便。
     Continue語句
     Continue語句只能用在循環(huán)體中,其一般格式是:
     Continue;
     其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中Continue 語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是, 本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。
     void main(){
     int n;
     for(n=7;n<=100;n++)
     {
     if (n%7!=0)
     Continue;
     printf("%d ",n);
     }
     }
     輸出100以內(nèi)能被7整除的數(shù)。
     int n;
     for(n=7;n<=100;n++)
     {
     if (n%7!=0)
     Continue;
     printf("%d ",n);
     }