50道C++編程練習(xí)題及解答-c 編程例題_第1頁
50道C++編程練習(xí)題及解答-c 編程例題_第2頁
50道C++編程練習(xí)題及解答-c 編程例題_第3頁
50道C++編程練習(xí)題及解答-c 編程例題_第4頁
50道C++編程練習(xí)題及解答-c 編程例題_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

50道C/C++編程練習(xí)題1、輸入3個數(shù),求最大值intmain(){inta,b,c,m;cin>>a>>b>>c;m=a;if(b>m)m=b;if(c>m)m=c;cout<<m;}2、編程序,求方程ax2+bx+c=0的根#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublea,b,c,d,x1,x2;cin>>a>>b>>c;if(a==0)if(b==0)cout<<"error\n";elsecout<<"x="<<-c/b<<endl;else{d=b*b-4*a*c;if(fabs(d)<=1e-6)cout<<"x1=x2="<<-b/(2*a)<<endl;elseif(d>1e-6){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);cout<<"x1="<<x1<<",x2="<<x2<<endl;}elsecout<<"方程無實根\n";}}3、輸入一個成績,打印相應(yīng)的等級intmain(){inta;cin>>a;if(a>=90)cout<<"A";elseif(a>=80)cout<<"B";elseif(a>=70)cout<<"C";elseif(a>=60)cout<<"D";elsecout<<"E";}4、輸入3個double類型的值,判斷這3個值是否可以表示一個三角形的三條邊。intmain(){doublea,b,c;cin>>a>>b>>c;if(a+b>c&&b+c>a&&c+a>b)cout<<"可以構(gòu)成三角形";elsecout<<"不可以構(gòu)成三角形";}5、輸入20個數(shù),求其最大、最小和平均值intmain(){inti;inta,max,min,s;cin>>a;max=min=a;s=a;for(i=1;i<20;i++){cin>>a;if(a>max)max=a;if(a<min)min=a;s=s+a;}cout<<max<<","<<min<<","<<s/20.0<<endl;}6、輸入若干個數(shù),設(shè)輸入的第一個數(shù)為后面要輸入的數(shù)的個數(shù),求平均值及最大值。intmain(){inta,m,s=0;cin>>n;cin>>a;m=a;s=a;for(inti=1;i<n;i++){cin>>a;s+=a;if(a>m)m=a;}cout<<"平均值:"<<(double)s/n<<",最大值:"<<m<<endl;}7、輸入若干個數(shù),輸入-999表示結(jié)束,求平均值及最大值。#include<iostream>#include<iomanip>#include<cstdlib>usingnamespacestd;intmain(){intn,count,sum,max;doubleave;count=0;cin>>n;sum=0;max=n;while(n!=-999){sum=sum+n;if(n>max)max=n;count++;cin>>n;}if(count!=0){ave=static_cast<double>(sum)/count;cout<<setiosflags(ios::fixed)<<setprecision(2);cout<<"平均值為:"<<ave<<"最大值為:"<<max<<endl;}}8、求和s=1*1+2*2+3*3+...+100*100intmain(){inti,t;doubles=0;for(i=1;i<=100;i++){t=i*i;s=s+t;}}9、印度國王的獎勵,求和s=20+21+22+...+263intmain(){doublet=1,s=0;for(inti=0;i<=63;i++){s=s+t;t=2*t;}cout<<s/1.4e8<<endl;}10、求和s=1!+2!+3!+...+10!intmain(){inti;longt,s;t=1;s=0;for(i=1;i<=10;i++){t=t*i;s=s+t;}}11、求e=1+1/1!+1/2!+1/3!+...intmain(){inti;doublet,e;i=1;t=1;e=1;while(t>=1e-7){t=t/i;e=e+t;i=i+1;}cout<<e;}12、求PI值,PI/4=1-1/3+1/5-1/7+...intmain(){inti,k;doublepi,t;i=1;t=1;pi=0;k=1;while(fabs(t)>1e-8){pi=pi+t;i=i+2;k=-k;t=double(k)/i;}cout<<4*pi;}13、求PI值,PI/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...#include<iostream>#include<cstdlib>intmain(){inti,j;doublepi,t;i=0;j=1;t=1;pi=0;while(t>1e-18){pi=pi+t;i=i+1;j=j+2;t=t*i/j;}cout<<setprecision(17)<<2*pi;}14、輸入20個數(shù),統(tǒng)計其中正數(shù)、負數(shù)和零的個數(shù)。intmain(){inta,n=0,m=0,s=0;for(inti=1;i<=20;i++){cin>>a;if(a>0)n++;elseif(a<0)m++;elses++;}cout<<n<<""<<m<<""<<s;}15、輸入若干個整數(shù),計算其中的奇數(shù)之和與偶數(shù)之和,假設(shè)輸入0表示結(jié)束。intmain(){inta,n=0,m=0;cin>>a;while(a!=0){if(a%2==0)n+=a;;elsem+=a;cin>>a;}cout<<n<<""<<m;}16、寫一函數(shù),計算x的y次方(假設(shè)x、y都為正整數(shù))。intpow(intx,inty){ints=1;for(inti=1;i<=y;i++)s=s*x;returns;}17、求水仙花數(shù)(一個三位數(shù),其各位數(shù)字立方和等于該數(shù)字本身)intmain(){inti,a,b,c;for(i=100;i<=999;i++){a=i/100;b=i/10%10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}intmain(){inti,a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++){i=a*100+b*10+c;if(i==a*a*a+b*b*b+c*c*c)cout<<i<<endl;}}18、編寫一個函數(shù),確定一個整數(shù)是否為完全數(shù)(一個數(shù),等于他的因子之和)。用這個函數(shù)確定和打印1到1000之間的所有完全數(shù)。intperfect(intn){inti,s=1;for(i=2;i<=n/2;i++)if(n%i==0)s=s+i;if(s==n)return1;elsereturn0;}intmain(){intn;for(n=2;n<=1000;n++)ifperfect(n)cout<<n<<endl;}19、寫一函數(shù),求斐波那契數(shù)列的第n項。intfib(intn){inti,f1,f2,f;if(n==1||n==2)return1;f1=1;f2=1;for(i=3;i<=n;i++){f=f1+f2;f1=f2;f2=f;}returnf;}20、寫一個函數(shù),取一個整數(shù)值并返回將此整數(shù)的各數(shù)字反序的數(shù)值intreverse(intn){ints=0;while(n){s=s*10+n%10;n/=10;};returns;}21、寫一個函數(shù),將一個整數(shù)的各位數(shù)字的反序打印voidshow(intn){while(n){cout<<n%10<<"";n/=10;};}voidshow(intn){if(n<10)cout<<n;else{cout<<n%10<<"";show(n/10);}}22、寫一個函數(shù),將一個整數(shù)的各位數(shù)字的按順序打印出來voidshow(intn){intk=1,m=n;while(m>10){k*=10;m/=10;}while(n){cout<<n/k<<"";n%=k;k/=10;};}voidshow(intn){inta[10],i=0;while(n){a[i]=n%10;n/=10;i++;}for(intj=i-1;j>=0;j--)cout<<a[j]<<"";}voidshow(intn){if(n<10)cout<<n;else{show(n/10);cout<<""<<n%10;}}23、求一個整數(shù)的各位數(shù)之和的函數(shù)intsum(intn){ints=0;while(n){s+=n%10;n/=10;};returns;}24、寫一函數(shù),判斷某個數(shù)是否素數(shù),以及求1-1000之內(nèi)的素數(shù)#include<iostream>#include<cmath>#include<stdlib.h>usingnamespacestd;boolisprime(intn){floatk=sqrt(float(n));for(inti=2;i<=k;i++)if(n%i==0)returnfalse;returntrue;}intmain(){for(intn=2;n<=1000;n++)if(isprime(n))cout<<setw(5)<<n;}25、用篩法求1-1000之內(nèi)的素數(shù)#include<iostream>#include<cmath>#include<stdlib.h>#include<iomanip>usingnamespacestd;intmain(){inti,k,a[1001];for(i=2;i<=1000;i++)a[i]=1;floats=sqrt(float(1000));for(i=2;i<=s;i++)if(a[i]==1){k=2*i;while(k<=1000){a[k]=0;k=k+i;}}for(i=2;i<=1000;i++)if(a[i]==1)cout<<setw(5)<<i;}26、判斷某一年是否閏年的函數(shù)boolIsLeapYear(inty){return(y%4==0&&y%100!=0)||(y%400==0);}27、寫一個函數(shù),交換兩個整型變量的值voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}voidswap(int&a,int&b){intt;t=a;a=b;b=t;}28、求兩個數(shù)的最大公約數(shù),歐幾里德算法(輾轉(zhuǎn)相除法)intgcd(intm,intn){intk;while(n!=0){k=m%n;m=n;n=k;}returnm;}intgcd(intm,intn){intk;while((k=m%n)!=0){m=n;n=k;}returnn;}intgcd(intm,intn){while(m!=n){if(m>n)m=m-n;elsen=n-m;}returnm;}29、求兩個數(shù)的最小公倍數(shù)intlcm(intm,intn){intt,s;if(m<n){t=m;m=n;n=t;}s=m;while(s%n!=0)s=s+m;}intlcm(intm,intn){returnm*n/gcd(m,n);}30、百錢買百雞問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一,百錢買百雞,問雞翁、母、雛各幾何?intmain(){intcock,hen,chick;for(cock=0;cock<=20;cock++)for(hen=0;hen<=33;hen++){chick=100-cock-hen;if(5*cock+3*hen+chick/3.0==100)cout<<setw(4)<<cock<<setw(4)<<hen<<setw(4)<<chick<<endl;}}31、編一程序,輸入一行字符串,統(tǒng)計其中的小寫英文字母的個數(shù)。intmain(){chars[100];cin.getline(s,100);inti=0,count=0;while(s[i]!='\0'){if(s[i]>='a'&&s[i]<='z')count++;i++;}cout<<count<<endl;}32、編一程序,輸入一行字符串,將其中的大寫英文字母改為小寫,再輸出。intmain(){chars[100];inti;cin.getline(s,100);i=0;while(s[i]!='\0')if(s[i]>='A'&&s[i]<='Z')s[i]=s[i]+32;cout<<s<<endl;}33、打印楊輝三角形(帕斯卡三角形),打印10行。#include<iostream>#include<iomanip>usingnamespacestd;intmain(){inta[10][10]={0};for(inti=0;i<10;i++){a[i][0]=1;a[i][i]=1;}for(inti=1;i<10;i++)for(intj=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(inti=0;i<10;i++){for(intj=0;j<=i;j++)cout<<setw(4)<<a[i][j];cout<<endl;}}34、打印一個九九乘法表#include<iostream>#include<iomanip>usingnamespacestd;intmain(){for(intj=1;j<=9;j++){for(inti=1;i<=j;i++)cout<<i<<"*"<<j<<"="<<setw(2)<<i*j<<"";cout<<endl;}}35、擲骰子10000次,統(tǒng)計得到各點數(shù)的次數(shù)。intmain(){inta[7]={0};srand(time(0));for(inti=1;i<=10000;++i)++a[1+rand()%6];for(inti=1;i<=6;++i)cout<<i<<":"<<a[i]<<endl;}36、編寫函數(shù)distance,計算兩點(x1,y1)和(x2,y2)之間的距離。doubledistance(doublex1,doubley1,doublex2,doubley2){returnsqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}37、寫一個程序,進行體操評分,依次輸入10名評委所評分數(shù),去除一個最高分和一個最低分,再算出平均分作為選手的得分。intmain(){inti;floatmax,min,s,x;max=0;min=10;s=0;for(i=1;i<=10;i++){cin>>x;s=s+x;if(x<min)min=x;if(x>max)max=x;}s=s-min-max;cout<<s/8;}38、寫一函數(shù),將一數(shù)組中的元素反轉(zhuǎn)。voidreverse(inta[],intn){for(inti=0;i<n/2;i++)swap(a[i],a[n-i-1]);}39、寫一函數(shù),在一個數(shù)組中找出最大元素的位置intSearchMax(inta[],intn){intk=0;for(inti=1;i<n;i++)if(a[i]>a[k])k=i;returnk;}40、找出一個二維數(shù)組中的鞍點,即該元素在該行上最大,在該列上最小。41、寫一個字符串拷貝函數(shù)voidstrcpy(char*p,constchar*q){while(*p++=*q++);}char*strcpy(char*str1,constchar*str2){char*p=str1;while(*str1++=*str2++);returnp;}42、寫一個字符串比較函數(shù)intstrcmp(char*str1,constchar*str2){while(*str1&&*str2&&*str1==*str2){str1++;str2++;}return*str1-*str2;}intstrcmp(char*str1,constchar*str2){while(*str1==*str2){if(*str1=='\0')return0;str1++;str2++;}return*str1-*str2;}43、寫一個字符串連接函數(shù)char*strcat(char*str1,char*str2){char*p=str1;while(*str1!=0)str1++;while(*str1++=*str2++);returnp;}44、寫一個求字符串長度函數(shù)intstrlen(char*str){intn=0;while(*str!='\0'){n++;str++;}returnn;}45、寫一函數(shù),在一數(shù)組里查找某個值。intsearch(inta[],intn,intkey){for(inti=0;i<n;i++)if(a[i]==key)returni;return-1;}46、編一程序,求兩個矩陣的乘積47、計算某日是某年的第幾天boolisLeapYear(inty)//判斷某一年是否閏年{return(y%4==0&&y%100!=0)||(y%400==0);}intmain(){intyear,month,day,i,s=0;inta[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31};cin>>year>>month>>day;for(i=1;i<month;i++)s=s+a[i];s=s+day;if(isLeapYear(year)&&month>2)s++;cout<<s;}48、編寫一個幫助小學(xué)生學(xué)習(xí)加法的程序,隨機產(chǎn)生2個數(shù),讓學(xué)生輸入答案。#include<iostream>#include<cstdlib>usingnamespacestd;intmain(){intx,y,z;srand(time(0));x=rand()%1000;y=rand()%1000;cout<<x<<"+"<<y<<"=";cin>>z;while(z!=0){while(z!=x+y){cout<<"×錯誤!請重做\n";cout<<x<<"+"<<y<<"=";cin>>z;}cout

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論