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

C語言基礎:詳細介紹四種程序結構

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

下面介紹C語言的四種程序結構 。

(1)順序結構

順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。

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

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

 

執行結果是a = 5,b = c = 3如果改變其順序,寫成:

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

 

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

不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。

(2) 分支結構

順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。

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

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

①if(條件){分支體}

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

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

 

這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。

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

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

  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;范圍A;步長A)  
  9. {  
  10. for(初值B;范圍B;步長B)  
  11. {  
  12. 循環體  
  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重嵌套后,語句結構變得非常復雜,對于程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。

④switch開關語句

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

(3)循環結構:

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

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

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

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

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

(4)模塊化程序結構

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

三.掌握一些簡單的算法

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

結語:當我們把握好上述幾方面后,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言并不難學 。

責任編輯:于鐵 來源: 互聯網
相關推薦

2011-06-22 12:57:54

JVM

2010-01-21 18:08:25

VB.NET程序結構

2010-03-24 19:09:43

Python語言

2010-06-12 18:12:34

UML類圖關系

2013-05-13 09:48:47

網絡接入接入方法綜合布線

2009-08-20 09:52:31

C#參數類型

2010-03-03 13:50:40

Python文件

2024-08-27 08:29:49

2009-09-08 17:20:01

C#排序算法

2009-08-26 15:04:35

C#轉換

2013-06-28 10:17:04

2010-03-05 11:58:52

2009-08-13 15:40:28

C#基礎知識

2011-06-30 14:45:52

外鏈

2011-08-29 17:13:03

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

2009-08-05 14:09:04

C#日期轉換

2024-10-24 08:04:00

2010-01-13 17:12:22

核心交換機

2021-03-19 10:55:06

Eslint代碼前端

2021-10-24 08:37:18

網絡監控網絡架構網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚欧洲精品在线视频免费观看 | 欧美性吧| 亚洲视频区 | 欧美日韩网站 | 美女张开腿露出尿口 | 国产精品国产成人国产三级 | 国产999精品久久久 精品三级在线观看 | 武道仙尊动漫在线观看 | 无码日韩精品一区二区免费 | 欧美日韩在线一区二区 | 国产日产精品一区二区三区四区 | 免费成人高清 | 亚洲精品视频观看 | 超碰在线国产 | 欧美性生活免费 | 欧美videosex性极品hd | 福利视频网站 | 在线观看av网站 | 久久久久久久一区 | 亚洲视频在线一区 | 国产精品欧美一区二区 | 成人免费视频网站在线看 | 国产高清精品一区二区三区 | 久久久久久久久国产 | 北条麻妃一区二区三区在线视频 | 精精国产xxxx视频在线野外 | 99精品久久久久久 | 成人免费视频在线观看 | 国产免费国产 | 亚洲精品国产电影 | 久久精品小视频 | 热久久免费视频 | 国产91在线 | 欧美 | 亚洲国产成人精品女人久久久 | 中文字幕亚洲国产 | 成人精品| 亚洲成人一区二区 | 欧美日韩中文字幕在线 | 黄色大全免费看 | 91久久精品日日躁夜夜躁国产 | 欧美在线色 |