數(shù)統(tǒng)學(xué)院級畢業(yè)論文選題庫(選題)_第1頁
數(shù)統(tǒng)學(xué)院級畢業(yè)論文選題庫(選題)_第2頁
數(shù)統(tǒng)學(xué)院級畢業(yè)論文選題庫(選題)_第3頁
數(shù)統(tǒng)學(xué)院級畢業(yè)論文選題庫(選題)_第4頁
數(shù)統(tǒng)學(xué)院級畢業(yè)論文選題庫(選題)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1第六章數(shù)組“同構(gòu)數(shù)〞是指這樣的數(shù):它恰好出現(xiàn)在其平方數(shù)的右邊。例如376*376=141376

試找出100000以內(nèi)的全部同構(gòu)數(shù)。#include<iostream.h>voidmain(){inta,b=1,c=0,i;for(i=0;i<=100000;i++){a=i;while(a>0){a=a\10;b=b*10;if(a*a%b==a)cout<<a<<“是同構(gòu)數(shù)〞;}#include<iostream.h>voidmain(){inttgs〔void〕;cout<<tgs();}inttgs(){inta,b=1,c=0,i;for(i=0;i<=100000;i++){a=i;while(a>0){a=a\10;b=b*10;if(a*a%b==a)returna;}}}#include<iostream.h>voidmain(){inttgs〔void〕;}inttgs(){inta,b=1,c=0,i;for(i=0;i<=100000;i++){a=i;while(a>0){a=a\10;b=b*10;if(a*a%b==a)cout<<a<<“是同構(gòu)數(shù)〞;}}}voidmain(){inta,b=1,c=0,i;inttgh(int);for(i=0;i<=100000;i++){if(tgs(i)==1)cout<<i<<“是同構(gòu)數(shù)〞;}}inttgs(intc){inta,b=1,i;a=c;while(a>0){a=a\10;b=b*10;if(a*a%b==a)return1;elsereturn0;}}}輸入一個字符,如果該字符是英文字母,那么打印出該字母的ASCII碼,要求可以輸入任意字符?!埠瘮?shù)〕#include<iostream.h>voidmain(){intzh(char);chara;cin>>a;cout<<“ascii值等于〞<<zh(a);}intzh(chara){if(a>=‘a(chǎn)’&&a<=‘z’||a>=‘A’&&a<=‘Z’)returnint(a);}#include<iostream.h>voidmain(){intzh(char);intb;chara;cin>>a;if((b=zh(a))!=888)cout<<“ascii值等于〞<<b;elsecout<<“該數(shù)據(jù)不是字母〞;}intzh(chara){if(a>=‘a(chǎn)’&&a<=‘z’||a>=‘A’&&a<=‘Z’)returnint(a);elsereturn888;}一個球從100m高度自由落體,每次落地后反彈回原來高度的一半。求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高。voidmain(){floatx=100,y=x/2;for(inti=2;i<=10;i++){x=x+y*2;y=y/2;}cout<<“共經(jīng)過〞?<<x<<“米〞;cout<<“第10次反彈〞<<x<<“米〞;}數(shù)組數(shù)組是有序數(shù)據(jù)的集合,特點是數(shù)組中的元素類型相同,元素個數(shù)確定。用同樣的數(shù)組名和不同的下標來唯一地確定數(shù)組中的各個元素。數(shù)組專用于處理大量同類型數(shù)據(jù)。一、一位數(shù)組的定義只有一個下標值的數(shù)組稱一維數(shù)組。

定義格式:類型說明符數(shù)組名[常量表達式]

inta[10]charb[23]

說明:1、數(shù)組名取名規(guī)那么和變量名一樣。2、變量名后面的常量表達式用[]。3、常量表達式表示數(shù)組的長度。4、常量表達式必為常量,并且不能對數(shù)組長度做動態(tài)的定義。intn,a[n];cin>>n;a[n]=10;第六章數(shù)組

二、一維數(shù)組的引用引用格式:數(shù)組名[下標]〔下標可為常量,也可為表達式〕inta[10];a[0]、a[1]、a[2]、a[3]、……注:定義了某個數(shù)組變量后該數(shù)組變量的起始元素的下標是從0開始。Intb[12];b[0]b[11]數(shù)組必須先定義后使用。數(shù)組中每一個元素都可以作為一個變量來訪問

main()

{inta[3],sum;

a[0]=1;

a[1]=2;

a[2]=3;

sum=a[1]-a[0]+a[2];

cout<<a[1];cout<<a[0];cout<<a[2]<<sum;}三、一維數(shù)組的初始化

1、用輸入語句使數(shù)組初始化。inta[10]cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7]>>a[8]>>a[9];inta[10],I;for(I=0;I<=9;I++)cin>>a[I];for(I=0;I<=9;I++)cout<<a[I];輸入100個數(shù),再按與輸入相反的順序輸出。main(){inti,a[100];for(i=0;i<100,i++)cin>>a[i];for(i=99;i>=0;i--)cout<<a[i];}2、用賦值語句賦值類型說明符數(shù)組名[長度]={數(shù)值表};〔1〕在定義數(shù)組時對數(shù)組元素賦以初值。inta[5]={0,1,2,3,4};只給一局部元素賦值:inta[5]={0,1,2};

在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度。inta[5]={0,1,2,3,4};inta[]={0,1,2,3,4};假設(shè)被定義的數(shù)組長度與提供的初值個數(shù)不同,那么數(shù)組長度不能省略。編寫一個程序把輸入的十進制轉(zhuǎn)換為八進制main(){intdecimal,I,j;chartrans[20];cout<<“輸入一個十進制數(shù):〞;cin>>decimal;I=0;While(decimal!=0){trans[I++]=decimal%8+’0’;//把數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的字符decimal=decimal/8;}for(j=I-1;j>=0;j--)cout<<trans[j];}例:用起泡法對10個數(shù)由小到大排序。〔將相鄰的兩個數(shù)比較,將小的調(diào)前面〕98520第一輪:一89520二859208529085209三四五第二輪:52089一二三四582095280952089第三輪:85209一25089二20589三第四輪:20589一02589二總結(jié):5個數(shù)比較四輪;第一輪:兩兩比較4次第二輪:兩兩比較3次第三輪:兩兩比較2次第四輪:兩兩比較1次如果有n個數(shù),要進行n-1輪比較,第i輪比較中兩兩比較要進行n-i次。如果有n個數(shù),要進行n-1輪比較,第j輪比較中兩兩比較要進行n-j次。for(j=1;j<=n-1;j++)for(i=1;i<=n-j;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++){if(a[i]>a[i+1])

{t=a[i];a[i]=a[i+1];a[i+1]=t;}}一般,元素的序號從0開始,因此,程序可以變動如下:求Fibonacci數(shù)列:1,1,2,3,5,8,......的前20個數(shù),即

F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n>=3)2113853211....f[7]f[6]f[5]f[5]f[4]f[3]f[2]f[1]f[0]f[i]=f[i-1]+f[i-2]voidmain(void){inti;intf[20]={1,1};

for(i=2;i<20;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<20;i++){if(i%5==0)cout<<“\n”;cout<<f[i]<<‘\t’;}}17下面程序的運行結(jié)果是:voidmain(void){inta[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;cout<<a[i]<<‘\t’;}}ia[i]3440-4隨機a[5]a[4]a[3]a[2]a[1]a[0]輸出:-404431-42034445318二維數(shù)組的定義和引用一、定義方式:

類型說明符

數(shù)組名[常量表達式][常量表達式];int

a[3][4];其元素分別為:a[0][0],a[0][1],a[0][2],a[0][3], a[1][0],a[1][1],a[1][2],a[1][3],

a[2][0],a[2][1],a[2][2],a[2][3]說明a數(shù)組由3×4個int型元素組成定義類型數(shù)組名行數(shù)列數(shù)19其行列的序號均從0開始。假設(shè)存放首地址為2000H,那么在內(nèi)存中為:a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]2000H2008H2010H2014H201cH2020H2028H202cH即在內(nèi)存中,多維數(shù)組依然是直線順序排列的,第一個元素位于最低地址處。其元素分別為:a[0][0],a[0][1],a[0][2],a[0][3], a[1][0],a[1][1],a[1][2],a[1][3],

a[2][0],a[2][1],a[2][2],a[2][3]20二、二維數(shù)組的引用與一維數(shù)組一樣,二維數(shù)組必須先定義,其維數(shù)必須是常量。具體引用時〔賦值、運算、輸出〕其元素等同于變量。voidmain(void){inta[2][3],i,j;cout<<“Input2*3numbers\n〞;for(i=0;i<2;i++)/*輸入*/for(j=0;j<3;j++)cin>>a[i][j];for(i=0;i<2;i++)/*輸出*/{for(j=0;j<3;j++)cout<<a[i][j]<<‘\t’;cout<<“\n〞;}}輸入:123456<CR>輸出:___1___2___3___4___5___6定義賦值輸出21三、二維數(shù)組的初始化在定義數(shù)組的同時給數(shù)組元素賦值。即在編譯階段給數(shù)組所在的內(nèi)存賦值。1、分行賦值inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2、順序賦值inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};//依次賦值223、局部賦值inta[3][4]={{1},{5},{9}};

/*a[0][0]=1,a[1][0]=5,a[2][0]=9其余元素為0*/inta[3][4]={{0,1},{5}};/*a[0][0]=0,a[0][1]=1,a[1][0]=5*/

100050009000010050000000234、分行或全部賦值時,可以省略第一維,第二維不可省。inta[][4]={{1,2},{5,6,7,8,}{9,10,11,12}};5、不能給數(shù)組整體賦值,只能一個一個地賦值。inta[2][3]={1,2,3,.....,12};voidmain(void){inta[3][3],i,j;for(i=0;i<3;i++){for(j=0;j<3;j++)if(i==2)a[i][j]=a[i-1][a[i-1][j]]+1;elsea[i][j]=j;cout<<a[i][j]<<‘\t’;}cout<<“\n〞;}i=0a[0][0]=0a[0][1]=1a[0][2]=2i=1a[1][0]=0a[1][1]=1a[1][2]=2a[2][0]=a[1][a[1][0]]+1=a[1][0]+1=1i=2a[2][1]=a[1][a[1][1]]+1=a[1][1]+1=2a[2][2]=a[1][a[1][2]]+1=a[1][2]+1=3輸出:___0___1___2___0___1___2___1___2___325有一個3×4的矩陣,要求編程序求出其中值最大的那個元素的值,以及其所在的行號和列號。

25max=a[0][0];//使max開始時取a[0][0]的值

for(i=0;i<=2;i++)//從第0行到第2行

for(j=0;j<=3;j++)//從第0列到第3列

if(a[i][j]>max)//如果某元素大于max{max=a[i][j];//max將取該元素的值

row=i;//記下該元素的行號icolum=j;//記下該元素的列號j}cout<<row<<‘\t’<<colum<<‘\t’<<max<<endl;26將數(shù)組行列式互換。1 2 35 67 8 91 4 72 5 83 6 9for(i=0;i<3;i++)for(j=0;j<3;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}for(i=0;i<3;i++)for(j=0;j<i;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}27以下程序用于從鍵盤上輸入假設(shè)干個學(xué)生的成績,統(tǒng)計出平均成績,并輸出低于平均成績的學(xué)生成績。輸入負數(shù)結(jié)束voidmain(){floatx[100],sum=0,ave,a;intn=0,i;cout<<“Inputscore\n〞;_________;while(__________){x[n]=a;_______;_________cin>>a;}ave=sum/n;cout<<“ave=“<<ave<<endl;for(i=0;_____;i++)if(__________)cout<<“x[“<<i<<“]〞<<x[i]<<endl;cin>>aa>=0sum+=an++i<nx[i]<ave28已有一個已排好序的數(shù)組,今輸入一個數(shù),要求按原來排序的規(guī)律將它插入數(shù)組中。

36913345678輸入:cin>>x;25369132534567836913345678x25y2534342936913345678x25y25343436913255678x3434y34565630voidmain(void){inta[6]={1,4,7,10,12};intx;for(inti=0;i<5;i++)cout<<a[i]<<'\t';cout<<endl;cout<<"Inputx:";cin>>x;for(i=0;i<5;i++){if(a[i]>x) break;} for(intj=i;j<=5;j++) { inty=a[j]; a[j]=x; x=y; } for(i=0;i<6;i++) cout<<a[i]<<'\t'; cout<<endl;}輸入一個數(shù)從頭比較大于這個數(shù)退出將這個數(shù)插入3136913345678ab輸入:cin>>x;25369132534567832voidmain(void){inta[6]={1,4,7,10,12};intb[6];intx;for(inti=0;i<5;i++) cout<<a[i]<<'\t';cout<<endl;cout<<"Inputx:";cin>>x;for(i=0;i<5;i++) if(a[i]<x) b[i]=a[i]; else break;b[i]=x;for(intj=i;j<5;j++) b[j+1]=a[j];for(i=0;i<6;i++) cout<<b[i]<<'\t';cout<<endl;}小于這個數(shù)賦值大于這個數(shù)退出重新開始賦值3336913345678a輸入:cin>>x;2578563425for(i=n-1;i>=0;i--)從后向前循環(huán)34voidmain(void){inta[6]={2,5,8,10,12};intx;for(inti=0;i<5;i++) cout<<a[i]<<'\t';cout<<endl;cout<<"Inputx:";cin>>x;for(i=4;i>0;i--){if(a[i]>x) a[i+1]=a[i];else break;}

a[i+1]=x;for(i=0;i<6;i++) cout<<a[i]<<'\t';cout<<endl;}關(guān)鍵!從后面開始循環(huán)從前向后移數(shù)不大于退出循環(huán)賦值35數(shù)組作為函數(shù)參數(shù)一、數(shù)組元素作函數(shù)參數(shù)數(shù)組元素作函數(shù)實參,用法與一般變量作實參相同,是“值傳遞〞。36有兩個數(shù)據(jù)系列分別為:inta[8]={26,1007,956,705,574,371,416,517};intb[8]={994,631,772,201,262,763,1000,781};求第三個數(shù)據(jù)系列c,要求c中的數(shù)據(jù)是ab中對應(yīng)數(shù)的最大公約數(shù)。inta[8]={26,1007,956,705,574,371,416,517};intb[8]={994,631,772,201,262,763,1000,781};c[8]={2,1,4,3,2,7,8,11}如果有一個自然數(shù)a能被自然數(shù)b整除,那么稱a為b的倍數(shù),b為a的約數(shù)。幾個自然數(shù)公有的約數(shù),叫做這幾個自然數(shù)的公約數(shù)。公約數(shù)中最大的一個公約數(shù),稱為這幾個自然數(shù)的最大公約數(shù)。歐幾里德算法是古希臘求兩個正整數(shù)的最大公約數(shù)的算法,其方法是用較大的數(shù)除以較小的數(shù),上面較小的除數(shù)和得出的余數(shù)構(gòu)成新的一對數(shù),繼續(xù)做上面的除法,直到出現(xiàn)能夠整除的兩個數(shù),其中較小的數(shù)〔即除數(shù)〕就是最大公約數(shù)。以求288和123的最大公約數(shù)為例,操作如下:288÷123=2余42123÷42=2余3942÷39=1余339÷3=13所以3就是288和123的最大公約數(shù)38intgys(intm,intn){intr;if(m<n){r=m;m=n;n=r;}while(r=m%n){m=n;n=r;}returnn;}voidmain(void){inta[8]={26,1007,956,705,574,371,416,517};intb[8]={994,631,772,201,262,763,1000,781};intc[8];for(inti=0;i<8;i++)

c[i]=gys(a[i],b[i]); //對應(yīng)元素的公約數(shù)

for(i=0;i<8;i++) cout<<c[i]<<'\t';cout<<endl;}求m,n的最大公約數(shù),作為函數(shù)值返回循環(huán)求對應(yīng)數(shù)組元素的最大公約數(shù)39二、用數(shù)組名作函數(shù)參數(shù)用數(shù)組名作函數(shù)參數(shù),實參與形參都應(yīng)用數(shù)組名。這時,函數(shù)傳遞的是數(shù)組在內(nèi)存中的地址。在C++中,數(shù)組名被認為是數(shù)組在內(nèi)存中存放的首地址。實參中的數(shù)組地址傳到形參中,實參形參共用同一段內(nèi)存。40voidfun(inta[2]){for(inti=0;i<2;i++)a[i]=a[i]*a[i];}voidmain(void){intb[2]={2,4};cout<<b[0]<<‘\t’<<b[1]<<endl;fun(b);cout<<b[0]<<‘\t’<<b[1]<<endl;}24b2000H2004Hb就是2000Haa同樣為數(shù)組首地址,也是2000H2000H數(shù)組b和數(shù)組a占據(jù)同一段內(nèi)存416輸出:2441641voidsort(intx[],intn){intt,i,j;for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)if(x[j]>x[j+1]){t=x[j];x[j]=x[j+1];x[j+1]=t;}}voidmain(void){inta[5]={20,4,16,8,10};sort(a,5);for(inti=0;i<5;i++)cout<<a[i]<<'\t';}20416810ax1610842042有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,求平均成績。voidmain(void){staticfloatscore[10]={100,90,...};floataver;

aver=average(score);cout<<“aver=“<<aver<<‘\n’;}floataverage(floatarray[]){inti;floataver,sum=array[0];for(i=1;i<10;i++)sum=sum+array[i];aver=sum/10;returnaver;}數(shù)組名作函數(shù)實參數(shù)組名作函數(shù)形參43注意:1、用數(shù)組名作函數(shù)參數(shù),應(yīng)在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組,且類型一致。2、需指定實參數(shù)組大小,形參數(shù)組的大小可不指定。數(shù)組名作實參實際上是傳遞數(shù)組的首地址。443、C++語言規(guī)定,數(shù)組名代表數(shù)組在內(nèi)存中存儲的首地址,這樣,數(shù)組名作函數(shù)實參,實際上傳遞的是數(shù)組在內(nèi)存中的首地址。實參和形參共占一段內(nèi)存單元,形參數(shù)組中的值發(fā)生變化,也相當于實參數(shù)組中的值發(fā)生變化。score[8]score[6]score[4]score[2]score[0]array[8]array[6]array[4]array[2]array[0]scorearray45voidsub1(inta[]){for(inti=0;i<10;i++)a[i]=i+i;}voidsub2(inta[]){intmax,i;max=5;for(i=0;i<max;i++)a[i]=i;}voidsub3(inta[]){inti;for(i=0;i<10;i++)cout<<a[i]<<‘\t’;cout<<endl;

}voidmain(void){inta[10],i;sub1(a);sub3(a);sub2(a);sub3(a);}輸出:02468101214161801234101214161846編寫程序,在被調(diào)函數(shù)中刪去一維數(shù)組中所有相同的數(shù),使之只剩一個,數(shù)組中的數(shù)已按由小到大的順序排列,被調(diào)函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個數(shù)。例如:原數(shù)組:2223445666677899101010刪除后:234567891047字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組是字符數(shù)組,字符數(shù)組中的一個元素存放一個字符。一、字符數(shù)組的定義char數(shù)組名[常量表達式];charc[4];/*每個元素占一個字節(jié)*/c[0]=‘I’;c[1]=‘m’;c[2]=‘_’;類型數(shù)組名數(shù)組大小48二、字符數(shù)組的初始化與數(shù)值數(shù)組的初始化相同,取其相應(yīng)字符的ASCII值。charc[10]={‘I’,‘’,‘a(chǎn)’,‘m’,‘’,‘a(chǎn)’,‘’,‘b’,‘o’,‘y’};隨機‘y’‘o’‘b’‘’‘a(chǎn)’‘’‘m’‘a(chǎn)’‘’‘I’cc[0]c[9]49如果字符個數(shù)大于數(shù)組長度,做錯誤處理;如果數(shù)值個數(shù)小于數(shù)組長度,后面的字節(jié)全部為‘\0’。如果省略數(shù)組長度,那么字符數(shù)即為數(shù)組長度。同理,也可定義和初始化一個二維或多維的字符數(shù)組。分層或省略最后一維。charst1[]={65,66,68};‘A’‘B’‘D’50三、字符數(shù)組的引用voidmain(void){charc[10]={‘I’,‘’,‘a(chǎn)’,‘m’,‘’,‘a(chǎn)’,‘’,‘b’,‘o’,‘y’};inti;for(i=0;i<10;i++)cout<<c[i];cout<<“\n〞;}定義輸出51四、字符串和字符串結(jié)束標志C++語言將字符串作為字符數(shù)組來處理。字符串常量:“CHINA〞,在機內(nèi)被處理成一個無名的字符型一維數(shù)組。CHINA‘\0’C++語言中約定用‘\0’作為字符串的結(jié)束標志,它占內(nèi)存空間,但不計入串長度。有了結(jié)束標志‘\0’后,程序往往依據(jù)它判斷字符串是否結(jié)束,而不是根據(jù)定義時設(shè)定的長度。52字符串與字符數(shù)組的區(qū)別:chara[]={‘C’,’H’,’I’,’N’,’A’};charc[]=“CHINA〞;隨機隨機ANIHC長度占5個字節(jié)隨機‘\0’ANIHC長度占6個字節(jié)字符數(shù)組字符串53可以用字符串的形式為字符數(shù)組賦初值charc[]={“Iamaboy〞};/*長度11字節(jié),以‘\0’結(jié)尾*/chara[]={‘I’,‘’,‘a(chǎn)’,‘m’,‘’,‘a(chǎn)’,‘’,‘b’,‘o’,‘y’};/*長度10字節(jié)*/如果數(shù)組定義的長度大于字符串的長度,后面均為‘\0’。charc[10]=“CHINA〞;‘\0’‘\0’‘\0’‘\0’‘\0’ANIHCc‘\0’的ASCII為0,而‘’(空格)的ASCII為32。54charw[]={‘T’,‘u’,‘r’,‘b’,‘o’,‘\0’};Turbo‘\0’charw[]={“Turbo\0〞};Turbo‘\0’charw[]=“Turbo\0〞;Turbo‘\0’charw[]=‘Turbo\0’;非法55chara[2][5]={“abcd〞,“ABCD〞};abcd‘\0’ABCD‘\0’在語句中字符數(shù)組不能用賦值語句整體賦值。charstr[12];str=“TheString”;str為字符數(shù)組在內(nèi)存中存儲的地址,一經(jīng)定義,便成為常量,不可再賦值。charstr[12]=“TheString〞;非法,在語句中賦值定義數(shù)組,開辟空間時賦初值56字符數(shù)組的輸入輸出逐個字符的輸入輸出。這種輸入輸出的方法,通常是使用循環(huán)語句來實現(xiàn)的。如: charstr[10]; cout<<“輸入十個字符:〞; for(inti=0;i<10;i++) cin>>str[i]; ......A行將輸入的十個字符依次送給數(shù)組str中的各個元素。定義賦值57字符串輸入輸出。對于一維字符串數(shù)組的輸入,在cin中僅給出數(shù)組名;輸出時,在cout中也只給出數(shù)組名。voidmain(void){chars1[50],s2[60];cout<<“輸入二個字符串:〞;cin>>s1;cin>>s2;cout<<“\ns1=“<<s1;cout<<“\ns2=“<<s2<<“\n〞;

}輸入:abcd<CR> string<CR>cin只能輸入一個單詞,不能輸入一行單詞。數(shù)組名數(shù)組名輸出到‘\0’為止58當要把輸入的一行作為一個字符串送到字符數(shù)組中時,那么要使用函數(shù)cin.getline()。這個函數(shù)的第一個參數(shù)為字符數(shù)組名,第二個參數(shù)為允許輸入的最大字符個數(shù)。cin.getline(數(shù)組名,數(shù)組空間數(shù));chars1[80];.......cin.getline(s1,80);首先開辟空間參數(shù)是數(shù)組名59voidmain(void){chars3[81];cout<<〞輸入一行字符串:〞;cin.getline(s3,80); //Acout<<〞s3=〞<<s3<<’\n’; //B}當輸入行中的字符個數(shù)小于80時,將實際輸入的字符串〔不包括換行符〕全部送給s3;當輸入行中的字符個數(shù)大于80時,只取前面的80個字符送給字符串。定義從鍵盤接收一行字符輸出到‘\0’為止60從鍵盤輸入一行字符,統(tǒng)計其中分別有多少大小寫字母,以$號結(jié)束輸入。從鍵盤輸入一行字符,統(tǒng)計其中分別有多少大小寫字母。從鍵盤輸入一行字符,其中的大寫變小寫,小寫變大寫。61從鍵盤接收一行字符,統(tǒng)計有多少個單詞數(shù)?wearestudents.weares字母字母空格空格字母字母字母空格字母不能用字母數(shù)或空格數(shù)來判斷,只能用字母和空格狀態(tài)變化的次數(shù)來判斷。設(shè)狀態(tài)變量word,判別到字母時word為1,判別到非字母時word為0。word的初始值為0,當從0變?yōu)?時,單詞數(shù)加1。011001110162voidmain(void){chars[80];inti=0,word=0,num=0;cin.getline(s,80);while(s[i]!='\0'){if((s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')&&word==0){ word=1; num++;}elseif(s[i]==''||s[i]=='\t')

word=0;i++;

}cout<<"num="<<num<<endl;}說明前一字符非字母改變狀態(tài),防止繼續(xù)對下一字母計數(shù)改變狀態(tài),碰到下一個字母時開始計數(shù)63六、字符串處理函數(shù)C++中沒有對字符串變量進行賦值、合并、比較的運算符,但提供了許多字符串處理函數(shù),用戶可以調(diào)用#include“string.h〞所有字符串處理函數(shù)的實參都是字符數(shù)組名641、合并兩個字符串的函數(shù)strcat(str1,str2)staticcharstr1[20]={“Iama〞};staticcharstr2[]={“boy〞};strcat(str1,str2);Iama'\0''\0'boy‘\0’Iamaboy'\0'將第二個字符串str2接到第一個字符串

str1后。注意:第一個字符串要有足夠的空間。空間足夠大652、復(fù)制兩個字符串的函數(shù)strcpy(str1,str2)staticcharstr1[20]={“Iama〞};staticcharstr2[]={“boy〞};strcpy(str1,str2);'\0''\0'amaIstr1'\0'yobstr2'\0''\0'a'\0'yobstr1strcpy(str1,“CHINA〞);'\0'ANIHCstr1strcpy(“CHINA〞,str1);str1=str2;str1=“CHINA〞;字符串正確賦值均為非法663、比較兩個字符串的函數(shù)strcmp(str1,str2)此函數(shù)用來比較str1和str2中字符串的內(nèi)容。函數(shù)對字符串中的ASCII字符逐個兩兩比較,直到遇到不同字符或‘\0’為止。函數(shù)值由兩個對應(yīng)字符相減而得。該函數(shù)具有返回值,返回值是兩字符串對應(yīng)的第一個不同的ASCII碼的差值。假設(shè)兩個字符串完全相同,函數(shù)值為0。if(strcmp(str1,str2)==0){........}用來判斷兩字符串是否相等67staticcharstr1[20]={“CHINA〞};staticcharstr2[]={“CHINB〞};cout<<strcmp(str1,str2)<<endl;輸出:-1staticcharstr1[20]={“CHINA〞};staticcharstr2[]={“AHINB〞};cout<<strcmp(str1,str2)<<endl;輸出:2if(str1==str2)cout<<“yes\n〞;if(strcmp(str1,str2)==0)cout<<“yes\n〞;非法正確684、求字符串長度的函數(shù)strlen(str1)長度不包括‘\0’。函數(shù)參數(shù)為數(shù)組名,返回值為數(shù)組首字母到‘\0’的長度。并非數(shù)組在內(nèi)存中空間的大小。chars[80];strcpy(s,“abcd〞);cout<<strlen(s)<<endl;輸出:4‘\0’‘\0’a‘\0’yobstr1輸出:3cout<<strlen(str1)<<endl;cout<<siziof(s)<<endl;輸出:80695、strlwr(str1)將str1中的大寫字母轉(zhuǎn)換成小寫字母。6、strupr(str1)將str1中的小寫字母轉(zhuǎn)換成大寫字母。707、函數(shù)strncmp(字符串1,字符串2,maxlen)函數(shù)原型為:intstrncmp(charstr1[],charstr2[],intm)第三個參數(shù)為正整數(shù),它限定了至多比較的字符個數(shù)假設(shè)字符串1或字符串2的長度小于maxlen的值時,函數(shù)的功能與strcmp()相同。當二個字符串的長度均大于maxlen的值時,maxlen為至多要比較的

溫馨提示

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

評論

0/150

提交評論