50道常见++编程题
![50道常见++编程题](https://img.360docs.net/img15/0n567j61lin9yaaiazx-51.webp)
![50道常见++编程题](https://img.360docs.net/img15/0n567j61lin9yaaiazx-62.webp)
C++编程题
1. 100~200间的素数
#include
#include
#include
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 < if(n%10==0) cout < } cout < } 例3.15 译密码 #include 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< } cout< return 0; } 17、求Sn=a+aa+aaa+……+aa…a(n个a)的值,n由键盘输入。#include 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+...="< return 0; } 18、.求1!+2!……+20!、 #include 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!="< return 0; } 20、找出1000之内所有的完数例如6的因子是1.2.3而6=1+2+3,所以6是完数#include using namespace std; int main() {int m,s,i; for (m=2;m<1000;m++) {s=0; for (i=1;i if ((m%i)==0) s=s+i; if(s==m) {cout< cout<<"its factors are:"; for (i=1;i if (m%i==0) cout< cout< } } return 0; } 21、2/1, 3/2, 5/3, 8/5, 13/8, 21/13,…前20项之和 #include 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="< return 0; } 24、输出图形 #include using namespace std; int main() {int i,k; for (i=0;i<=3;i++) // 输出上面4行*号 {for (k=0;k<=2*i;k++) cout<<"*"; // 输出*号 cout< } for (i=0;i<=2;i++) // 输出下面3行*号 {for (k=0;k<=4-2*i;k++) cout<<"*"; // 输出*号 cout< } return 0; } 习题: 1、求最大公约数和最小公倍数,用主函数条用两个函数 #include 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="< l=lcd(u,v,h); cout<<"L.C.D="< 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 using namespace std; int main() {int prime(int); /* 函数原型声明*/ int n; cout<<"input an integer:"; cin>>n; if (prime(n)) cout< else cout< return 0; } int prime(int n) {int flag=1,i; for (i=2;i if (n%i==0) flag=0; return(flag); } 4、.求a!+b!+c!的值,用一个函数fac(n)求n!。4 #include 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< 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 #include 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< } } 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 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 "< return 0; } int f(int n) { if (n==1) return 1; else return (n*n+f(n-1)); } 例5.2 用数组Fibonacci数列 #include #include 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< cout< } cout< return 0; } 例5.3用冒泡法对10个数排序 #include using namespace std; int main( ) { int a[10]; int i,j,t; cout<<"input 10 numbers :"< for (i=0;i<10;i++) //输入a[0]~a[9] cin>>a[i]; cout< 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 :"< for(i=0;i<10;i++) //输出10个数 cout< cout< return 0; }例5.4将二维数组行列元素互换,存到另一个数组中 a=1 2 3 5 6 b=1 4 2 5 3 6 #include using namespace std; int main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; cout<<"array a:"< for(i=0;i<=1;i++) { for(j=0;j<=2;j++)