国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

實(shí)例講解

2019-11-17 05:27:18
字體:
供稿:網(wǎng)友

  既然是實(shí)例分析,當(dāng)然要有例子。好吧,先給出一個(gè)實(shí)驗(yàn)題:輸入一個(gè)百分制成績(jī),要求輸出該成績(jī)是及及格。

  很顯然,應(yīng)該使用分支結(jié)構(gòu)將及格及不及格兩種情況分別打印。給出解答程序如下:
/* 例1 */#include void main() { int n;
  這樣一個(gè)程序非常簡(jiǎn)單,但它展示了 if 分支結(jié)構(gòu)最基本的用法:

if (條件) {語句1} else {語句2}

  當(dāng)條件為真時(shí)執(zhí)行語句1,條件為假時(shí)執(zhí)行語句2。在 C 語言中,所有非 0 值表示真,0 表示假。if 結(jié)構(gòu)中的括號(hào)并不是必須的,當(dāng)你的大括號(hào)中只包含一個(gè)語句時(shí),可以將大括號(hào)省略。如例1中的 if 語句,可以改寫為:

if (a < 60) printf("不及格/n");
else printf("及格了/n");

  這樣,程序似乎簡(jiǎn)潔了不少。但假如以后需要添加語句時(shí),就可能因?yàn)橥颂砑哟罄ㄌ?hào)而造成錯(cuò)誤。所以,推薦使用不省略大括號(hào)的寫法。
  基本 if 語句還可以簡(jiǎn)化——省略 else 分支。如例1,我們還可寫成:
/* 例2 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n < 60) { printf("不及格/n"); return; } printf("及格了/n");}
  例2 描述的是:假如分值小于 60 分,打印出“不及格”,并且結(jié)束 main() 函數(shù)。假如分值不小于 60 分的情況,if 分支中的所有語句都沒有執(zhí)行,直接執(zhí)行了 printf("及格了/n"),打印出 “及格了”。

  想一想,假如在 if 語句中不使用 return; 語句強(qiáng)制結(jié)束 main() 函數(shù),會(huì)怎樣?結(jié)果是在分值小于 60 分的情況下,將“不及格”及“及格了”都打印出來了。原因是顯而易見的:因?yàn)榇蛴 凹案窳恕钡恼Z句不在 else 分支中,更不在 if 結(jié)構(gòu)中,無論什么情況都要執(zhí)行。

  if 語句可以變得更復(fù)雜——嵌套,即 if 結(jié)構(gòu)中再套 if 結(jié)構(gòu)。如上題中,我們?cè)偌由弦稽c(diǎn)點(diǎn)容錯(cuò)處理,先判定輸入的分值是否在 0 到 100 之間:
#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n >= 0 && n <= 100) { if (n < 60) { printf("不及格/n"); return; } printf("及格了/n"); } else { printf("輸入分值錯(cuò)誤!"); }}  例3 描述:假如 n 在 0 到 100 之間,再進(jìn)行及格和不及格的判定,否則打印錯(cuò)誤信息。

  這樣以來,或許就有點(diǎn)糊涂了:這個(gè) else 到底是哪一個(gè) if 的呢?每一個(gè) if 或者 else 后面,都應(yīng)該跟一個(gè)語句或者由一對(duì)大括號(hào)括起來的一組語句。而且也只能跟一個(gè)語句或者一組由大括號(hào)括起來的語句。由大括號(hào)的成對(duì)關(guān)系,便輕易判定了。

  例3 是在 if 分支中嵌套 if 結(jié)構(gòu),else 分支中同樣可以嵌套 if 結(jié)構(gòu),請(qǐng)看例4:
/* 例4 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n < 0 n > 100) { printf("輸入分值錯(cuò)誤!"); } else { if (n < 60) { printf("不及格/n"); return; } printf("及格了/n"); }}
  當(dāng)然,if 分支和 else 分支在較復(fù)雜的程序中,也可能同時(shí)嵌套 if 結(jié)構(gòu),希望讀者能夠舉一反三,這里就不多說了。

  現(xiàn)在我們把實(shí)驗(yàn)題改一改,不是要求輸入是否及格,而是要求輸入百分制成績(jī)對(duì)應(yīng)的 A-E 等級(jí)。怎么辦?對(duì),用一個(gè)再一個(gè)的嵌套——多重嵌套:
/* 例5 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n < 0 n > 100) { printf("輸入分值錯(cuò)誤!"); } else { if (n < 60) { printf("E/n"); } else { if (n < 70) { printf("D/n");
} else { if (n < 80) { printf("C/n"); } else { if (n < 90) { printf("B/n"); } else { printf("A/n"); } } } } }}  天啊!我頭暈。可不可以簡(jiǎn)潔一點(diǎn)?當(dāng)然,你知道 elseif 語句嗎?Sorry, C 語言沒有。不過,C 語言可以實(shí)現(xiàn)類似于 elseif 語句的結(jié)構(gòu),因?yàn)椤總€(gè) if 結(jié)構(gòu)都只是一個(gè)語句,else 后面不是可以接一個(gè)語句嗎?看我的:
/* 例6 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n < 0 n > 100) { printf("輸入分值錯(cuò)誤!"); } else { if (n < 60) { printf("E/n"); } else if (n < 70) { printf("D/n"); } else if (n < 80) { printf("C/n"); } else if (n < 90) { printf("B/n"); } else { printf("A/n"); } }}
  啊,現(xiàn)在清楚多了,不過用那么多 else if 真是麻煩。為什么不用 switch 呢?C 語言的 switch 分支就是常說的 case 分支,也即多分支。if 結(jié)構(gòu)最多只能有兩條分支,而 switch 最多可以有……數(shù)不清條分支!先看看它是怎么用的:
/* 例7 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); if (n < 0 n > 100) { printf("輸入分值錯(cuò)誤!"); } switch (n / 10) { case 9: printf("A/n"); break; case 8: printf("B/n"); break; case 7: printf("C/n"); break; case 6: printf("D/n"); break; default: if (n == 100) { printf("A/n"); } else { printf("E/n"); } }}  是不是沒搞懂為什么有 n / 10 一句?這個(gè)語句是取 n 除以 10 的整數(shù)商,舍棄余數(shù)。之所以要這樣作,是因?yàn)?case 后面只能接一個(gè)常數(shù)(或者常量),我沒辦法像在 Foxbase 中一樣使用 case n > 90。

  那為什么要用那么多 break 呢?break 的意思就是跳出該 switch 語句。每一個(gè) case 實(shí)際上只是一個(gè)標(biāo)號(hào),就似乎使用 goto 語句跳到該標(biāo)號(hào)一樣,它會(huì)從該標(biāo)號(hào)批示的位置開始,一直執(zhí)行下去。假如不用 break,你試試,哈哈,除非是滿分,否則都是 E。

  哦,還有 default 忘了告訴你。假如所有 case 條件都不匹配的時(shí)候,就執(zhí)行 default 后面的部分。當(dāng)然 default 分支是可以省略的,這樣的話,找不到匹配條件就不做任何處理。

  有趣吧!不過居然還用了兩個(gè) if 分支,慚愧。既然 switch 分支是多分支,應(yīng)該能夠包含所有的 if 分支才對(duì)啊!再試試:
/* 例8 */#include void main() { int n; printf("Please input the score: "); scanf("%d", &n); switch (n / 10) { case 10: case 9: printf("A/n"); break; case 8: printf("B/n"); break; case 7: printf("C/n"); break; case 6: printf("D/n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("E/n"); break; default: printf("輸入分值錯(cuò)誤!"); }}
  現(xiàn)在簡(jiǎn)潔了不少耶!不過連續(xù)用兩個(gè) case 是什么意思呢?

  case 不只是一個(gè)標(biāo)號(hào)嗎,連續(xù)用兩個(gè) case 也不過就是讓兩個(gè)標(biāo)號(hào)表示同一個(gè)位置而已。這個(gè)技巧很好用的哦!

  不過從 case 5 到 case 0,寫了這么長(zhǎng)一串,假如我用一個(gè) if 分支,就可以少寫一些代碼了。所以,使用 switch 的時(shí)候并不是不能使用 if,要視情況而定,讓你的代碼最簡(jiǎn)潔!switch 結(jié)構(gòu)同樣是可以多重嵌套的——當(dāng)然套在某個(gè) case 后面,例子我就不用舉了吧,學(xué)編程的人怎能不會(huì)舉一反三?!

  說白了,C 語言的分支結(jié)構(gòu)也就兩種,但只要你靈活運(yùn)用,這分支可就層出不窮了!

  獨(dú)孤九劍,重在劍意,不在劍招…… “啪!”在想什么,該打!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 井研县| 长岛县| 航空| 色达县| 遂平县| 佛坪县| 房产| 株洲市| 萨嘎县| 黄陵县| 江陵县| 米脂县| 萝北县| 大余县| 开鲁县| 龙门县| 偃师市| 泊头市| 白水县| 敦煌市| 思南县| 来凤县| 姚安县| 大悟县| 浦县| 根河市| 抚远县| 友谊县| 新昌县| 北京市| 新民市| 南乐县| 萝北县| 渭南市| 洛扎县| 扎兰屯市| 伊吾县| 星座| 庄河市| 墨竹工卡县| 英山县|