程序設計基礎_第1頁
程序設計基礎_第2頁
程序設計基礎_第3頁
程序設計基礎_第4頁
程序設計基礎_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

程序設計基礎諶衛(wèi)軍清華大學軟件學院2006年秋季第五章1第五章

循環(huán)控制2西緒福斯的故事西緒福斯是希臘神話中的人物,他因為觸犯了宙斯,死后被打入地獄受懲罰。每天清晨,他都必須將一塊沉重的巨石從平地搬到山頂上去。每當他自以為已經(jīng)搬到山頂時,石頭就突然順著山坡滾下去,于是西緒福斯只好重新回頭去搬石頭,而石頭再滾下山,……,如此循環(huán)往復,沒有窮盡。3在程序設計中,當我們需要重復地去執(zhí)行某一段代碼時,可使用循環(huán)(loop)的方法。一個循環(huán)就是一組重復執(zhí)行的語句?!瓁=x+1;

sum=sum+x;

scanf(…);……循環(huán)體4

for語句

while語句

do-while語句

break語句和continue語句程序舉例本章的組織結(jié)構(gòu)55.1for語句如圖所示,顯示前100個整數(shù)的平方和立方。問題描述:111248392741664525125………6問題分析: 笨方法:對這100個整數(shù)分別進行計算。printf(“%d%d%d\n”,1,1*1,1*1*1);printf(“%d%d%d\n”,2,2*2,2*2*2);printf(“%d%d%d\n”,3,3*3,3*3*3);printf(“%d%d%d\n”,4,4*4,4*4*4);……共需要100條語句。7問題分析: 需要對這個問題進行抽象,歸納為一種統(tǒng)一的形式,然后采用循環(huán)語句來重復地執(zhí)行一定的次數(shù)。 對于1-100當中的每一個整數(shù)x,其平方為:x*x,其立方為:x*x*x,可以采用for語句來重復地執(zhí)行100次,每一次處理一個整數(shù)。8

for(表達式1;表達式2;表達式3)

{

語句塊;}一般形式:(1)先求解表達式1(循環(huán)變量賦初值);

(2)求解表達式2(循環(huán)條件測試),若其值為非0(真),則

執(zhí)行內(nèi)嵌的語句塊,然后轉(zhuǎn)(3);若其值為0(假),則

結(jié)束循環(huán),執(zhí)行for語句后面的一個語句;

(3)求解表達式3(循環(huán)變量增值);

(4)轉(zhuǎn)(2),繼續(xù)執(zhí)行;執(zhí)行過程:真假結(jié)束循環(huán)各部分最少被執(zhí)行幾次?9

//顯示前100個整數(shù)的平方和立方

#include<stdio.h>voidmain()

{

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

{printf(“%d%d%d\n”,i,i*i,i*i*i);}

}循環(huán)變量10111248392741664525125636216749343864512981729101001000111211331運行結(jié)果:11

//顯示前100個整數(shù)的平方和立方

#include<stdio.h>voidmain()

{

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

{printf(“%3d%5d%7d\n”,i,i*i,i*i*i);}

}12

111248392741664525125636216749343864512981729101001000111211331新的結(jié)果:13(一)對于for語句的一般形式中的“表達式1”,(1) 它可以被省略,此時應在for語句之前給循環(huán)變量賦初值。當它被省略時,其后的分號不能省略;

例如:for(;i<=100;i++)sum=sum+i;(2) 它可以是設置循環(huán)變量初值的賦值表達式,也可以是與循環(huán)變量無關(guān)的其他表達式。

例如:for(sum=0;i<=100;i++)sum=sum+i;(3) 它可以是一個簡單的表達式,也可以是逗號表達式,即包含多個簡單表達式,中間用逗號隔開。

如:for(sum=0,i=1;i<=100;i++)sum=sum+i;幾點說明14(二)對于for語句的一般形式中的“表達式2”,(1) 它可以被省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式2的值始終為真。此時程序設計者應另外設法保證循環(huán)能正常結(jié)束;

例如:for(i=1;;i++)sum=sum+i;(2) 它一般是關(guān)系表達式(如i<=100)或邏輯表達式(如(a<b)&&(x<y)),但也可以是數(shù)值表達式或字符表達式,只要其值為非零,就執(zhí)行循環(huán)體。

例如:for(i=0;(c=getchar())!=‘\n’;i+=c);15(三)對于for語句的一般形式中的“表達式3”,(1) 它也可以被省略,即沒有循環(huán)變量增值,此時程序設計者也應能保證循環(huán)能正常結(jié)束;

例如:for(i=1;i<=100;){sum=sum+i;i++;}(2) 與表達式1一樣,它可以是一個簡單的表達式,也可以是逗號表達式。

例如:for(i=0,j=100;i<=j;i++,j--)k=i+j;(3) 它一般是作為循環(huán)變量增值,但也可以是對循環(huán)變量進行減值,而且每一步不一定非要加1或減1,也可以是其他的常量。16高斯的難題德國數(shù)學家高斯,在上小學的時候,老師出了一道難題,計算1+2+3+……+100,高斯很快就在自己的小石板上寫出了答案5050,老師非常驚訝,高斯怎么算得這么快呢?原來,高斯不是一個數(shù)一個數(shù)按部就班地加起出來的,而是發(fā)現(xiàn)這些數(shù)字有一個規(guī)律,一頭一尾依次兩個數(shù)相加,它們的和都是一樣的:1+100=101,2+99=101,一直到50+51=101,一共是50個101,所以,他很快就把答案算出來了。17基本思路: 把問題抽象為一種統(tǒng)一的形式,然后采用循環(huán)語句來重復地計算。 用一個變量sum來保存總和,對于1、2、3、…、100中的每一個整數(shù)i,依次把它加入到sum當中,即sum=sum+i。18#include<stdio.h>

voidmain()

{

inti,sum;

sum=0;

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

{

sum=sum+i;

}

printf(“sum=%d”,sum);

}sum0i=11i=235050i=100……19將原來的for(i=1;i<=100;i++)

修改為for(i=1;i<=100;i=i+2)

問:這是在計算哪些整數(shù)的和,答案是多少?

將原來的for(i=1;i<=100;i++)

修改為for(i=1;i<=100000;i++)

問:程序執(zhí)行后能夠得出正確結(jié)果嗎?如果

不能,自己想辦法解決。思考題:在程序中做如下的修改205.2while語句問題描述:顯示前若干個整數(shù)的平方和立方,只要其立方值

小于10000。111248392741664525125………21問題分析: 與for語句的例子有些類似,但不完全相同。前者指定了需要處理的整數(shù)個數(shù),而這里是要求最大的那個整數(shù),其立方必須小于某個固定的值。 循環(huán)體內(nèi)的語句無須變化,完成的是相同的功能。區(qū)別在于循環(huán)結(jié)束條件的判定??梢杂脀hile語句來完成。22

while(表達式){

語句塊;}一般形式:先判斷表達式,如果表達式的值為非0

(真),那么執(zhí)行while語句中的內(nèi)嵌語句

塊,然后又回到表達式的判斷;如果表達式

的值為0(假),那么結(jié)束循環(huán)。執(zhí)行過程:假結(jié)束循環(huán)真各部分最少被執(zhí)行幾次?23

//顯示前若干個整數(shù)的平方和立方,只要其立方值

//小于10000。

#include<stdio.h>voidmain()

{

inti;

while(i*i*i<10000)

{

printf(“%3d%5d%7d\n”,i,i*i,i*i*i);

}

}i=1;i++;24

//顯示前若干個整數(shù)的平方和立方,只要其立方值

//小于10000。

#include<stdio.h>voidmain()

{

inti;for(i=1;i*i*i<10000;i++)

{

printf(“%3d%5d%7d\n”,i,i*i,i*i*i);

}

}25脆弱的輸入方式charchoice;

printf("你是否想借書?(y/n)");scanf("%c",&choice);

……如果用戶輸入的是y/n以外的字符呢?26健壯的輸入方式charchoice;printf("你是否想借書?(y/n)");

scanf("%c",&choice);

while(choice!='y'&&choice!='n')

{

printf("你是否想借書?(y/n)");

scanf("%c",&choice);

}

……275.3do-while語句do

{

語句塊;}

while(表達式)一般形式:先執(zhí)行一次循環(huán)體語句,然后判別表達式,如果

表達式的值為非0(真),那么返回去重新執(zhí)行循環(huán)

體語句;如果表達式的值為0(假),那么結(jié)束循環(huán)。執(zhí)行過程:真假結(jié)束循環(huán)28健壯的輸入方式(do-while)charchoice;do

{printf("你是否想借書?(y/n)");

scanf("%c",&choice);}while(choice!='y'&&choice!='n');

……295.4break和continue語句break語句的功能:用來跳出switch結(jié)構(gòu);用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句。一般形式為:break;30健壯的輸入方式(whileagain)charchoice;while(1)

{

printf("你是否想借書?(y/n)");

scanf("%c",&choice);

if(

choice=='y'||choice=='n')break;

}

……31輸入一組整數(shù),當輸入–1時表示輸入結(jié)束,

然后計算這組整數(shù)的平均值;問題描述:12425125–1計算輸入數(shù)據(jù)的平均值討論32voidmain()

{

intValue,TotalValue,Num;printf(“本程序用于計算一組整數(shù)的平均值\n”);

printf(“輸入-1表示數(shù)據(jù)的結(jié)束。\n”);

TotalValue=0;

Num=0;

while(1)

{

scanf(“%d”,&Value);

if(Value==-1)break;

TotalValue+=Value;

Num++;

}

if(Num>0)

printf(“平均值是:%.1f”,(double)TotalValue/Num);

}累加模式33while(…)

{….while(…)

{……

break;}……

}

…...跳出最近的循環(huán)。34while(…)

{

….

while(…)

{

……

continue;

……

}

……

}結(jié)束本次循環(huán),即跳過循環(huán)體中尚未執(zhí)行的語句,直接

回到循環(huán)條件的判別。continue語句355.5程序舉例5.5.1計算7!問題描述: 計算7!。在數(shù)學當中,N!的定義為:

N!=N×(N–1)×(N–2)×…×2×1,因此,我們可以把7!展開為:

7?。?×6×5×4×3×2×1,我們的目標即計算這7個整數(shù)之積。36思路分析:從程序的擴展性和通用性來看,不宜采用算術(shù)表達式的方法;本題涉及到多個連續(xù)的整數(shù)的相乘(具有明顯的規(guī)律性和一致性),因此可以考慮采用循環(huán)語句的方法;循環(huán)語句的關(guān)鍵在于循環(huán)控制條件和循環(huán)體語句的設計;循環(huán)控制條件的設計:可令整型變量i去表示7、6、5、…、1,初始值為7或1,然后依次遞減或遞增,直到遍歷所有整數(shù);37思路分析(續(xù)):循環(huán)體語句的設計:讓整型變量sum來表示乘積,其初值為1。對于每一個當前的整數(shù)i,將其乘以sum,再將乘積保存在sum中,即

sum=sum*i

當循環(huán)結(jié)束后,sum中的值即為所求;在設計好循環(huán)控制條件和循環(huán)體語句之后,可以根據(jù)方便與否和個人的喜好,采用任意一種循環(huán)語句(for語句、while語句或do-while語句)來編程,因為它們在功能上是

等價的。38

初始時sum=1,i=1

7×6×5×4×3×2×1sum=1*1=1isum=sum*isum=1*2=2sum=2*3=6sum=720*7=504039//計算7!

#include<stdio.h>voidmain()

{

inti=1,sum=1;for(i=1;i<=7;i++)

{

sum=sum*i;

}

printf(“7!=%d”,sum);

}用for語句來實現(xiàn)//計算7!

#include<stdio.h>voidmain()

{

inti=1,sum=1;

while(i<=7)

{

sum=sum*i;

i++;

}

printf(“7!=%d”,sum);

}用while語句來實現(xiàn)累積405.5.2求π的近似值例.求π的近似值

用變量pi表示π的值。

令 表示括號中的每個項當最后一項的絕對值小于等于時,忽略掉以后的項思考2分鐘41思路分析:顯然不是一個簡單的算術(shù)表達式,而必須采用循環(huán)語句的方法;循環(huán)控制條件的設計:題目已指明,當最后一項的絕對值小于等于10-6時,循環(huán)結(jié)束;循環(huán)體語句的設計:需要計算每一項的值,并把它們累加起來,難點在于如何來確定

a和b的值,其中a為1、3、5、7、…,它是一個公差為2的等差數(shù)列,即ak+1=ak+2,初始值為1;b為一個符號位,其值在+1和-1之間來回變化,即bk+1=–1*bk,初值為1。42voidmain()

{

intnum=0; //總項數(shù)

doublepi=0,a=1.0,b=1.0,c=1.0;//a為分母,b為分子

while(fabs(c)>1e-6)

{

pi=pi+c; //累加每一項

num=num+1; //總項數(shù)加1

a=a+2.0; //計算下一項的分母

b=-b; //分子變正負號

c=b/a; //計算下一項

}pi=4.0*pi;

printf("pi=%.6f\n",pi);

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

}43運行結(jié)果:

pi=3.141591,num=500000循環(huán)控制條件不同,則得到的精度不同:將1e-6變?yōu)?e-7:pi=3.141592,num=5000000將1e-6變?yōu)?e-5:pi=3.141573,num=50000將1e-6變?yōu)?e-4:pi=3.141393,num=5000445.5.3求兩個整數(shù)的最小公倍數(shù)問題分析:假設這兩個整數(shù)為x,y,且x>y,令它們的最小公倍數(shù)為z。z一定會大于或等于x;z=kx,k=1,2,…;z一定會被y整除。45基本思路:令k=1,2,3,4,…,則kx=x,2x,3x,4x,…,即以x為公差的等差數(shù)列,那么z即為該數(shù)列當中能被y整除的最小整數(shù)。因此,我們可以用循環(huán)語句來尋找該數(shù)。46第一步z=x=5 5%3!=0不能整除第二步z=2x=10 10%3!=0不能整除第三步z=3x=15 15%3==0 能整除找到了z,15就是5和3的最小公倍數(shù)舉例來說:

x=5,y=3.47

intx,y,z,temp,k;printf("請輸入兩個整數(shù),用空格隔開:");

scanf("%d%d",&x,&y);

if(x<y)

{

temp=x;x=y;y=temp;//x=y;y=x;?

}

for(k=1;;k++)

{

z=k*x;

if(z%y==0)break;

}

printf("最小公倍數(shù)為:%d\n",z);實現(xiàn)方法之一48

intx,y,z,temp;printf("請輸入兩個整數(shù),用空格隔開:");

scanf("%d%d",&x,&y);

if(x<y) //讓x表示兩者中的大數(shù)

{

temp=x;x=y;y=temp;

}

z=x;

while(z%y!=0) //當z不能被y整除時,就讓z累加x

{

z=z+x;

}

printf("最小公倍數(shù)為:%d\n",z);實現(xiàn)方法之二49思考題:在程序當中為什么先要把x設定為兩者之中的大數(shù),若不這么做,程序是否正確?如果不正確,為什么?如果正確,那么這兩種做法有何區(qū)別?505.5.4顯示二維圖形問題描述: 在屏幕上顯示下列二維圖形。******************51******************問題分析:假設有m行n列,對于每一行來說,都需要連續(xù)畫n個*,似乎用一重循環(huán)已經(jīng)無法滿足題目要求,需要在循環(huán)里面再嵌套一層循環(huán),即多重循環(huán)。52重復m遍做以下的事情{

重復n遍做以下的事情

{

打印一個*號

}

換到下一行;}基本思路:53intm=3,n=6,i,j; for(i=1;i<=m;i++) //外循環(huán),打印3行{for(j=1;j<=n;j++) //內(nèi)循環(huán),打印1行

{

printf(“*”);}printf(“\n”); //換行}嵌套的循環(huán)54問題描述: 在屏幕上顯示下列二維圖形。***************另一個二維圖形有何規(guī)律?55introw=5,i,j; for(i=1;i<=row;i++) //外循環(huán),打印5行{for(j=1;j<=i;j++) //內(nèi)循環(huán),每行i個*

{

printf(“*”);}printf(“\n”); //換行}56問題描述: 在屏幕上顯示下列二維圖形。***************再一個二維圖形對于第i行,先打印(i–1)個空格;再打印(5–i+1)個星號。57introw=5,i,j; for(i=1;i<=row;i++) //外循環(huán),打印5行{for(j=1;j<=i–1;j++)//打印i-1個空格

{

printf(“”);}

for(j=i;j<=row;j++)//打印row–i+1個*

{printf(“*”);}printf(“\n”); //換行}58for(j=1;j<=i–1;j++)printf(“”);//打印i-1個空格for(j=i;j<=row;j++)printf(“*”);//打印row–i+1個*i=1(第一行):for(j=1;j<=0;j++)printf(“”);//0個空格for(j=1;j<=row;j++)printf(“*”);//5個星號i=2(第二行):for(j=1;j<=1;j++)printf(“”);//1個空格for(j=2;j<=row;j++)printf(“*”);//4個星號i=5(第五行):for(j=1;j<=4;j++)printf(“”);//4個空格for(j=5;j<=row;j++)printf(“*”);//1個星號……595.5.5誰做的好事?清華附中有四位同學中的一位做了好事,不留名,表揚信來了之后,校長問這四位是誰做的好事。

A說:不是我。

B說:是C。

C說:是D。

D說:他胡說。已知三個人說的是真話,一個人說的是假話?,F(xiàn)在要根據(jù)這些信息,找出做了好事的人。問題描述:注:這個例子和本課程的其他一些例子,來自于吳文虎老師的講義,在此表示感謝。60下面,我們把四個人說的四句話寫成關(guān)系表達

式。在聲明變量時,讓thisman表示要找的人,

定義他為字符型變量。charthisman;讓“==”的含義為“是”讓“!=”的含義為“不是”61A說:不是我。寫成關(guān)系表達式為(thisman!=‘A’)B說:是C。寫成關(guān)系表達式為(thisman=

=‘C’)C說:是D。寫成關(guān)系表達式為(thisman=

=‘D’)D說:他胡說。寫成關(guān)系表達式為(thisman!=‘D’)相應字符的ASCII碼值為:字符 ‘A’ ‘B’‘C’‘D’ASCII碼值6566 676862顯然,不是'A'做的好事(四個關(guān)系表達式值的和為1)思路分析(1):如何找到該人,一定是“先假設某人是做好事者,

然后到每句話中去測試看有幾句是真話”。“有三句

是真話就確定是該人,否則換下一人再試”。比如,

先假定是A同學,讓thisman=‘A’,代入到四句話中:A說:thisman!='A'; 'A'!='A' 假,值為0。

B說:thisman=='C'; 'A'=='C' 假,值為0。

C說:thisman=='D'; 'A'=='D' 假,值為0。

D說:thisman!='D'; 'A'!='D' 真,值為1。63思路分析(2):顯然,不是‘B’所為(四個關(guān)系表達式值的和為2)再試B同學,讓thisman=‘B’;代入到四句話中A說:thisman!=‘A’; ‘B’!=‘A’ 真,值為1。

B說:thisman==‘C’; ‘B’==‘C’ 假,值為0。

C說:thisman==‘D’; ‘B’==‘D’ 假,值為0。

D說:thisman!=‘D’;‘B’!=‘D’真,值為1。64再試C同學,讓thisman=‘C’;代入到四句話中A說:thisman!=‘A’; ‘C’!=‘A’ 真,值為1。

B說:thisman==‘C’; ‘C’==‘C’ 真,值為1。

C說:thisman==‘D’; ‘C’==‘D’ 假,值為0。

D說:thisman!=‘D’;‘C’!=‘D’真,值為1。顯然,就是‘C’做了好事(四個關(guān)系表達式值的和

為3),這時,我們可以理出頭緒,要用所謂的枚

舉法,一個人一個人地去試,四句話中有三句為

真,該人即為所求。思路分析(3):65//thisman分別賦值為'A','B','C','D'for(thisman='A';thisman<='D';thisman++)

{

sum=(thisman!='A') //A的話是否為真

+(thisman=='C') //B的話是否為真

+(thisman=='D') //C的話是否為真

+(thisman!='D'); //D的話是否為真

if(sum==3)

{

printf(“Thismanis%c\n”,thisman);

break;

}

}從編寫程序的角度看,實現(xiàn)枚舉最好用循環(huán)結(jié)構(gòu)。665.5.6案件分析問題描述:某地刑偵大隊涉及六個嫌疑人的一樁疑案進行分析:

A、B至少有一人參與該案件;

A、D不可能是同案犯;

A、E、F三人中有兩人參與該案件;

B、C或同時參與,或與本案無關(guān);

C、D中有且僅有一人參與該案件;如果D沒有參與該案件,則E也不可能參與。試編寫一程序,將犯罪嫌疑人找出來。67思路分析(1):顯然這是或的關(guān)系,因此有

CC1=(A||B)將案情的每一條線索寫成邏輯表達式,第一條用

CC1表示,第二條用CC2表示,……A B CC10 0 0

1 0 1

0 1 1

1 1 1CC1:

A、B至少有一人參與該案件令變量A表示A是否參與該案件,A={0,1};

變量B表示B是否參與該案件,B={0,1};68思路分析(2):A D CC20 0 1

1 0 1

0 1 1

1 1 0CC2:

A、D不可能是同案犯

A是案犯,D不是案犯,寫成A&&(!D)D是案犯,A不是案犯,寫成D&&(!A)A、D都不是案犯,寫成(!A)&&(!D)這三者是或的關(guān)系,因此有:

CC2=(A&&(!D))||(D&&(!A))

||((!A)&&(!D))

等價于:CC2=!(A&&D)=(!A||!D)69思路分析(3):CC3:

A、E、F三人中有兩人參與該案件。分析有三

種可能:第一種,A和E參與,F(xiàn)不參與,寫成A&&E&&(!F)

第二種,A和F參與,E不參與,寫成A&&F&&(!E)

第三種,E和F參與,A不參與,寫成E&&F&&(!A)這三者是或的關(guān)系,因此有:CC3=(A&&E&&(!F))

||(A&&F&&(!E))

||(E&&F&&(!A))70AEFA&&E&&(!F)A&&F&&(!E)E&&F&&(!A)CC311100001101001101010101100110010000010000010000000000000CC3的真值表71思路分析(4):CC4:

B、C或同時參與,或與本案無關(guān),分析有兩種

可能:第一種,同時參與,寫成B&&C

第二種,都與本案無關(guān),寫成!B&&!C這兩者是或的關(guān)系,因此有:

CC4=(B&&C)||(!B&&!C)CC5:

C、D中有且僅有一人參與該案件,可分析為;CC5=(C&&!D)||(D&&!C)72思路分析(5):CC6:如果D沒有參與該案件,則E也不可能參與。這是一種蘊涵關(guān)系,可寫成:

!D!E蘊涵關(guān)系的規(guī)律是PQ等價于!P||Q,因此上式等價于:

CC6=D||!E以上是案情分析,已經(jīng)化成了計算機可解的邏輯

表達式。73枚舉組合!6個人每個人都有作案或不作案兩種可能,因此有26種組合,從這些組合中挑出符合6條分析的作案者。

定義6個整數(shù)變量,A,B,C,D,E,F(xiàn),分別表示6個人。枚舉每個人的可能性{0,1}

讓0表示不是罪犯;讓1表示就是罪犯。采取枚舉方法,枚舉什么呢?74for(A=0;A<=1;A++)

for(B=0;B<=1;B++)

for(C=0;C<=1;C++)

for(D=0;D<=1;D++)

for(E=0;E<=1;E++)

for(F=0;F<=1;F++)

{

CC1=A||B;

CC2=!A||!D;

CC3=(A&&E&&!F)||(A&&F&&!E)

||(E&&F&&!A);

CC4=(B&&C)||(!B&&!C);

CC5=(C&&!D)||(D&&!C);

CC6=D||!E;

if(CC1+CC2+CC3+CC4+CC5+CC6==6)

{

printf("犯罪嫌疑人是:%c%c%c%c%c%c\n",

A?'A':'',B?'B':'',C?'C':'',

D?'D':'',E?'E':'',F?'F':'');

}

}75犯罪嫌疑人是:ABCF

A、B至少有一人參與該案件;

A、D不可能是同案犯;

A、E、F三人中有兩人參與該案件;

B、C或同時參與,或與本案無關(guān);

C、D中有且僅有一人參與該案件;如果D沒有參與該案件,則E也不可能參與。765.5.7求質(zhì)數(shù)問題描述:求100以內(nèi)的所有質(zhì)數(shù)。問題分析:(1)對100以內(nèi)的每一個整數(shù),判斷其是否為質(zhì)數(shù);(2)判斷整數(shù)m是否為質(zhì)數(shù)的方法:讓m被2到除,如果m能被其中的任何一個整數(shù)整除,則說明它不是一個質(zhì)數(shù);否則的話,說明它是一個質(zhì)數(shù)。77inti,j,sq,num;num=0;

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

{

sq=(int)sqrt(i);

for(j=2;j<=sq;j++)

{

if(i%j==0)break;

}

if(j>sq)

{

printf("%2d",i);

num++;

if(num%10==0)printf("\n");

}

}78

2357111317192329313741434753596167717379838997795.5.8猜數(shù)游戲問題描述:猜數(shù)游戲。計算機隨機地選擇一個在0-999之間的整數(shù),然后讓人來猜。如果猜測的數(shù)字大于實際的數(shù)字,就提示說太大了;否則就提示說太小了??偣仓唤o10次機會。80

隨機數(shù)說明:1、要產(chǎn)生隨機數(shù)需要在程序開頭加入頭文件

#include<s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論