999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

對C語言組織循環的方法探討

2012-04-29 02:27:03王叢林
成才之路 2012年25期

王叢林

摘 要:C語言是一門理想的結構化程序設計語言,是學生學習程序設計的基礎課程。可通過對比手工計算,分析C語言組織循環的方法,著重討論累加、累乘問題的計算,以及組織循環應注意的問題,讓學生更好地掌握這一知識。

關鍵詞: C語言;組織循環;計算方法

C語言是一門理想的結構化程序設計語言,開設C語言程序設計課程的目的是要求學生利用C語言進行程序設計,重點在掌握程序設計的方法。程序設計通常包括以下幾項:針對提出的問題,研究確定求解的計算方法(算法)、根據計算方法繪制流程圖、根據計算流程圖編寫程序。其中,計算方法是程序設計靈魂,是編程的關鍵。

一、計算方法的比較

關于計算方法的選擇,必須注意到手算和計算機算有很大的差別的。手算更偏重于用人的經驗去選擇恰當的途徑來盡量減少工作量,縮短計算時間,提高計算精度;但是使用計算機時,多采用具有相同算法結構,簡單重復的計算,這樣能充分發揮計算機的長處,(運算速度快,最適合于重復操作,它有自動判斷的功能,因此,能控制重復執行的次數)。循環的計算結構便于編寫程序,減少運算次數、提高計算速度,因此,程序設計語言中的循環語句成為具有廣泛應用的基本語句之一,程序借助循環語句可以比較簡單地實現計算問題中包含的多次重復的計算(有規律的重復問題)。

例如:以下問題求解,用手工操作是這樣的:

①試求 1+2+3+4+……+100 的值

[分析與解] 利用等差數列求公式。(首項+末項)×項數÷2=(1+100)×100÷2=5050.

②試求 1×2+2×3+3×4+……+99×100的值

[分析與解] 用整數列項。原式=(1×2×3+2×3×3+3×4×3+4×5×3+……+99×100×3)÷3 = [1×2×3+2×3×(4-1)+3×4×(5-2)+4×5×(6-3)+……+99×100×(101-98) ]÷3=[99×100×101]÷3=333300.

③試求1×1+2×2+3×3+……99×99+100×100的值

[分析與解]利用平方差公式。1×1+2×2+3×3+……+n×n=n(n+1)(2n+1)÷6,原式=100×101×(2×100+1)÷6=338350.

上述問題,用計算機求解是這樣的:用“迭代”的方法進行運算。設一個變量s,用它來存放被加數,x作為加數,使s+x?圯s,x值變化,用循環來控制x的增值和使s加x。s的值不斷變化,用上一次計算出的s值來求下一次新的s值,然后再以這個新的s值去求下一個s值。每次以新值代替原值。S稱為“迭代變量”。具體求和的過程可寫成所謂的“括號套”的結構形式:(…(((0+x1)+x2)+x3)+…+x99)+x100

①求 1+2+3+4+……+100 的值中,x1=1、x2=2、x3=3……x100=100. ②求 1×2+2×3+3×4+……+99×100的值中,x1=1×2、x2=2×3、x3=3×4……x100=99×100. ③求1×1+2×2+3×3+……99×99+100×100的值中,x1=1×1、x2=2×2、x3=3×3……x100=100×100. 若用變量s表示部分和,那么上述算式可改寫為:

0?圯ss中為0

s+x1?圯s s中為x1

s+x2?圯s s中為x1+x2

s+x3?圯s s中為x1+x2+x3

…… ……

s+x100?圯s s中為x1+x2+x3+……x100

用循環表示此求和過程,C語言實現循環常用三種語句:while、do-while和for語句。循環次數能估計出來時,一般采用for語句。

①試求 1+2+3+4+……+100 的值。源程序為:

# include "stdio.h"

void main()

{

int i,s=0;/ *賦初值 0?圯s * /

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

s+=i; / * 累加和s+i?圯s * /

printf("%d \n",s);

}

②試求 1×2+2×3+3×4+……+99×100的值。

# include "stdio.h"

void main()

{

int i;

longs=0;\*初值為0*\

for(i=1;i<=99;i++)

s+=i*(i+1);

printf("%ld \n",s) ;

}

以上是求累加數(若干項之和)。同樣,若求累乘數 1×2×3×4×……×100 的值,求積過程可寫成 (…(((1×x1)×x2)×x3)×…×x99)×x100結構形式。用循環表示這個求積過程,源程序為:

# include "stdio.h"

void main()

{

int i,s=1;

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

s×=i;

printf("%d \n",s);

}

比較上例可知:此時s的初值是s=1而不是s=0 ,即初始值的確定問題。下面對循環語句使用作進一步說明。

二、關于循環語句,需要弄清楚的幾個問題

(1)循環內變量往往需要賦初值。如上例中迭代變量 s賦初值。關于賦初值需考慮兩個問題。

其一,選初值的語句應放在程序的什么位置,從上面的實例中可以看到這樣的規律:對變量選初值的語句應設在循環體之外,即在for、while語句之前。如s=0、s=1。如果是雙循環,則內循環體的變量取初值外循環體外,即在內循環的for、while之前。外循環體中的變量取初值的語句應在外循環外,即在外循環的for、while語句前。

例如:求階乘之和s=m!的程序嵌套循環中變量的置位問題

# include"stdio.h"

void main()

{

inti,m,p,s;

s=0, m=1;/*累加結果變量s清零*/

while (m<=100)

{ p=1,i=1; /*共用變量p復位*/

while ( i<=m)

{ p*=i;i++;}

s+=p;m++;}

printf ("s=%d\n",s);

}

說明:程序由組成的二重循環構成。內層循環負責求某數的階乘,外層循環負責累加各數階乘的結果。存放累加結果的變量應在二重循環之外清零,存放每個數結果的共用變量p應在完成存放前一個數階乘結果之后,開始存放新數階乘結果之前,對共用變量復位,即在外層循環之內、內層循環變量之外對變量p復位。

其二,怎樣選擇初值,如上例中s=0 , s=1等,循環中的某些語句往往是與計算中題目的相應項一一對應的。若開始初值不知如何確定,一般可以先寫出循環體中的語句,然后再選初始值。從例中看出,求累加和運算,一般值為0,求累乘積一般值為1,但要看具體情況。

(2)循環體語句順序和循環條件有關系。

例如: 求階乘之和s=m!的程序

#include"stdio.h"

void main()

{

inti=0,s=0;

while (i<=100)

{s+=i ;

i++;}

printf("s=%d\n",s) ;

}

上例輸出結果為5050,若改變循環體內語句的順序為 i++,s+=i輸出結果5150,這是因為循環被多執行一次,需要把循環條件i<=100改為i<100或i<=99才能得到正確的結果。因此,對依靠循環條件來控制循環次數的循環,應注意對邊界條件進行檢驗,防止循環體多執行一次。一般檢驗,可用從特殊到一般的方法。

參考文獻:

[1]譚浩強.C語言程序設計[M].北京:清華大學出版社,1999.

[2]汪大菊.C語言[M].天津:天津大學出版社,1996.

(新鄉職業技術學院)

主站蜘蛛池模板: 精品欧美日韩国产日漫一区不卡| 亚洲精品无码av中文字幕| 97视频免费看| 欧美激情视频一区二区三区免费| 国产精品天干天干在线观看| a欧美在线| 狠狠色狠狠色综合久久第一次| 中文成人在线| 久久情精品国产品免费| 日本精品影院| 国产成人av一区二区三区| 华人在线亚洲欧美精品| 日本精品视频一区二区| 国产在线精品人成导航| 人妻熟妇日韩AV在线播放| 玩两个丰满老熟女久久网| 成人免费午夜视频| 久久精品91麻豆| 久久久久免费精品国产| 国产精品成人啪精品视频| 91九色国产porny| 成人在线欧美| 国产黄色视频综合| 国产成人精品优优av| 91蝌蚪视频在线观看| 国产肉感大码AV无码| 久久精品日日躁夜夜躁欧美| 啪啪免费视频一区二区| 无码啪啪精品天堂浪潮av| 999国产精品永久免费视频精品久久| 国产白浆视频| 欧美爱爱网| 女人18一级毛片免费观看| 国产成人一区免费观看 | 亚洲第一极品精品无码| 亚洲欧美一区二区三区图片 | 精品国产电影久久九九| 亚洲妓女综合网995久久| 国产91精品调教在线播放| 99热这里只有精品国产99| 在线免费无码视频| 欧美成人看片一区二区三区 | 亚洲美女一级毛片| 亚洲永久色| 99这里精品| 99re66精品视频在线观看| 色婷婷成人网| 一本大道香蕉高清久久| 亚洲精品无码在线播放网站| 国产制服丝袜91在线| 欧美在线网| 97精品伊人久久大香线蕉| 国产精品视屏| 99色亚洲国产精品11p| 亚洲精品日产AⅤ| 日韩毛片免费观看| 黄色网在线| jizz在线观看| 香蕉视频国产精品人| 综合色亚洲| 在线播放国产99re| 亚洲毛片网站| 狠狠色综合网| 91精品国产自产在线观看| 亚洲自拍另类| 精品久久蜜桃| 免费亚洲成人| 亚洲欧洲国产成人综合不卡| 亚洲区第一页| 亚洲无码A视频在线| 日本亚洲最大的色成网站www| 九九热在线视频| 欧美不卡视频一区发布| 无码综合天天久久综合网| 91午夜福利在线观看| 67194亚洲无码| 欧美午夜视频| 国产亚洲欧美在线中文bt天堂| 亚洲 欧美 偷自乱 图片 | 99性视频| 成年片色大黄全免费网站久久| 五月天香蕉视频国产亚|