成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C語言基礎(chǔ):詳細(xì)介紹四種程序結(jié)構(gòu)

開發(fā) 后端
本文介紹的是C語言中的四種程序結(jié)構(gòu),適合C語言的新手月的,希望對你有幫助,一起來看。

下面介紹C語言的四種程序結(jié)構(gòu) 。

(1)順序結(jié)構(gòu)

順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。

例如:a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好像交換兩個杯子水,這當(dāng)然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:

  1. c = a;   
  2. a = b;   
  3. b = c;  

 

執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:

  1. a = b;   
  2. c = a;   
  3. b =c;  

 

則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,初學(xué)者最容易犯這種錯誤。順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。

不過大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個復(fù)雜的程序,例如分支結(jié)構(gòu)中的復(fù)合語句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

(2) 分支結(jié)構(gòu)

順序結(jié)構(gòu)的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結(jié)構(gòu)。分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句。

分支結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。

學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執(zhí)行的功能,嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結(jié)構(gòu)。

①if(條件){分支體}

這種分支結(jié)構(gòu)中的分支體可以是一條語句,此時“{}”可以省略,也可以是多條語句即復(fù)合語句。它有兩條分支路徑可選,一是當(dāng)條件為真,執(zhí)行分支體,否則跳過分支體,這時分支體就不會執(zhí)行。如:要計算x的絕對值,根據(jù)絕對值定義,我們知道,當(dāng)x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0)x=-x;

  1. if(條件)   
  2. {分支1}   
  3. else   
  4. {分支2}  

 

這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行分支1,否則執(zhí)行分支2,分支1和分支2都可以是1條或若干條語句構(gòu)成。

如:求ax^2+bx+c=0的根

分析:因為當(dāng)b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復(fù)根。其程序段如下:

  1. main()  
  2. {  
  3. int a,b,c,d,x,y;  
  4. printf("Please put the number of a,b&c from the quadratic equation of one variable one by one\n");  
  5. scanf("%d%d%d",&a,&b,&c);  
  6. d=b*b-4*a*c;  
  7. if(d<0)  
  8. {  
  9. printf("NO Root!Wrong!\n");  
  10. }  
  11. else 
  12. {  
  13. y=-b-sqrt(d)/2*a;  
  14. x=-b+sqrt(d)/2*a;  
  15. printf("The 1st equation root=%d\nThe 2nd equation root=%d",y,x);  
  16. }  

③IF嵌套分支語句:

其語句格式為:

  1. if(條件1) {分支1}  
  2. else if(條件2) {分支2}   
  3. else if(條件3) {分支3}   
  4. ……   
  5. else if(條件n) {分支n}   
  6. else {分支n+1}   
  7. FOR嵌套,其語句格式為:  
  8. for(初值A(chǔ);范圍A;步長A)  
  9. {  
  10. for(初值B;范圍B;步長B)  
  11. {  
  12. 循環(huán)體  
  13. }  

 

FOR嵌套例子:九九乘法表

  1. main()  
  2. {  
  3. int a,b,c;  
  4. for(a=1;a<=9;a++)  
  5. {  
  6. for(b=1;b<=a;b++)  
  7. {  
  8. c=b*a;  
  9. printf("%dx%d=%d ",b,a,c);  
  10. }  
  11. printf("\n");  
  12. }  

嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套后,語句結(jié)構(gòu)變得非常復(fù)雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內(nèi),超過3重可以用下面的語句。

④switch開關(guān)語句

該語句也是多分支選擇語句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if…else語句,它的所有分支都是并列的,程序執(zhí)行時,由***分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應(yīng)用時要特別注意開關(guān)條件的合理設(shè)置以及break語句的合理應(yīng)用。

(3)循環(huán)結(jié)構(gòu):

循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do?Cwhile循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預(yù)料的錯誤,在學(xué)習(xí)中我們主要學(xué)習(xí)while、do…while、for三種循環(huán)。

常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點在于弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環(huán)的格式和執(zhí)行順序,將每種循環(huán)的流程圖理解透徹后就會明白如何替換使用,如把while循環(huán)的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語句(即循環(huán)變量值的改變),否則就可能成了一個死循環(huán),這是初學(xué)者的一個常見錯誤。

在學(xué)完這三個循環(huán)后,應(yīng)明確它們的異同點:用while和do…while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)一般在語句1中進行的;while循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do…while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do…while的循環(huán)體最少被執(zhí)行一次,而while循環(huán)和for就可能一次都不執(zhí)行。

另外還要注意的是這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),是不能用break和 continue語句進行控制的。

順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有分支、順序結(jié)構(gòu),分支中也可以有循環(huán)、順序結(jié)構(gòu),其實不管哪種結(jié)構(gòu),我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結(jié)構(gòu)相互結(jié)合以實現(xiàn)各種算法,設(shè)計出相應(yīng)程序,但是要編程的問題較大,編寫出的程序就往往很長、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設(shè)計成模塊化結(jié)構(gòu)。

(4)模塊化程序結(jié)構(gòu)

C語言的模塊化程序結(jié)構(gòu)用函數(shù)來實現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個模塊都編寫成一個C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來實現(xiàn)一大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。 因此,對函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過上機調(diào)試加以鞏固。

三.掌握一些簡單的算法

編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就要求掌握算法,根據(jù)我們的《C程序設(shè)計》教學(xué)大綱中,只要求我們掌握一些簡單的算法,在掌握這些基本算法后,要完成對問題的分析就容易了。如兩個數(shù)的交換、三個數(shù)的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些算法的內(nèi)在含義。

結(jié)語:當(dāng)我們把握好上述幾方面后,只要同學(xué)們能克服畏難、厭學(xué)、上課能專心聽講,做好練習(xí)與上機調(diào)試,其實C語言并不難學(xué) 。

責(zé)任編輯:于鐵 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-01-21 18:08:25

VB.NET程序結(jié)構(gòu)

2011-06-22 12:57:54

JVM

2010-03-24 19:09:43

Python語言

2010-06-12 18:12:34

UML類圖關(guān)系

2013-05-13 09:48:47

網(wǎng)絡(luò)接入接入方法綜合布線

2009-08-20 09:52:31

C#參數(shù)類型

2010-03-03 13:50:40

Python文件

2024-08-27 08:29:49

2013-06-28 10:17:04

2009-09-08 17:20:01

C#排序算法

2009-08-26 15:04:35

C#轉(zhuǎn)換

2009-08-13 15:40:28

C#基礎(chǔ)知識

2010-03-05 11:58:52

2011-06-30 14:45:52

外鏈

2011-08-29 17:13:03

外連接不等值連接等值連接

2009-08-13 16:02:29

C#結(jié)構(gòu)

2010-01-13 17:12:22

核心交換機

2024-10-24 08:04:00

2009-08-05 14:09:04

C#日期轉(zhuǎn)換

2021-03-19 10:55:06

Eslint代碼前端
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久99这里只有精品 | 99精品网 | 久草免费在线视频 | yeyeav| 国产精品99久久久久久久久 | 欧美日韩精品一区二区三区视频 | 成人欧美一区二区三区在线播放 | 欧美日韩视频 | 精品一区二区三区在线观看国产 | aaaa一级毛片 | 日韩视频在线免费观看 | 亚洲人在线播放 | 成人国产精品久久久 | 国产精品久久久av | 韩日av在线 | 99热这里有精品 | 黄色一级大片在线免费看产 | 粉嫩av久久一区二区三区 | 国产一区二区日韩 | 亚洲国产中文字幕 | 国产视频亚洲视频 | 一级午夜aaa免费看三区 | 免费不卡av | 久热久热 | 国产精品一区二区久久精品爱微奶 | 欧美综合一区二区 | 国产美女精品视频免费观看 | 伊人激情综合网 | av资源中文在线天堂 | 亚洲黄色网址视频 | 国产福利在线播放 | 亚洲精色 | 久久国产精品一区二区三区 | 精品欧美乱码久久久久久 | 日本精品视频在线观看 | 亚洲黄色高清视频 | 日韩国产在线 | 精品久久成人 | 精品日韩一区 | 国产乱码精品一区二区三区忘忧草 | 午夜影院在线观看免费 |