国产女人大黑β片在线观看_国产成人亚洲精品无码Av大片l_亚洲成人无码手机播放_强奸暴虐视频在线观看

您當(dāng)前位置: 唯學(xué)網(wǎng) » 計(jì)算機(jī)等級(jí)考試培訓(xùn) » 二級(jí)專(zhuān)題

計(jì)算機(jī)二級(jí)C語(yǔ)言循環(huán)語(yǔ)句和循環(huán)函數(shù)詳解

來(lái)源:唯學(xué)網(wǎng)•教育培訓(xùn)(www.career2zoom.com)  【唯學(xué)網(wǎng) • 中國(guó)教育電子商務(wù)平臺(tái)】 加入收藏

2014年全國(guó)計(jì)算機(jī)等級(jí)考試上半年的考試已經(jīng)結(jié)束了,下半年的計(jì)算機(jī)等級(jí)考試將會(huì)在9月20日至24日舉行,下個(gè)月將開(kāi)始進(jìn)行報(bào)名,同時(shí)計(jì)算機(jī)等級(jí)考試上半年成績(jī)已經(jīng)公布,考生可通過(guò)自己所在省份的人事網(wǎng)查詢(xún)上半年3月份考試成績(jī)。

一、循環(huán)語(yǔ)句

(一)、for循環(huán) 它的一般形式為:

for(<初始化>;<條件表過(guò)式>;<增量>)

語(yǔ)句;

初始化總是一個(gè)賦值語(yǔ)句,它用來(lái)給循環(huán)控制變量賦初值;條件表達(dá)式是一個(gè)關(guān)系表達(dá)式,它決定什么時(shí)候退出循環(huán);增量定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用;分開(kāi)。

例如:

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

語(yǔ)句;

上例中先給i賦初值1,判斷i是否小于等于10,若是則執(zhí)行語(yǔ)句,之后值增加1。再重新判斷,直到條件為假,即i>10時(shí),結(jié)束循環(huán)。

注意:

(1).for循環(huán)中語(yǔ)句可以為語(yǔ)句體,但要用{和}將參加循環(huán)的語(yǔ)句括起來(lái)。

(2).for循環(huán)中的初始化、條件表達(dá)式和增量都是選擇項(xiàng),即可以缺省,但;不能缺省。省略了初始化,表示不對(duì)循環(huán)控制變量賦初值。省略了條件表達(dá)式,則不做其它處理時(shí)便成為死循環(huán)。省略了增量,則不對(duì)循環(huán)控制變量進(jìn)行操作,這時(shí)可在語(yǔ)句體中加入修改循環(huán)控制變量的語(yǔ)句。

(3).for循環(huán)可以有多層嵌套。

例如:

for(;;) 語(yǔ)句;

for(i=1;;i+=2) 語(yǔ)句;

for(j=5;;) 語(yǔ)句;

這些for循環(huán)語(yǔ)句都是正確的。

main()

{

int i,j;

printf(i j\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

printf(%d %d\n,i,j);

}

輸出結(jié)果為:

i j

0 0

0 1

0 2

1 0

1 1

1 2

用for循環(huán)求1+2+……+100的和:

main()

{

int sn=0,i;

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

sn+=i; /*1+2+……+100*/

printf(%d\n,sn);

}

從程序可以看出,使用循環(huán)語(yǔ)句可以大大簡(jiǎn)化代碼。

(二)、while循環(huán) 它的一般形式為:

while(條件)

語(yǔ)句;

while循環(huán)表示當(dāng)條件為真時(shí),便執(zhí)行語(yǔ)句。直到條件為假才結(jié)束循環(huán)。并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語(yǔ)句。

例如:

#include stdio.h

main()

{

char c;

c='\0'; /*初始化c*/

while(c!='\n') /*回車(chē)結(jié)束循環(huán)*/

c=getche(); /*帶回顯的從鍵盤(pán)接收字符*/

}

上例中,while循環(huán)是以檢查c是否為回車(chē)符開(kāi)始,因其事先被初始化為空,所以條件為真,進(jìn)入循環(huán)等待鍵盤(pán)輸入字符;一旦輸入回車(chē),則c='\n',條件為假,循環(huán)便告結(jié)束。與for循環(huán)一樣,while循環(huán)總是在循環(huán)的頭部檢驗(yàn)條件,這就意味著循環(huán)可能什么也不執(zhí)行就退出。

注意:

(1).在while循環(huán)體內(nèi)也允許空語(yǔ)句。

例如:

while((c=getche())!='\n');

這個(gè)循環(huán)直到鍵入回車(chē)為止。

(2).可以有多層循環(huán)嵌套。

(3).語(yǔ)句可以是語(yǔ)句體, 此時(shí)必須用{和}括起來(lái)。

用while循環(huán)求1+2+……+100的和:

main()

{

int sn=0,i=0;

while(++i<=100)

sn+=i; /*求1+2+……+100*/

printf(%d\n,sn);

}

(三)、do--while循環(huán) 它的一般格式為:

do

{

語(yǔ)句塊;

}

while(條件);

這個(gè)循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語(yǔ)句,然后再判斷條件是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語(yǔ)句。

同樣當(dāng)有許多語(yǔ)句參加循環(huán)時(shí),要用{和}把它們括起來(lái)。

用do--while循環(huán)求1+2+……+100的和:

main()

{

int sn=0,i=1;

do

sn+=i; /*求1+2+……+100*/

while(++i<=100);

printf(%d\n,sn);

}

從上面三個(gè)程序看出,使用for,while和do--while求解同樣的問(wèn)題,基本思路都差不多,只是在第一次計(jì)算時(shí),注意初值。

二、循環(huán)控制

(一)、break語(yǔ)句

break語(yǔ)句通常用在循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句中。當(dāng) break用于開(kāi)關(guān)語(yǔ)句switch中時(shí),可使程序跳出switch而執(zhí)行switch以后的語(yǔ)句;如果沒(méi)有break語(yǔ)句,則將成為一個(gè)死循環(huán)而無(wú)法退出。break在switch中的用法已在前面介紹開(kāi)關(guān)語(yǔ)句時(shí)的例子中碰到,這里不再舉例。

當(dāng)break語(yǔ)句用于do-while、for、while循環(huán)語(yǔ)句中時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語(yǔ)句,通常break語(yǔ)句總是與if語(yǔ)句聯(lián)在一起。即滿(mǎn)足條件時(shí)便跳出循環(huán)。

例如:

main()

{

int sn=0,i;

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

{

if(i==51) break; /*如果i等于51,則跳出循環(huán)*/

sn+=i; /*1+2+……+50*/

}

printf(%d\n,sn);

}

可以看出,最終的結(jié)果是1+2+……+50。因?yàn)樵趇等于51的時(shí)候,就跳出循環(huán)了。自己寫(xiě)寫(xiě)怎樣在while和do--while循環(huán)中增加break語(yǔ)句。

注意:

1. break語(yǔ)句對(duì)if-else的條件語(yǔ)句不起作用。

2. 在多層循環(huán)中,一個(gè)break語(yǔ)句只向外跳一層。

例如:

main()

{

int i,j;

printf(i j\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{

if(j==2) break;

printf(%d %d\n,i,j);

}

}

輸出結(jié)果為:

i j

0 0

0 1

1 0

1 1

當(dāng)i==0,j==2時(shí),執(zhí)行break語(yǔ)句,跳出到外層的循環(huán),i變?yōu)?。

(二)、continue語(yǔ)句

continue語(yǔ)句的作用是跳過(guò)循環(huán)本中剩余的語(yǔ)句而強(qiáng)行執(zhí)行下一次循環(huán)。

continue語(yǔ)句只用在for、while、do-while等循環(huán)體中, 常與if條件語(yǔ)句一起使用,用來(lái)加速循環(huán)。

例如:

main()

{

int sn=0,i;

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

{

if(i==51) continue; /*如果i等于51,則結(jié)束本次循環(huán)*/

sn+=i; /*1+2+……+50+52+……+100*/

}

printf(%d\n,sn);

}

從程序中可以看出,continue語(yǔ)句只是當(dāng)前的值沒(méi)有執(zhí)行,也就是說(shuō)當(dāng)前的值跳過(guò)去了,接著執(zhí)行下次循環(huán)。

main()

{

int i,j;

printf(i j\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

{

if(j==1) continue;

printf(%d %d\n,i,j);

}

}

輸出結(jié)果為:

i j

0 0

0 2

1 0

1 2

(三)、goto語(yǔ)句

goto語(yǔ)句是一種無(wú)條件轉(zhuǎn)移語(yǔ)句,與BASIC中的goto語(yǔ)句相似。goto語(yǔ)句的使用格式為:

goto 標(biāo)號(hào);

其中標(biāo)號(hào)是Turbo C 2.0中一個(gè)有效的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符加上一個(gè):一起出現(xiàn)在函數(shù)內(nèi)某處,執(zhí)行g(shù)oto語(yǔ)句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號(hào)處并執(zhí)行其后的語(yǔ)句。標(biāo)號(hào)既然是一個(gè)標(biāo)識(shí)符,也就要滿(mǎn)足標(biāo)識(shí)符的命名規(guī)則。另外標(biāo)號(hào)必須與goto語(yǔ)句同處于一個(gè)函數(shù)中,但可以不在一個(gè)循環(huán)層中。通常goto語(yǔ)句與if條件語(yǔ)句連用,當(dāng)滿(mǎn)足某一條件時(shí),程序跳到標(biāo)號(hào)處運(yùn)行。goto語(yǔ)句通常不用,主要因?yàn)樗鼘⑹钩绦驅(qū)哟尾磺,且不易讀,但在多層嵌套退出時(shí),用goto語(yǔ)句則比較合理。

main()

{

int sn=0,i;

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

{

if(i==51) goto loop; /*如果i等于51,則跳出循環(huán)*/

sn+=i; /*1+2+……+50*/

}

loop: ;

printf(%d\n,sn);

}

可以看出,這兒的goto語(yǔ)句和break作用很類(lèi)似。

這兒的loop: ;

printf(%d\n,sn);

也可以寫(xiě)成loop: printf(%d\n,sn);

main()

{

int sn=0,i;

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

{

if(i==51) goto loop; /*如果i等于51,則跳出本次循環(huán)*/

sn+=i; /*1+2+……+50+52+……+100*/

loop: ;

}

printf(%d\n,sn);

}

可以看出這兒的loop語(yǔ)句和continue的作用類(lèi)似。

但是某些情況下又必須使用goto語(yǔ)句,否則會(huì)讓程序大大臃腫。如:

main()

{

int i,j,k;

printf(i j k\n);

for(i=0;i<2;i++)

for(j=0;j<3;j++)

for(k=0;k<3;k++)

{

if(k==2) goto loop;

printf(%d %d %d\n,i,j,k);

}

loop: ;

}

輸出結(jié)果為:

i j k

0 0 0

0 0 1

如果不使用goto語(yǔ)句,而使用break,continue語(yǔ)句,應(yīng)該這樣

main()

{

int i,j,k;

printf(i j\n);

for(i=0;i<2;i++)

{

for(j=0;j<3;j++)

{

for(k=0;k<3;k++)

{

if(k==2) break;

printf(%d %d %d\n,i,j,k);

}

if(k==2) break;

}

if(k==2) break;

}

}

輸出結(jié)果為:

i j k

0 0 0

0 0 1

所以在同時(shí)跳出多層循環(huán)時(shí),應(yīng)該使用goto語(yǔ)句。記住,所有的goto語(yǔ)句其實(shí)都是可以用break,continue代替的。

下面舉幾個(gè)例子:

1.求兩個(gè)整數(shù)的最大公約數(shù)。例如10和15的最大公約數(shù)是5。

分析:最大公約數(shù)一定小于等于最小的那個(gè)數(shù)一半,同時(shí)能被兩數(shù)整除。

main()

{

int num1,num2,i,min;

scanf(%d%d,&num1,&num2);

min=num1

for(i=min/2;i>0;i--)

if(num1%i==0&&num2%i==0) break;

printf(最大公約數(shù)為%d\n,i);

}

2.求1!+2!+……+n!(n<10)

main()

{

int n,i;

long temp=1,sn=0; /*從9!以后,所得的值就超過(guò)了int范圍*/

scanf(%d,&n);

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

{

temp*=i;

sn+=temp; /*如果沒(méi)有這一步,求的就是n!*/

}

printf(%ld\n,sn);

}

那么想想,如果求1!+3!+5!+……+n!應(yīng)該怎么辦?

3.判斷一個(gè)整數(shù)是不是素?cái)?shù)(素?cái)?shù)就是只能被本身和1整除的數(shù))。

#include math.h

main()

{

int num,i,flag=0;

scanf(%d,&num);

for(i=2;i

{

flag=0; /*標(biāo)志變量復(fù)位*/

if(num%i==0)

{

flag=1;

break;

}

}

if(flag==0) printf(是素?cái)?shù)\n);

else printf(不是素?cái)?shù)\n);

}

可以說(shuō),在所有的C語(yǔ)言書(shū)上,都有判斷素?cái)?shù)的例題。它的編程思想是:把一個(gè)變量作為標(biāo)志變量,用來(lái)標(biāo)志是不是素?cái)?shù);循環(huán)體是從2到sqrt(num),因?yàn)槿绻粋(gè)數(shù)不是素?cái)?shù)的話,一定能分解成num=num1*num2,它們中的最小值一定小于sqrt(num),所以循環(huán)的時(shí)候只要到 sqrt(num)就可以了。同時(shí)要注意變量復(fù)位的問(wèn)題。

在計(jì)算機(jī)培訓(xùn)欄目中我們整理了大量的輔導(dǎo)資料,包括網(wǎng)絡(luò)工程師、軟件工程師、電腦維修的基本常識(shí)輔導(dǎo)材料,還有計(jì)算機(jī)等級(jí)考試培訓(xùn)課程等內(nèi)容。

0% (0)
0% (10)
已有條評(píng)論