当前位置:文档之家› 50道常见++编程题

50道常见++编程题

C++编程题1. 100~200间的素数#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){int m,k,i,n=0;bool prime;for(m=101;m<=200;m=m+2){prime=true;k=int(sqrt(m));for(i=2;i<=k;i++)if(m%i==0){prime =false;break;}if(prime){cout <<setw(5) <<m;n=n+1;}if(n%10==0)cout <<endl;}cout <<endl;return 0;}例3.15译密码#include <iostream>using namespace std;int main(){char c;while ((c=getchar())!='\n'){if((c>='a'&&c<='z')|| (c>='A'&&c<='Z')){c=c+4;if(c>'Z'&&c<='Z'+4||c>'z')c=c-26;}cout<<c;}cout<<endl;return 0;}17、求Sn=a+aa+aaa+……+aa…a(n个a)的值,n由键盘输入。

#include<iostream>using namespace std;int main (){int a,n,i=1,sn=0,tn=0;cout<<"a,n=:";cin>>a>>n;while (i<=n){tn=tn+a; //赋值后的tn为i个a组成数的值sn=sn+tn; //赋值后的sn为多项式前i项之和a=a*10;++i;}cout<<"a+aa+aaa+...="<<sn<<endl;return 0;}18、.求1!+2!……+20!、#include <iostream>using namespace std;int main (){float s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n; // 求n!s=s+t; // 将各项累加}cout<<"1!+2!+...+20!="<<s<<endl;return 0;}20、找出1000之内所有的完数例如6的因子是1.2.3而6=1+2+3,所以6是完数#include <iostream>using namespace std;int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){cout<<m<<" is a完数"<<endl;cout<<"its factors are:";for (i=1;i<m;i++)if (m%i==0) cout<<i<<" ";cout<<endl;}}return 0;}21、2/1, 3/2, 5/3, 8/5, 13/8, 21/13,…前20项之和#include <iostream>using namespace std;int main(){int i,t,n=20;double a=2,b=1,s=0;for (i=1;i<=n;i++){s=s+a/b;t=a;a=a+b; // 将前一项分子与分母之和作为下一项的分子b=t; // 将前一项的分子作为下一项的分母}cout<<"sum="<<s<<endl;return 0;}24、输出图形#include <iostream>using namespace std;int main(){int i,k;for (i=0;i<=3;i++) // 输出上面4行*号{for (k=0;k<=2*i;k++)cout<<"*"; // 输出*号cout<<endl; //输出完一行*号后换行}for (i=0;i<=2;i++) // 输出下面3行*号{for (k=0;k<=4-2*i;k++)cout<<"*"; // 输出*号cout<<endl; // 输出完一行*号后换行}return 0;}习题:1、求最大公约数和最小公倍数,用主函数条用两个函数#include <iostream>using namespace std;int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;cin>>u>>v;h=hcf(u,v);cout<<"H.C.F="<<h<<endl;l=lcd(u,v,h);cout<<"L.C.D="<<l<<endl;return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h){return(u*v/h);}3、判别素数的函数#include <iostream>using namespace std;int main(){int prime(int); /* 函数原型声明*/ int n;cout<<"input an integer:";cin>>n;if (prime(n))cout<<n<<" is a prime."<<endl;elsecout<<n<<" is not a prime."<<endl;return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}4、.求a!+b!+c!的值,用一个函数fac(n)求n!。

4 #include <iostream>using namespace std;int main(){int fac(int);int a,b,c,sum=0;cout<<"enter a,b,c:";cin>>a>>b>>c;sum=sum+fac(a)+fac(b)+fac(c);cout<<a<<"!+"<<b<<"!+"<<c<<"!="<<sum<<endl;return 0;}int fac(int n){int f=1;for (int i=1;i<=n;i++)f=f*i;return f;}7、.验证哥德巴赫猜想:一个不小于6的偶数可以表示为两个素数之和。

7 #include <iostream>#include <cmath>using namespace std;int main(){void godbaha(int);int n;cout<<"input n:";cin>>n;godbaha(n);return 0;}void godbaha(int n){int prime(int);int a,b;for(a=3;a<=n/2;a=a+2){if(prime(a)){b=n-a;if (prime(b))cout<<n<<"="<<a<<"+"<<b<<endl;}}}int prime(int m){int i,k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0) break;if (i>k) return 1;else return 0;}11、用递归方法求f(n)=12+22+……+n2#include <iostream>using namespace std;int main(){int f(int);int n,s;cout<<"input the number n:";cin>>n;s=f(n);cout<<"The result is "<<s<<endl;return 0;}int f(int n){if (n==1)return 1;elsereturn (n*n+f(n-1));}例5.2 用数组Fibonacci数列#include <iostream>#include <iomanip>using namespace std;int main (){int i;int f[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)cout<<endl;cout<<setw(8)<<f[i];}cout<<endl;return 0;}例5.3用冒泡法对10个数排序#include <iostream>using namespace std;int main( ){int a[10];int i,j,t;cout<<"input 10 numbers :"<<endl;for (i=0;i<10;i++) //输入a[0]~a[9]cin>>a[i];cout<<endl;for (j=0;j<9;j++) //共进行9趟比较for(i=0;i<9-j;i++) //在每趟中要进行(10-j)次两两比较if (a[i]>a[i+1]) //如果前面的数大于后面的数{t=a[i];a[i]=a[i+1];a[i+1]=t;} //交换两个数的位置,使小数上浮cout<<"the sorted numbers :"<<endl;for(i=0;i<10;i++) //输出10个数cout<<a[i]<<" ";cout<<endl;return 0;}例5.4将二维数组行列元素互换,存到另一个数组中a=1 2 35 6 b=1 42 53 6#include <iostream>using namespace std;int main(){ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;cout<<"array a:"<<endl;for(i=0;i<=1;i++){ for(j=0;j<=2;j++){ cout<<a[i][j]<< " ";b[j][i]=a[i][j];}cout<<endl;}cout<<"array b:“<<endl;for(i=0;i<=2;i++){ for(j=0;j<=1;j++)cout<<b[i][j]<< " ";cout<<endl;}return 0;}例5.5求3×4 二维数组中最大元素值及其行列号#include <iostream>using namespace std;int main(){int i,j,row=0,colum=0,max;int a[3][4]={{5,12,23,56},{19,28,37,46},{-12,-34,6,8}};max=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<<"max= "<<max<< ",row="<<row<< ",colum="<<colum<<endl;return 0;}例5.7用选择法对数组中10个整数按由小到大排序#include <iostream>using namespace std;int main( ){void select_sort(int array[],int n); //函数声明int a[10],i;cout<<"enter the originl array:"<<endl;for(i=0;i<10;i++) //输入10个数cin>>a[i];cout<<endl;select_sort( a ,10); //函数调用,数组名作实参cout<<"the sorted array:"<<endl;for(i=0;i<10;i++) //输出10个已排好序的数cout<<a[i]<<" ";cout<<endl;return 0;}void select_sort(int array[],int n) //形参array是数组名{int i,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(array[j]<array[k]) k=j;t=array[k];array[k]=array[i];array[i]=t;}}习题:6、打印出杨辉三角(要求打印出10行)#include <iostream>#include <iomanip>using namespace std;int main(){const int n=11;int i,j,a[n][n];for (i=1;i<n;i++){a[i][i]=1;a[i][1]=1;}for (i=3;i<n;i++)for (j=2;j<=i-1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for (i=1;i<n;i++){for (j=1;j<=i;j++)cout<<setw(5)<<a[i][j]<<" ";cout<<endl;}cout<<endl;return 0;}C语言部分1. 编程计算1, 1+2, 1+2+3, …, 1+2+3+…+n各项值的积答案:#include <iostream>using namespace std;void main(){int i,n,mul=1,sum=0;cout<<"Please input n:";cin>>n;for (i=1;i<=n;i++){sum+=i;mul*=sum;}cout<<"The multiple is:"<<mul<<endl;}2. 编写重载函数Max可分别求取两个整数,三个字符,两个浮点型数,三个双精度数的最大值。

相关主题