经典C语言题目

  • 格式:doc
  • 大小:69.00 KB
  • 文档页数:34

1.求两个正整数的最小公倍数和最大公约数。

#include<iostream>using namespace std;int a,b,t;void fun1(int c);void fun2(int d);void main(){cout<<"请输入两个正整数"<<endl;cin>>a>>b;if(a>b){t=a;a=b;b=t;}fun1(a);fun2(b);}void fun1(int c){for(;;c--){if((a%c==0)&&(b%c==0)){cout<<"最大公约数为"<<c<<endl;break;}}}void fun2(int d){for(;;d++){if((d%a==0)&&(d%b==0)){cout<<"最小公倍数为"<<d<<endl;break;}}}2.输出菲波拉契数列的前20项。

#include <iostream.h>void main(){long int f1,f2;int i;f1=1;f2=1;for(i=1;i<=20;i++){cout<<" "<<f1<<" "<<f2;if(i%2==0)cout<<"\n";f1=f1+f2;f2=f2+f1;}}3.判断一个正整数是否为素数。

#include <iostream.h>#include <math.h>void main(){int a,i,k;cout<<"请输入一个大于三的正整数:"; cin>>a;k=sqrt(a);for(i=2;i<k;i++)if(a%i==0)break;if(i>k)cout<<"a是素数"<<endl;elsecout<<"a不是素数"<<endl;}4.编程实现,由键盘输入x的值,计算并输出对应y值。

#include <iostream.h>void main(){double x,y;cin>>x;if(x<1)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;cout<<"y="<<y<<endl;}5.输入一个不大于5位正整数,判断他是几位数,逆序输出各位数字#include <iostream.h>#include <math.h>void main(){int i=0,j,k,m;cin>>j;k=j;while (k>=1){i=i+1;m=k%10;k=k/10;cout<<m;}cout<<endl;cout<<i<<"位数";}6.某加油站有A,B,C三种汽油,单价分别为4.75、5.20、5.80(元/升)。

并提供了三种服务类型:自动加油(F)、用户自己手工加油(M)、协助加油(E),其中用户自己手工加油可以得到10%的优惠,协助加油可以得到5%的优惠。

编程实现,输入一用户的加油量x, 汽油品种y和服务类型z,计算并输出应付的汽油费。

方案1#include <iostream.h>void main(){ double x,t,q,w;char y,z;cout<<"请输入加油的量";cin>>x;cout<<"请输入汽油的品种A:4.75 B:5.20 c:5.80元,选择ABC的类别";cin>>y;cout<<"请输入加油的方式F 自动加油M用户手工加油E协助加油";cin>>z;switch (y){case 'a':t=4.75;break;case 'b':t=5.20;break;case 'c':t=5.80;break;default:cout<<"无效选择,错误"<<endl;}switch (z){case 'f':q=0;break;case 'm':q=0.1;break;case 'e':q=0.05;break;default:cout<<"无效选择,错误"<<endl;} w=x*t*(1-q);cout<<"应该付的汽油费用是"<<w<<endl; }方案二;#include<iostream.h>void main(){double x,price,v,p;char y,z;cout<<"输入的加油量:";cin>>x;cout<<"输入汽油品种A,B,C:";cin>>y;if(y=='A')p=4.75;else if(y=='B')p=5.20;else if(y=='C')p=5.80;else {cout<<"输入错误"<<endl; p=5.80;} cout<<"输入服务类型F,M,E:";cin>>z;if(z=='F')v=1;else if(z=='M')v=0.9;else if(z=='E')v=0.95;else { cout<<"输入错误"<<endl; v=1;}price=x*p*v;cout<<"汽油费为:"<<price<<endl;}7.100米的球下降#include <iostream.h>void main(){ double s,h;int i;s=100;h=100;i=2;while (i<=10){ h=h/2;s=s+2*h;i++;cout<<"第"<<i-1<<"次的结果"<<h<<"\t"<<s<<endl;}}8.编程实现,一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少米?第10次反弹多高?#include<iostream.h>void main(){ int i;double t,sum=100;t=sum/2;for(i=1;i<=9;i++){ sum+=2*t;t=t/2;}cout<<"在第10次落地时,共经过"<<sum<<"米"<<endl;cout<<"第10次反弹"<<t<<"高"<<endl;}9.求N!的值。

#include <iostream.h>void main(){ double fac,sum=0;int i,n;fac=1;i=1;cin>>n;while (i<=n){fac=fac*i;i++;sum=sum+fac;}cout<<fac;}10.编程实现,求和s=1!+3!+5!+7!+9!. #include<iostream.h>void main(){double sum=0,term=1;int i=1;while(i<=9){term=term*i;if(i%2==1)sum=sum+term;i++;}cout<<"sum="<<sum<<endl;}11.一个整数如果恰好等于它的因子(包括1,但不包括本身)之和,这个数就称为完数(如6=1+2+3)。

编程实现输出100之内的所有完数。

#include<iostream.h>#include<math.h>#define maxnum 100int main(){int i,n,sum;cout<<maxnum<<"以内的完全数为:\n";for(n=1;n<=maxnum;n++){sum=0;for(i=1;i<=n/2;i++)if(n%i==0) sum+=i;if(sum==n)cout<<n<<" ";}cout<<endl;return 0;}12.编程实现,输出100-999之间所有的“水仙花数”。

“水仙花数”是一个三位数,其各位数的立方和等于该数本身。

例如153。

#include<iostream.h>void main(){int m,a,b,c;for(m=100;m<1000;m++){a=m/100;b=(m/10)%10;c=(m%10);if(m==a*a*a+b*b*b+c*c*c)cout<<m<<" ";}}#include<iostream.h>void main(){int a,b,c;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++)if(100*a+10*b+c==a*a*a+b*b*b+c*c*c)cout<<a<<b<<c<<endl;}13.有3个红球、5个白球和6个黑球,从中任意取出8个球,且其中必须有白球。