西安交通大學(xué)C復(fù)習(xí)課件_第1頁
西安交通大學(xué)C復(fù)習(xí)課件_第2頁
西安交通大學(xué)C復(fù)習(xí)課件_第3頁
西安交通大學(xué)C復(fù)習(xí)課件_第4頁
西安交通大學(xué)C復(fù)習(xí)課件_第5頁
已閱讀5頁,還剩209頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

0楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第2章習(xí)題計算機(jī)程序設(shè)計(C++)0楊琦第2章習(xí)題計算機(jī)程序設(shè)計(C++)12.溫度轉(zhuǎn)換。輸入華氏溫度,用下列公式將其轉(zhuǎn)換為攝氏溫度并輸出。樣例輸入輸出18026.666712.溫度轉(zhuǎn)換。輸入華氏溫度,用下列公式將其轉(zhuǎn)換為攝氏溫度并2#include<iostream>usingnamespacestd;intmain(){ doublec,f; cin>>f; c=5.0/9*(f-32); cout<<c<<endl;

return0;}2#include<iostream>33.編程試求函數(shù)

當(dāng)x→0時的極限。提示:三角函數(shù)的值是通過數(shù)學(xué)函數(shù)sin(x)(正弦)、cos(x)(余弦)來計算的(函數(shù)使用見附錄)。輸入的數(shù)值逐步變小,不要輸入0。樣例輸入輸出:輸入:10輸出:153433.編程試求函數(shù)樣例輸入輸出:4#include<iostream>#include<cmath>usingnamespacestd;intmain(){ doublex,y; cin>>x; y=sin(x*x)/(1-cos(x)); cout<<y<<endl;return0;}4#include<iostream>55.編程實現(xiàn),用戶從鍵盤輸入3個整數(shù),計算并打印這三個數(shù)的和、平均值及平均值的四舍五入整數(shù)值。提示:直接將double型數(shù)轉(zhuǎn)換為int型數(shù),得到整數(shù)結(jié)果。請先實現(xiàn)小數(shù)部分大于等于0.5時整數(shù)加1,再取整(轉(zhuǎn)換為int型數(shù))。樣例輸入輸出1568196.33333655.編程實現(xiàn),用戶從鍵盤輸入3個整數(shù),計算并打印這三個數(shù)的6intmain(){ inta,b,c,x,z; doubley; cin>>a>>b>>c; x=a+b+c; y=x/3.0; z=(int)(y+0.5); cout<<x<<endl; cout<<y<<endl; cout<<z<<endl; return0;}6intmain(){76.找零錢。為顧客找零錢時,希望選用的紙幣張數(shù)最少。例如73元,希望零錢的面值為五十元1張,二十元1張,一元3張。設(shè)零錢面值有五十元、二十元、十元、五元和一元,請編寫程序,用戶輸入100以下的數(shù),計算找給顧客的各面值的紙幣張數(shù)。并在程序中想一個驗證結(jié)果是否正確的辦法。樣例輸入輸出741100476.找零錢。為顧客找零錢時,希望選用的紙幣張數(shù)最少。例如78intmain(){ intx,y[5]; cin>>x; y[0]=x/50; x=x%50; y[1]=x/20; x=x%20; y[2]=x/10; x=x%10; y[3]=x/5; x=x%5; y[4]=x/1; x=x%1; for(inti=0;i<5;i++) cout<<y[i]<<""; cout<<endl;return0;}8intmain(){97.小寫轉(zhuǎn)大寫。用戶輸入小寫字母,程序輸出對應(yīng)的大寫字母。樣例輸入輸出dD97.小寫轉(zhuǎn)大寫。用戶輸入小寫字母,程序輸出對應(yīng)的大寫字母。10#include<iostream>usingnamespacestd;intmain(){ charc; cin>>c; if(c>='a'&&c<='z') c=c-'a'+'A'; cout<<c<<endl;return0;}10#include<iostream>118.打印ASCII碼。輸入一個字符(可能為字母、數(shù)字或標(biāo)點符號等),在一行中打印該字符及該字符的ASCII的十進(jìn)制、十六進(jìn)制形式和八進(jìn)制形式,數(shù)據(jù)之間用’’分隔。提示,輸出八進(jìn)制數(shù)使用cout<<oct<<v;的格式,其中v是待輸出的整型變量。樣例輸入輸出AA6541101118.打印ASCII碼。輸入一個字符(可能為字母、數(shù)字或12#include<iostream>#include<cmath>usingnamespacestd;intmain(){ charc; cin>>c; cout<<c<<""<<(int)c<<""<<hex<<(int)c<<""<<oct<<(int)c<<endl;return0;}12#include<iostream>1310.用戶以字符形式輸入4個數(shù)字字符,將其組成一個4位的整數(shù)。例如,用戶輸入:2011,輸出結(jié)果為2011。注意,輸入的四個數(shù)字是字符型,用四個字符型變量存儲,而2011是由它們構(gòu)造出的一個四位整數(shù),用一個整型變量表示。樣例輸入輸出2011201140221310.用戶以字符形式輸入4個數(shù)字字符,將其組成一個4位14intmain(){ charc1,c2,c3,c4;

inty; cin>>c1>>c2>>c3>>c4; y=c1-'0'; y=y*10+c2-'0'; y=y*10+c3-'0'; y=y*10+c4-'0'; cout<<y<<""<<2*y<<endl; return0;}14intmain(){15楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第3章習(xí)題計算機(jī)程序設(shè)計(C++)15楊琦第3章習(xí)題計算機(jī)程序設(shè)計(C++)165.編程計算前N個奇數(shù)的和,N由用戶輸入。如N=4,和為16,1+3+5+7=16。樣例輸入輸出:輸入:4輸出:16165.編程計算前N個奇數(shù)的和,N由用戶輸入。如N=4,和17#include<iostream>usingnamespacestd;intmain(){ intN,sum,i; cin>>N; sum=0; for(i=1;i<2*N;i=i+2) sum=sum+i; cout<<sum<<endl; return0;}17#include<iostream>189.求π的近似值。將arctan(x)在x=0展開,得當(dāng)x=1時,arctan(x)=π/4,從而這個級數(shù)即可以計算arctan(x)的近似值,又可以計算π的近似值:利用上式編程計算π的近似值,精確到小數(shù)點后10位。樣例輸入輸出:輸入:1e-5輸出:3.14157189.求π的近似值。將arctan(x)在x=0展開,得19intmain(){ doublepi=0,u=1,eps=1e-5; intn=1,s=1; cin>>eps; while(u>eps) { pi=pi+s*u; n=n+2; s=-s; u=1.0/n; } cout<<4*pi<<endl; return0;}19intmain(){2010.輸入n(n<13),計算1!+2!+3!+4!+...+n!樣例輸入輸出:輸入:6輸出:8732010.輸入n(n<13),計算1!+2!+3!+4!+21#include<iostream>usingnamespacestd;intmain(){ inti,n,u=1,sum=0;//u為通項的值,sum為總和

cin>>n; for(i=1;i<=n;i++) { u=u*i; sum=sum+u; } cout<<sum<<endl; return0;}21#include<iostream>227.1202年,意大利數(shù)學(xué)家列奧納多(LeonardoPisano,外號Fabonacci斐波那契),在他的《算盤全書》中描述了一個關(guān)于兔子繁殖的問題。如果一對兔子每月能繁殖一對小兔,每對小兔在第三個月成熟,又能生出一對小兔。假定在不死亡的情況下,由一對小兔開始,10個月后有多少對兔子?輸入:5輸出:5120.62.76667227.1202年,意大利數(shù)學(xué)家列奧納多(Leonardo23intmain(){ intsum=0,n,i; intf[100]={0,1};

doublesum1=0,a[100]={0,1}; cin>>n; for(i=1;i<=n;i++) { if(i>=2)f[i]=f[i-1]+f[i-2]; sum+=f[i]; a[i]=1.0*f[i-1]/f[i]; sum1+=a[i]; } cout<<f[n]<<""<<sum<<endl; cout<<a[n]<<""<<sum1<<endl; return0;}23intmain(){ intsum=0,n,i; i2413.求a+aa+aaa+aaaa+...+aa...a(第n項,n個a),其中a是1~9的整數(shù)。例如,a=1,n=3時,式子為1+11+111;當(dāng)a=5,n=4時,式子為5+55+555+5555。樣例輸入輸出:輸入:25輸出:246902413.求a+aa+aaa+aaaa+...+aa...25intmain(){ inta,n,u=0,sum=0; inti; cin>>a>>n; for(i=1;i<=n;i++) { u=u*10+a; sum=sum+u; } cout<<sum<<endl; return0;}25intmain(){2614.arcsin(x)寫成級數(shù)形式為:用戶輸入x,利用該式,計算反正弦函數(shù)的值。結(jié)束條件可以設(shè)為|u|<ε,其中u為通項。提示:通項最好利用前一項。2614.arcsin(x)寫成級數(shù)形式為:27constdoublep=1e-7;intmain(){ doublearcsinx,x,u; intn; cin>>x; u=x; arcsinx=x; n=1; while(u>=p) { u=u*(2*n-1)*(2*n-1)*x*x/2/n/(2*n+1); arcsinx=arcsinx+u; n++; } cout<<arcsinx<<endl; return0;}27constdoublep=1e-7;2815.猴子吃桃問題。第一天,猴子摘下一堆桃子,當(dāng)天吃了一半,感覺沒吃夠,又饒了一個。以后每天如此,到第10天的時候,發(fā)現(xiàn)只剩下一個桃子了。編程計算第一天猴子摘了多少桃子。樣例輸入輸出:輸入:10輸出:15342815.猴子吃桃問題。第一天,猴子摘下一堆桃子,當(dāng)天吃了29intmain(){ intsum; inti,n; sum=1;

cin>>n; for(i=n-1;i>=1;i--) { sum=(sum+1)*2;

} cout<<sum<<endl;return0;}29intmain(){3016.誰是小偷。某小區(qū)發(fā)生盜竊案,有四個人嫌疑最大,警察找來訊問,A說:不是我。B說:是C。C說:是D。D說:他冤枉人。三人中有一人說了假話,請編程分析誰是小偷?樣例輸入輸出:Cisathief3016.誰是小偷。某小區(qū)發(fā)生盜竊案,有四個人嫌疑最大,警31#include<iostream>usingnamespacestd;intmain(){intx;for(x=1;x<=4;x=x+1)if((x!=1)+(x==3)+(x==4)+(x!=4)==3)cout<<char(64+x)<<"isathief"<<endl; return0;}31#include<iostream>32楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第4章習(xí)題計算機(jī)程序設(shè)計(C++)32楊琦第4章習(xí)題計算機(jī)程序設(shè)計(C++)331.編寫程序,將N(N<10)階方陣轉(zhuǎn)置,例如:

331.編寫程序,將N(N<10)階方陣轉(zhuǎn)置,例如:34#include<iostream>usingnamespacestd;intmain(){ doublea[10][10],ta[10][10]; intN=10,M=10; inti,j; cin>>M; N=M; for(i=0;i<M;i=i+1) { for(j=0;j<N;j=j+1) cin>>a[i][j]; }34#include<iostream>35 cout<<"矩陣a為:"<<endl; for(i=0;i<N;i=i+1) { for(intj=0;j<M;j=j+1) cout<<a[i][j]<<""; cout<<endl; } for(i=0;i<N;i=i+1)

{ for(j=0;j<M;j=j+1) ta[i][j]=a[j][i];

}35 cout<<"矩陣a為:"<<endl;36 cout<<"矩陣a的轉(zhuǎn)置陣為:"<<endl;

for(i=0;i<N;i=i+1) { for(intj=0;j<M;j=j+1)

cout<<ta[i][j]<<""; cout<<endl;

} return0;}

36 cout<<"矩陣a的轉(zhuǎn)置陣為:"<<endl37

3.打印楊輝三角形。樣例輸入輸出:輸入:6輸出:111121133114641151010511615201561373.打印楊輝三角形。樣例輸入輸出:38#include<iostream>usingnamespacestd;intmain(){ inta[20][20]; intn,i,j; cin>>n; for(i=0;i<=n;i++) { a[i][0]=1; a[i][i]=1; for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<=n;i++) { for(j=0;j<=i;j++) cout<<a[i][j]<<""; cout<<endl; } return0;}38#include<iostream>39

5.矩陣用一維數(shù)組存儲,判斷矩陣是否是對稱矩陣樣例輸入輸出:512321是對稱矩陣395.矩陣用一維數(shù)組存儲,判斷矩陣是否是對稱矩陣樣例輸40intmain(){ inta[100]; intn,i,y=1; cin>>n; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n/2;i++) { if(a[i]!=a[n-1-i]) { y=0; break; } } if(y==1)cout<<"是對稱矩陣"<<endl; else cout<<"不是對稱矩陣"<<endl; return0;}40intmain(){41

7.編寫程序,去掉字符串尾部的空格符樣例輸入輸出:Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]417.編寫程序,去掉字符串尾部的空格符樣例輸入輸出:42#include<iostream>usingnamespacestd;char*mytrim(char*string){ char*ptr=string; while(*ptr!=0) ptr++; do { ptr--; }while(*ptr==''); *(ptr+1)=0; returnstring;}42#include<iostream>43intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100); cout<<"截取前的原始字符串是:["<<str<<']'<<endl; cout<<"截取空格后的字符串是:["<<mytrim(str)<<']'<<endl; return0;}43intmain()448.編寫程序,去掉字符串開頭的空格符樣例輸入輸出:

Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]448.編寫程序,去掉字符串開頭的空格符樣例輸入輸出:45#include<iostream>#include<cstring>usingnamespacestd;char*myltrim(char*string){ char*ptr=string;

while(*ptr=='') ptr++; strcpy(string,ptr); returnstring;}45#include<iostream>46intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100); cout<<"截取前的原始字符串是:["<<str<<']'<<endl; cout<<"截取空格后的字符串是:["<<myltrim(str)<<']'<<endl; return0;}46intmain()4711.編寫程序,將數(shù)字組成的字符串轉(zhuǎn)換為整數(shù),例如“1757”(字符串)轉(zhuǎn)換為1757(整形數(shù)),要能處理負(fù)數(shù)。樣例輸入輸出:

-529轉(zhuǎn)換后整型數(shù)值的立方是:-1480358894711.編寫程序,將數(shù)字組成的字符串轉(zhuǎn)換為整數(shù),例如“148intmyatoi(char*string){ intnum=0; ints=1; while(*string!='\0') { if(*string=='-') s=-s; elseif(*string=='+') s=s; elseif(*string>='0'&&*string<='9') num=num*10+*string-'0'; string++; } returns*num;}48intmyatoi(char*string){49intmain(){ charstr[50]; intn; cin>>str; n=myatoi(str); cout<<"轉(zhuǎn)換后整型數(shù)值的立方是:"<<n*n*n<<endl; return0;}49intmain()50楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第5章習(xí)題計算機(jī)程序設(shè)計(C++)50楊琦第5章習(xí)題計算機(jī)程序設(shè)計(C++)1.函數(shù)index(t,s)用于確定字符串t是否是s的子串,若不是,則函數(shù)返回-1,否則返回子串t在s中第一次出現(xiàn)時的第一個字符的下標(biāo)。樣例輸入輸出abcdefghijkcdef21.函數(shù)index(t,s)用于確定字符串t是否是s的子串intIndex(char*s,char*t){ intn=strlen(s),m=strlen(t); inti,j; for(j=0;j<=n-m;j++) { for(i=0;i<m;i++) if(t[i]!=s[i+j]) break; if(i==m) returnj; } return-1;}intIndex(char*s,char*t){intmain(){ chars[100]="abcdefghijk",t[100]="cdef"; cin>>s>>t; cout<<Index(s,t)<<endl; return0;}intmain()5.求出200~1000之間所有這樣的整數(shù),它們的各位數(shù)字之和等于5。樣例輸入輸出2032122212303023113204014105005.求出200~1000之間所有這樣的整數(shù),它們的各位數(shù)字intmain(){ intx,y,z;

for(inti=200;i<1000;i++) { x=i%10;

y=i/10%10; z=i/100%10; if(x+y+z==5)cout<<i<<"";

} cout<<endl;return0;}intmain(){6.編寫程序計算p=n!/(r!(n-r)!)(n>r)。樣例輸入輸出3136.編寫程序計算p=n!/(r!(n-r)!)(n>rintfac(intn){ intx=1; if(n<0) return-1; elseif(n==0) return1; else { while(n>1) { x=x*n; n--;

} } returnx;}intfac(intn){intmain(){ intn,r,p;

cin>>n>>r; p=fac(n)/fac(r)/fac(n-r);

cout<<p<<endl; return0;}intmain()7.從鍵盤上輸入一個大于4的整數(shù),然后將從4開始到該數(shù)之間的所有整數(shù)分解為兩個素數(shù)之和,顯示出每個整數(shù)的分解情況,例如:4=2+2,6=3+3,8=3+5等。樣例輸入輸出88=3+57.從鍵盤上輸入一個大于4的整數(shù),然后將從4開始到該數(shù)之間intisprime(intn){ inti; for(i=2;i<=n/2;i++) if(n%i==0) return0; return1;}intisprime(intn)intmain(){ intn; cin>>n;

for(inti=2;i<n;i++) { if(isprime(i)&&isprime(n-i)) { cout<<n<<"="<<i<<"+"<<n-i<<endl; break; } }return0;}intmain(){8.編寫函數(shù),用選擇法對10個數(shù)進(jìn)行從小到大的排序。樣例輸入輸出141633411478157241846719169244642650026962293588.編寫函數(shù),用選擇法對10個數(shù)進(jìn)行從小到大的排序。樣例輸voidSort(inta[],intCount){ inti,j,x; for(i=0;i<Count;i++) { for(j=Count-1;j>i;j--) if(a[j]<a[j-1]) x=a[j];a[j]=a[j-1];a[j-1]=x; }}voidSort(inta[],intCount)intmain(){ inti,x; constintCount=10; inta[Count]; cin>>x; srand(x); for(i=0;i<Count;i++) a[i]=rand(); Sort(a,Count); for(i=0;i<Count;i++) cout<<a[i]<<""; cout<<endl; return0;}intmain(){9.寫一個判斷素數(shù)的函數(shù),在主調(diào)函數(shù)中輸入一個整數(shù)后,由該函數(shù)輸出是否是素數(shù)的信息。樣例輸入輸出44不是素數(shù)9.寫一個判斷素數(shù)的函數(shù),在主調(diào)函數(shù)中輸入一個整數(shù)后,由該intisprime(intn){ inti; for(i=2;i<=n/2;i++) if(n%i==0) return0; return1;}intisprime(intn)intmain(){ intn; cin>>n; if(isprime(n)) cout<<n<<"是素數(shù)"<<endl; else cout<<n<<"不是素數(shù)"<<endl;return0;}intmain()10.編寫函數(shù)fun,它的功能是:計算正整數(shù)n的除1和n之外的所有因子之和,并返回此值。樣例輸入輸出4210.編寫函數(shù)fun,它的功能是:計算正整數(shù)n的除1和n之intfactor(intn){ inti,y=0; for(i=2;i<=n/2;i++) if(n%i==0) y=y+i; returny;}intfactor(intn)intmain(){ intn; cin>>n;

cout<<factor(n)<<endl; return0;}intmain()11.編寫函數(shù)fun,它的功能是:計算下列級數(shù)的和,并返回此值。(其中n和x由鍵盤輸入)

S=1+x+x2/2!+x3/3!+…+xn/n!,樣例輸入輸出1122.7182811.編寫函數(shù)fun,它的功能是:計算下列級數(shù)的和,并返回doublefun(doublex,doublen){ doubles=1; doublei=1,a=1; for(i=1;i<=n;i++) { a=a*x/i; s=s+a; } returns;}doublefun(doublex,doublen)intmain(){ doublex; doublen; cin>>x>>n; cout<<fun(x,n)<<endl; return0;}intmain()12.編寫函數(shù)fun,它的功能是:計算1~n之間能同時被3、5和7整除的所有自然數(shù)之和,并返回此值。樣例輸入輸出20010512.編寫函數(shù)fun,它的功能是:計算1~n之間能同時被3intfun(intn){ ints=0,i=0; while(i<n) { i=i+1; if(i%3==0&&i%5==0&&i%7==0) { s=s+i; } } returns;}intfun(intn)intmain(){ intn; cin>>n; cout<<fun(n)<<endl; return0;}intmain()

13.從鍵盤輸入兩個整數(shù)m和n,然后從m+1開始找出大于m的n個素數(shù)。樣例輸入輸出567111317192313.從鍵盤輸入兩個整數(shù)m和n,然后從m+1開始找出大boolisprime(intb){ inta; for(a=2;a<=b/2;a++) if(b%a==0) returnfalse; returntrue;}boolisprime(intb)intmain(){ intm,n; inti,s=0; cin>>m>>n; for(i=m+1;s<n;i++) { if(isprime(i)) { cout<<i<<""; s=s+1; } } cout<<endl; return0;}intmain(){

14.從鍵盤輸入10個字符串,找出其中最大者并輸出,假定每個字符串長度不超過80個字符。樣例輸入JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctober輸出September14.從鍵盤輸入10個字符串,找出其中最大者并輸出,假intmain(){ stringa[10]; intj; for(j=0;j<10;j++) cin>>a[j]; stringmax=a[0]; inti; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; } cout<<max<<endl; return0;}intmain(){15.用弦截法求一元非線性方程=在區(qū)間[0.5,0.6]中的根。樣例輸入輸出0.50.60.56714315.用弦截法求一元非線性方程=在區(qū)間[0.5,0.6]中constdoubleEPS=1.0E-9;doublef(doublex){ returnx*exp(x)-1;}constdoubleEPS=1.0E-9;intmain(){ doublex0,x1,x2; do {

cin>>x0>>x1; }while(f(x0)*f(x1)>0);

do { x2=x0-(x0-x1)/(f(x0)-f(x1))*f(x0);

if(f(x2)*f(x1)>0)x1=x2; if(f(x2)*f(x0)>0)x0=x2; }while(fabs(f(x2))>EPS); cout<<x2<<endl; return0;}intmain(){ doublex0,x1,x2;

17.使用梯形法計算定積分的值。樣例輸入輸出0110000.45969817.使用梯形法計算定積分的值。樣例輸入輸出#include<iostream>#include<cmath>usingnamespacestd;doublefun(doublex){ returnsin(x);}#include<iostream>intmain(){ doublea=0,b=1,s=0,h; inti,n;

cin>>a>>b>>n; h=(b-a)/n;

s=(fun(a)+fun(b))/2; for(i=1;i<n;i++) { s=s+fun(a+i*h); } cout<<s*h<<endl;

return0;}intmain(){88楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.10第6章習(xí)題計算機(jī)程序設(shè)計(C++)88楊琦第6章習(xí)題計算機(jī)程序設(shè)計(C++)

2.從鍵盤輸入10個字符串,假定每個字符串長度不超過80個字符,然后對這10個字符串進(jìn)行排序,最后輸出排序后的結(jié)果。樣例輸入輸出abcacdfuimiucadgjibuiloihioiklabcacdbuicadfuigjihioiklloimiu2.從鍵盤輸入10個字符串,假定每個字符串長度不超過80voidmysort(string*p,intcount){ strings;

for(inti=0;i<count-1;i++) { for(intj=0;j<count-i-1;j++) {

if(p[j]>p[j+1]) { s=p[j]; p[j]=p[j+1]; p[j+1]=s; } } }}voidmysort(string*p,intcounintmain(){ stringp[10]; inti; for(i=0;i<10;i++) cin>>p[i]; mysort(p,10); for(i=0;i<10;i++) cout<<p[i]<<""; cout<<endl; return0;}intmain()

3.編寫函數(shù),求出一個字符串的長度,要求使用地址傳遞。樣例輸入輸出jskdlfjklsjfl133.編寫函數(shù),求出一個字符串的長度,要求使用地址傳遞。樣例intmystrlen(char*s){ intm=0; while(*s!='\0') { s++; m++; } returnm;}intmystrlen(char*s)intmain(){ char*p=newchar[200]; intn=0;// cout<<"請輸入字符串:"<<endl; cin>>p; n=mystrlen(p); cout<<n<<endl; return0;}intmain()

4.編寫函數(shù),將一個字符串中指定的字符刪去,然后輸出新的字符串。樣例輸入輸出jlkdjfdkdjlkjfk4.編寫函數(shù),將一個字符串中指定的字符刪去,然后輸出新的#include<iostream>#include<cstring>usingnamespacestd;char*mydelchr(char*s,chard){ chart[200]; inti=0,j=0; while(s[i]!='\0') { if(s[i]==d) i++; else t[j++]=s[i++]; } t[j]='\0'; strcpy(s,t); returns;}#include<iostream>intmain(){ charstr[200]; charch; cin>>str; cin>>ch; mydelchr(str,ch); cout<<str<<endl; return0;}intmain()

5.用指針數(shù)組保存12個月份的英文名稱,輸入一個月份后,顯示該月的英文名稱,例如,輸入1,則顯示“January”,如果輸入的月份值不在1~12之間,則顯示“InputError”信息。樣例輸入輸出12December5.用指針數(shù)組保存12個月份的英文名稱,輸入一個月份后,顯intmain(){ char*p[13]={"InputError","January","February","March","April","May","June","July","August","September","October","November","December"}; inti;// cout<<"請輸入月份數(shù)值:"<<endl; cin>>i; if((i>=0)&&(i<=12)) cout<<p[i]<<endl; return0;}intmain(){

6.編寫函數(shù),將一個字符串中所有的大寫字母轉(zhuǎn)換為小寫字母,所有的小寫字母轉(zhuǎn)換為大寫字母,函數(shù)調(diào)用時使用地址傳遞。樣例輸入輸出asdfASDFASDFasdf6.編寫函數(shù),將一個字符串中所有的大寫字母轉(zhuǎn)換為小寫字母char*Convert(char*str){ char*p=str; while(*str!='\0') { if(*str>='A'&&*str<='Z') *str=*str-'A'+'a'; elseif(*str>='a'&&*str<='z') *str=*str-'a'+'A'; str++; } returnp;}char*Convert(char*str){intmain(){ char*p=newchar[200];// cout<<"請輸入字符串:"<<endl; cin>>p; p=Convert(p); cout<<p<<endl; return0;}intmain()

7.編寫函數(shù),統(tǒng)計一個字符串中的大寫字母、小寫字母、數(shù)字字符和其他字符的個數(shù)。樣例輸入輸出asdfJKLM[],.1234大寫字母個數(shù)為:4小寫字母個數(shù)為:4數(shù)字字符個數(shù)為:4其他字符個數(shù)為:47.編寫函數(shù),統(tǒng)計一個字符串中的大寫字母、小寫字母、數(shù)字字intmain(){ char*p,str[200]; inti=0,j=0,k=0,length=0;// cout<<"請輸入字符串:"<<endl; cin>>str; for(p=str;*p!='\0';p++) { if(*p>='A'&&*p<='Z') i++; elseif(*p>='a'&&*p<='z') j++; elseif(*p>='0'&&*p<='9') k++; length++; }intmain(){ cout<<"大寫字母個數(shù)為:"<<i<<endl; cout<<"小寫字母個數(shù)為:"<<j<<endl; cout<<"數(shù)字字符個數(shù)為:"<<k<<endl; cout<<"其他字符個數(shù)為:"<<length-i-j-k<<endl; return0;} cout<<"大寫字母個數(shù)為:"<<i<<endl;學(xué)好程序設(shè)計語言的唯一途徑是

你的編程能力與你在計算機(jī)上投入的時間成

上機(jī)練習(xí)正比學(xué)好程序設(shè)計語言的唯一途徑是上機(jī)練習(xí)正比107楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第2章習(xí)題計算機(jī)程序設(shè)計(C++)0楊琦第2章習(xí)題計算機(jī)程序設(shè)計(C++)1082.溫度轉(zhuǎn)換。輸入華氏溫度,用下列公式將其轉(zhuǎn)換為攝氏溫度并輸出。樣例輸入輸出18026.666712.溫度轉(zhuǎn)換。輸入華氏溫度,用下列公式將其轉(zhuǎn)換為攝氏溫度并109#include<iostream>usingnamespacestd;intmain(){ doublec,f; cin>>f; c=5.0/9*(f-32); cout<<c<<endl;

return0;}2#include<iostream>1103.編程試求函數(shù)

當(dāng)x→0時的極限。提示:三角函數(shù)的值是通過數(shù)學(xué)函數(shù)sin(x)(正弦)、cos(x)(余弦)來計算的(函數(shù)使用見附錄)。輸入的數(shù)值逐步變小,不要輸入0。樣例輸入輸出:輸入:10輸出:153433.編程試求函數(shù)樣例輸入輸出:111#include<iostream>#include<cmath>usingnamespacestd;intmain(){ doublex,y; cin>>x; y=sin(x*x)/(1-cos(x)); cout<<y<<endl;return0;}4#include<iostream>1125.編程實現(xiàn),用戶從鍵盤輸入3個整數(shù),計算并打印這三個數(shù)的和、平均值及平均值的四舍五入整數(shù)值。提示:直接將double型數(shù)轉(zhuǎn)換為int型數(shù),得到整數(shù)結(jié)果。請先實現(xiàn)小數(shù)部分大于等于0.5時整數(shù)加1,再取整(轉(zhuǎn)換為int型數(shù))。樣例輸入輸出1568196.33333655.編程實現(xiàn),用戶從鍵盤輸入3個整數(shù),計算并打印這三個數(shù)的113intmain(){ inta,b,c,x,z; doubley; cin>>a>>b>>c; x=a+b+c; y=x/3.0; z=(int)(y+0.5); cout<<x<<endl; cout<<y<<endl; cout<<z<<endl; return0;}6intmain(){1146.找零錢。為顧客找零錢時,希望選用的紙幣張數(shù)最少。例如73元,希望零錢的面值為五十元1張,二十元1張,一元3張。設(shè)零錢面值有五十元、二十元、十元、五元和一元,請編寫程序,用戶輸入100以下的數(shù),計算找給顧客的各面值的紙幣張數(shù)。并在程序中想一個驗證結(jié)果是否正確的辦法。樣例輸入輸出741100476.找零錢。為顧客找零錢時,希望選用的紙幣張數(shù)最少。例如7115intmain(){ intx,y[5]; cin>>x; y[0]=x/50; x=x%50; y[1]=x/20; x=x%20; y[2]=x/10; x=x%10; y[3]=x/5; x=x%5; y[4]=x/1; x=x%1; for(inti=0;i<5;i++) cout<<y[i]<<""; cout<<endl;return0;}8intmain(){1167.小寫轉(zhuǎn)大寫。用戶輸入小寫字母,程序輸出對應(yīng)的大寫字母。樣例輸入輸出dD97.小寫轉(zhuǎn)大寫。用戶輸入小寫字母,程序輸出對應(yīng)的大寫字母。117#include<iostream>usingnamespacestd;intmain(){ charc; cin>>c; if(c>='a'&&c<='z') c=c-'a'+'A'; cout<<c<<endl;return0;}10#include<iostream>1188.打印ASCII碼。輸入一個字符(可能為字母、數(shù)字或標(biāo)點符號等),在一行中打印該字符及該字符的ASCII的十進(jìn)制、十六進(jìn)制形式和八進(jìn)制形式,數(shù)據(jù)之間用’’分隔。提示,輸出八進(jìn)制數(shù)使用cout<<oct<<v;的格式,其中v是待輸出的整型變量。樣例輸入輸出AA6541101118.打印ASCII碼。輸入一個字符(可能為字母、數(shù)字或119#include<iostream>#include<cmath>usingnamespacestd;intmain(){ charc; cin>>c; cout<<c<<""<<(int)c<<""<<hex<<(int)c<<""<<oct<<(int)c<<endl;return0;}12#include<iostream>12010.用戶以字符形式輸入4個數(shù)字字符,將其組成一個4位的整數(shù)。例如,用戶輸入:2011,輸出結(jié)果為2011。注意,輸入的四個數(shù)字是字符型,用四個字符型變量存儲,而2011是由它們構(gòu)造出的一個四位整數(shù),用一個整型變量表示。樣例輸入輸出2011201140221310.用戶以字符形式輸入4個數(shù)字字符,將其組成一個4位121intmain(){ charc1,c2,c3,c4;

inty; cin>>c1>>c2>>c3>>c4; y=c1-'0'; y=y*10+c2-'0'; y=y*10+c3-'0'; y=y*10+c4-'0'; cout<<y<<""<<2*y<<endl; return0;}14intmain(){122楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第3章習(xí)題計算機(jī)程序設(shè)計(C++)15楊琦第3章習(xí)題計算機(jī)程序設(shè)計(C++)1235.編程計算前N個奇數(shù)的和,N由用戶輸入。如N=4,和為16,1+3+5+7=16。樣例輸入輸出:輸入:4輸出:16165.編程計算前N個奇數(shù)的和,N由用戶輸入。如N=4,和124#include<iostream>usingnamespacestd;intmain(){ intN,sum,i; cin>>N; sum=0; for(i=1;i<2*N;i=i+2) sum=sum+i; cout<<sum<<endl; return0;}17#include<iostream>1259.求π的近似值。將arctan(x)在x=0展開,得當(dāng)x=1時,arctan(x)=π/4,從而這個級數(shù)即可以計算arctan(x)的近似值,又可以計算π的近似值:利用上式編程計算π的近似值,精確到小數(shù)點后10位。樣例輸入輸出:輸入:1e-5輸出:3.14157189.求π的近似值。將arctan(x)在x=0展開,得126intmain(){ doublepi=0,u=1,eps=1e-5; intn=1,s=1; cin>>eps; while(u>eps) { pi=pi+s*u; n=n+2; s=-s; u=1.0/n; } cout<<4*pi<<endl; return0;}19intmain(){12710.輸入n(n<13),計算1!+2!+3!+4!+...+n!樣例輸入輸出:輸入:6輸出:8732010.輸入n(n<13),計算1!+2!+3!+4!+128#include<iostream>usingnamespacestd;intmain(){ inti,n,u=1,sum=0;//u為通項的值,sum為總和

cin>>n; for(i=1;i<=n;i++) { u=u*i; sum=sum+u; } cout<<sum<<endl; return0;}21#include<iostream>1297.1202年,意大利數(shù)學(xué)家列奧納多(LeonardoPisano,外號Fabonacci斐波那契),在他的《算盤全書》中描述了一個關(guān)于兔子繁殖的問題。如果一對兔子每月能繁殖一對小兔,每對小兔在第三個月成熟,又能生出一對小兔。假定在不死亡的情況下,由一對小兔開始,10個月后有多少對兔子?輸入:5輸出:5120.62.76667227.1202年,意大利數(shù)學(xué)家列奧納多(Leonardo130intmain(){ intsum=0,n,i; intf[100]={0,1};

doublesum1=0,a[100]={0,1}; cin>>n; for(i=1;i<=n;i++) { if(i>=2)f[i]=f[i-1]+f[i-2]; sum+=f[i]; a[i]=1.0*f[i-1]/f[i]; sum1+=a[i]; } cout<<f[n]<<""<<sum<<endl; cout<<a[n]<<""<<sum1<<endl; return0;}23intmain(){ intsum=0,n,i; i13113.求a+aa+aaa+aaaa+...+aa...a(第n項,n個a),其中a是1~9的整數(shù)。例如,a=1,n=3時,式子為1+11+111;當(dāng)a=5,n=4時,式子為5+55+555+5555。樣例輸入輸出:輸入:25輸出:246902413.求a+aa+aaa+aaaa+...+aa...132intmain(){ inta,n,u=0,sum=0; inti; cin>>a>>n; for(i=1;i<=n;i++) { u=u*10+a; sum=sum+u; } cout<<sum<<endl; return0;}25intmain(){13314.arcsin(x)寫成級數(shù)形式為:用戶輸入x,利用該式,計算反正弦函數(shù)的值。結(jié)束條件可以設(shè)為|u|<ε,其中u為通項。提示:通項最好利用前一項。2614.arcsin(x)寫成級數(shù)形式為:134constdoublep=1e-7;intmain(){ doublearcsinx,x,u; intn; cin>>x; u=x; arcsinx=x; n=1; while(u>=p) { u=u*(2*n-1)*(2*n-1)*x*x/2/n/(2*n+1); arcsinx=arcsinx+u; n++; } cout<<arcsinx<<endl; return0;}27constdoublep=1e-7;13515.猴子吃桃問題。第一天,猴子摘下一堆桃子,當(dāng)天吃了一半,感覺沒吃夠,又饒了一個。以后每天如此,到第10天的時候,發(fā)現(xiàn)只剩下一個桃子了。編程計算第一天猴子摘了多少桃子。樣例輸入輸出:輸入:10輸出:15342815.猴子吃桃問題。第一天,猴子摘下一堆桃子,當(dāng)天吃了136intmain(){ intsum; inti,n; sum=1;

cin>>n; for(i=n-1;i>=1;i--) { sum=(sum+1)*2;

} cout<<sum<<endl;return0;}29intmain(){13716.誰是小偷。某小區(qū)發(fā)生盜竊案,有四個人嫌疑最大,警察找來訊問,A說:不是我。B說:是C。C說:是D。D說:他冤枉人。三人中有一人說了假話,請編程分析誰是小偷?樣例輸入輸出:Cisathief3016.誰是小偷。某小區(qū)發(fā)生盜竊案,有四個人嫌疑最大,警138#include<iostream>usingnamespacestd;intmain(){intx;for(x=1;x<=4;x=x+1)if((x!=1)+(x==3)+(x==4)+(x!=4)==3)cout<<char(64+x)<<"isathief"<<endl; return0;}31#include<iostream>139楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第4章習(xí)題計算機(jī)程序設(shè)計(C++)32楊琦第4章習(xí)題計算機(jī)程序設(shè)計(C++)1401.編寫程序,將N(N<10)階方陣轉(zhuǎn)置,例如:

331.編寫程序,將N(N<10)階方陣轉(zhuǎn)置,例如:141#include<iostream>usingnamespacestd;intmain(){ doublea[10][10],ta[10][10]; intN=10,M=10; inti,j; cin>>M; N=M; for(i=0;i<M;i=i+1) { for(j=0;j<N;j=j+1) cin>>a[i][j]; }34#include<iostream>142 cout<<"矩陣a為:"<<endl; for(i=0;i<N;i=i+1) { for(intj=0;j<M;j=j+1) cout<<a[i][j]<<""; cout<<endl; } for(i=0;i<N;i=i+1)

{ for(j=0;j<M;j=j+1) ta[i][j]=a[j][i];

}35 cout<<"矩陣a為:"<<endl;143 cout<<"矩陣a的轉(zhuǎn)置陣為:"<<endl;

for(i=0;i<N;i=i+1) { for(intj=0;j<M;j=j+1)

cout<<ta[i][j]<<""; cout<<endl;

} return0;}

36 cout<<"矩陣a的轉(zhuǎn)置陣為:"<<endl144

3.打印楊輝三角形。樣例輸入輸出:輸入:6輸出:111121133114641151010511615201561373.打印楊輝三角形。樣例輸入輸出:145#include<iostream>usingnamespacestd;intmain(){ inta[20][20]; intn,i,j; cin>>n; for(i=0;i<=n;i++) { a[i][0]=1; a[i][i]=1; for(j=1;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i<=n;i++) { for(j=0;j<=i;j++) cout<<a[i][j]<<""; cout<<endl; } return0;}38#include<iostream>146

5.矩陣用一維數(shù)組存儲,判斷矩陣是否是對稱矩陣樣例輸入輸出:512321是對稱矩陣395.矩陣用一維數(shù)組存儲,判斷矩陣是否是對稱矩陣樣例輸147intmain(){ inta[100]; intn,i,y=1; cin>>n; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n/2;i++) { if(a[i]!=a[n-1-i]) { y=0; break; } } if(y==1)cout<<"是對稱矩陣"<<endl; else cout<<"不是對稱矩陣"<<endl; return0;}40intmain(){148

7.編寫程序,去掉字符串尾部的空格符樣例輸入輸出:Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]417.編寫程序,去掉字符串尾部的空格符樣例輸入輸出:149#include<iostream>usingnamespacestd;char*mytrim(char*string){ char*ptr=string; while(*ptr!=0) ptr++; do { ptr--; }while(*ptr==''); *(ptr+1)=0; returnstring;}42#include<iostream>150intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100); cout<<"截取前的原始字符串是:["<<str<<']'<<endl; cout<<"截取空格后的字符串是:["<<mytrim(str)<<']'<<endl; return0;}43intmain()1518.編寫程序,去掉字符串開頭的空格符樣例輸入輸出:

Theartofcomputerprogramming截取前的原始字符串是:[Theartofcomputerprogramming]截取空格后的字符串是:[Theartofcomputerprogramming]448.編寫程序,去掉字符串開頭的空格符樣例輸入輸出:152#include<iostream>#include<cstring>usingnamespacestd;char*myltrim(char*string){ char*ptr=string;

while(*ptr=='') ptr++; strcpy(string,ptr); returnstring;}45#include<iostream>153intmain(){ charstr[100]="Theartofcomputerprogramming"; cin.getline(str,100); cout<<"截取前的原始字符串是:["<<str<<']'<<endl; cout<<"截取空格后的字符串是:["<<myltrim(str)<<']'<<endl; return0;}46intmain()15411.編寫程序,將數(shù)字組成的字符串轉(zhuǎn)換為整數(shù),例如“1757”(字符串)轉(zhuǎn)換為1757(整形數(shù)),要能處理負(fù)數(shù)。樣例輸入輸出:

-529轉(zhuǎn)換后整型數(shù)值的立方是:-1480358894711.編寫程序,將數(shù)字組成的字符串轉(zhuǎn)換為整數(shù),例如“1155intmyatoi(char*string){ intnum=0; ints=1; while(*string!='\0') { if(*string=='-') s=-s; elseif(*string=='+') s=s; elseif(*string>='0'&&*string<='9') num=num*10+*string-'0'; string++; } returns*num;}48intmyatoi(char*string){156intmain(){ charstr[50]; intn; cin>>str; n=myatoi(str); cout<<"轉(zhuǎn)換后整型數(shù)值的立方是:"<<n*n*n<<endl; return0;}49intmain()157楊琦西安交通大學(xué)計算機(jī)教學(xué)實驗中心2012.8第5章習(xí)題計算機(jī)程序設(shè)計(C++)50楊琦第5章習(xí)題計算機(jī)程序設(shè)計(C++)1.函數(shù)index(t,s)用于確定字符串t是否是s的子串,若不是,則函數(shù)返回-1,否則返回子串t在s中第一次出現(xiàn)時的第一個字符的下標(biāo)。樣例輸入輸出abcdefghijkcdef21.函數(shù)index(t,s)用于確定字符串t是否是s的子串intIndex(char*s,char*t){ intn=strlen(s),m=strlen(t); inti,j; for(j=0;j<=n-m;j++) { for(i=0;i<m;i++) if(t[i]!=s[i+j]) break; if(i==m) returnj; } return-1;}intIndex(char*s,char*t){intmain(){ chars[100]="abcdefghijk",t[100]="cdef"; cin>>s>>t; cout<<Index(s,t)<<endl; return0;}intmain()5.求出200~1000之間所有這樣的整數(shù),它們的各位數(shù)字之和等于5。樣例輸入輸出2032122212303023113204014105005.求出200~1000之間所有這樣的整數(shù),它們的各位數(shù)字intmain(){ intx,y,z;

for(inti=200;i<1000;i++) { x=i%10;

y=i/10%10; z=i/100%10; if(x+y+z==5)cout<<i<<"";

} cout<<endl;return0;}intmain(){6.編寫程序計算p=n!/(r!(n-r)!)(n>r)。樣例輸入輸出3136.編寫程序計算p=n!/(r!(n-r)!)(n>rintfac(intn){ intx=1; if(n<0) return-1; elseif(n==0) return1; else { while(n>1) { x=x*n; n--;

} } returnx;}intfac(intn){intmain(){ intn,r,p;

cin>>n>>r; p=fac(n)/fac(r)/fac(n-r);

cout<<p<<endl; return0;}intmain()7.從鍵盤上輸入一個大于4的整數(shù),然后將從4開始到該數(shù)之間的所有整數(shù)分解為兩個素數(shù)之和,顯示出每個整數(shù)的分解情況,例如:4=2+2,6=3+3,8=3+5等。樣例輸入輸出88=3+57.從鍵盤上輸入一個大于4的整數(shù),然后將從4開始到該數(shù)之間intisprime(intn){ inti; for(i=2;i<=n/2;i++) if(n%i==0) return0; return1;}intisprime(intn)intmain(){ intn; cin>>n;

for(inti=2;i<n;i++) { if(isprime(i)&&isprime(n-i)) { cout<<n<<"="<<i<<"+"<<n-i<<endl; break; } }return0;}intmain(){8.編寫函數(shù),用選擇法對10個數(shù)進(jìn)行從小到大的排序。樣例輸入輸出141633411478157241846719169244642650026962293588.編寫函數(shù),用選擇法對10個

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論