計算機等級考試二級C語言 迴圈控制語句

2022-03-30 03:05:26 字數 3962 閱讀 2108

迴圈控制結構(又稱重複結構)是程式中的另乙個基本結構。在實際問題中,常常需要進行大量的重複處理,迴圈結構可以使我們只寫很少的語句,而讓計算機反覆執行,從而完成大量類同的計算。

c語言提供了while語句、do...while語句和for語句實現迴圈結構。

3.4.1while語句

while語句是當型迴圈控制語句,一般形式為:

while表達語句;

語句部分稱為迴圈體,當需要執行多條語句時,應使用復合語句。

while語句的流程圖見圖3-8,其特點是先判斷,後執行,若條件不成立,有可能一次也不執行。

[例3-11]求n!

分析:n!=n*(n-1)*(n-2)*..2*1,0!=1。即s0=1,sn=sn-1*n。可以從s0開始,依次求出s1、s2、...sn。

統一令s等於階乘值,s的初值為0!=1;變數i為計數器,i從1變到n,每一步令s=s*i,則最終s中的值就是n!。

流程圖見圖3-9,程式如下:

考察圖3-9中迴圈部分的流程圖可以看出,在迴圈前各變數應有合適的值(s=1),另外,控制迴圈結束的變數(此處為i)必須在迴圈體中被改變,否則,迴圈將無限進行下去,成為死迴圈。

[1] [2] [3] [4] [5] [6] 下一頁

本題中,將多項式的每一項用t表示,s代表符號,在每一次迴圈中,只要改變s、n的值,就可求出每一項t。

一般情況下,while型迴圈最適合於這種情況:知道控制迴圈的條件為某個邏輯表示式的值,而且該表示式的值會在迴圈中被改變,如同例3-12的情況一樣。

3.4.2do...while語句

在c語句中,直到型迴圈的語句是do...while,它的一般形式為:

do語句while表達

其中語句通常為復合語句,稱為迴圈體。

do...while語句的流程圖見圖3-10,其基本特點是:先執行後判斷,因此,迴圈體至少被執行一次。

但需要注意的是,do...while與標準的直到型迴圈有乙個極為重要的區別,直到型迴圈是當條件為真時結束迴圈,而do...while語句恰恰相反,當條件為真時迴圈,一旦條件為假,立即結束迴圈,請注意do...while語句的這一特點。

例[3-13]計算sin(x)=x-x3/3!+x5/5!-x7/7!+...

直到最後一項的絕對值小於1e-7時為止。

分析:這道題使用遞推方法來做。

讓多項式的每一項與乙個變數n對應,n的值依次為1,3,5,7,...,從多項式的前一項算後一項,只需將前一項乘乙個因子:

(-x2)/((n-1)*n)

用s表示多項式的值,用t表示每一項的值,程式如下:

#include

# include

m a i n ( )

while(fabs(t)>=1e-7);

printf("sin(%f)=%lf,"x,s);

}執行結果如下:

run¿

pleaseinputx:1.5753¿

sin(1.575300)=0.999990

run¿

pleaseinputx:-0.65¿

sin(-0.650000)=-0.605186

3.4.3for語句

for語句是迴圈控制結構中使用最廣泛的一種迴圈控制語句,特別適合已知迴圈次數的情況。它的一般形式為:

for(表示式1>;表示式2>;表示式3>)語句

for語句很好地體現了正確表達迴圈結構應注意的三個問題:

1)控制變數的初始化。

2)迴圈的條件。

3)迴圈控制變數的更新。

表示式1:一般為賦值表示式,給控制變數賦初值;

表示式2:關係表示式或邏輯表示式,迴圈控制條件;

表示式3:一般為賦值表示式,給控制變數增量或減量。

語句:迴圈體,當有多條語句時,必須使用復合語句。

for迴圈的流程圖如圖3-11,其執行過程如下:

首先計算表示式1,然後計算表示式2,若表示式2為真,則執行迴圈體;否則,退出for迴圈,執行for迴圈後的語句。如果執行了迴圈體,則迴圈體每執行一次,都計算表示式3,然後重新計算表示式2,依此迴圈,直至表示式2的值為假,退出迴圈。

上一頁  [1] [2] [3] [4] [5] [6] 下一頁

[例3-14]計算自然數1到n的平方和。

# include

# include

main ( )

執行結果如下:

runplease input n:5

1*1+2*2+...+5*5=55.000000

for語句的幾種格式

for語句的三個表示式都是可以省略的,但分號「;」絕對不能省略。

a.for(;;)語句;

這是乙個死迴圈,一般用條件表示式加break語句在迴圈體內適當位置,一旦條件滿足時,用break語句跳出for迴圈。

例如,在編制選單控制程式時,可以如下:

for(;;)

b.for(;表示式2;表示式3)

使用條件是:迴圈控制變數的初值不是已知常量,而是在前面通過計算得到,例如:

i=m-n;

⋯⋯for(;ic.for(表示式1;表示式2;)語句

一般當迴圈控制變數非規則變化,而且迴圈體中有更新控制變數的語句時使用。例如:

for(i=1;i<=100;)

d.for(i=1,j=n;i在for語句中,表示式1、表示式3都可以有一項或多項,如本例中,表示式1同時為i和j賦初值,表示式3同時改變i和j的值。當有不止一項時,各項之間用逗號「,」分隔。另外,c語言還允許在迴圈體內改變迴圈變數的值,這在某些程式的設計中是很有用的。到此,我們已經學習了c語言中三種迴圈控制語句while、do...while和for語句,下面再討論兩個問題:

三種語句的選用同乙個問題,往往既可以用while語句解決,也可以用do...while或者for語句來解決,但在

實際應用中,應根據具體情況來選用不同的迴圈語句,選用的一般原則是:

1)如果迴圈次數在執行迴圈體之前就已確定,一般用for語句;如果迴圈次數是由迴圈體的執**況確定的,一般用while語句或者do...while語句。

2)當迴圈體至少執行一次時,用do...while語句,反之,如果迴圈體可能一次也不執行,選用while語句。迴圈的巢狀乙個迴圈的迴圈體中有另乙個迴圈叫迴圈巢狀。這種巢狀過程可以有很多重。乙個迴圈外面僅包圍一層迴圈叫二重迴圈;乙個迴圈外面包圍兩層迴圈叫三重迴圈;乙個迴圈外面包圍多層迴圈叫多重迴圈。

三種迴圈語句for、while、do...while可以互相巢狀自由組合。但要注意的是,各迴圈必須完整,相互之間絕不允許交叉。如下面這種形式是不允許的:

dowhile();

上一頁  [1] [2] [3] [4] [5] [6] 下一頁

[例3-15]列印8行7列的星形矩陣。

流程圖見圖3-12,程式如下:

#include

main()

}列印結果如下:

run*******

*******

*******

*******

*******

*******

*******

*******

將程式中for(j=0;j<7;j++)改為for(j=0;j3.4.4break與continue語句

有時,我們需要在迴圈體中提前跳出迴圈,或者在滿足某種條件下,不執行迴圈中剩下的語句而立即從頭開始新的一輪迴圈,這時就要用到break和continue語句。

1.break語句

在前面學習switch語句時,我們已經接觸到break語句,在case子句執行完後,通過break語句使控制立即跳出switch結構。在迴圈語句中,break語句的作用是在迴圈體中測試到應立即結束迴圈時,使控制立即跳出迴圈結構,轉而執行迴圈語句後的語句。

[例3-16]列印半徑為1到10的圓的面積,若面積超過100,則不予列印。

#include

main()

printf("nowr=%d

",r);

}執行程式:

全國計算機等級考試 C語言二級 題庫

1 下列敘述中正確的是 a 乙個演算法的空間複雜度大,則其時間複雜度也必定大 b 乙個演算法的空間複雜度大,則其時間複雜度必定小 c 乙個演算法的時間複雜度大,則其空間複雜度必定小 d 演算法的時間複雜度與空間複雜度沒有直接關係 正確答案 d 解析 演算法的空間複雜度是指演算法在執行過程中所需要 的...

計算機等級考試二級c語言概念複習三

計算機等級考試二級c語言概念複習三 21.樹形結點的集合,它的根結點數目是0或1 22.資料庫是乙個結構化的資料集合 23.需求分析的最終結果是產生需求規格說明書 24.假設線性表的長度為n,則在最壞的情況下,氣泡排序需要的比較次數是n n 1 2 25.乙個關係中的屬性個數為1時,稱此關係為一元關...

計算機等級考試二級C語言考前密卷 二

一 選擇題 1 已知一棵二叉樹前序遍歷和中序遍歷分別為abdegcfh和dbgeachf,則該二叉樹的後序遍歷為 a gedhfbca b dgebhfca c abcdefgh d acbfedhg 2 樹是結點的集合,它的根結點數目是 a 有且只有1 b 1或多於1 c 0或1 d 至少2 3 ...