50道C++编程练习题及解答c 编程例题.docx
《50道C++编程练习题及解答c 编程例题.docx》由会员分享,可在线阅读,更多相关《50道C++编程练习题及解答c 编程例题.docx(20页珍藏版)》请在冰点文库上搜索。
50道C++编程练习题及解答c编程例题
50道C/C++编程练习题之阿布丰王创作
1、输入3个数,求最年夜值
intmain()
{inta,b,c,m;
cin>>a>>b>>c;
m=a;
if(b>m)m=b;
if(c>m)m=c;
cout<}
2、编法式,求方程ax2+bx+c=0的根
#include
#include
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<else
{d=b*b-4*a*c;
if(fabs(d)<=1e-6)
cout<<"x1=x2="<<-b/(2*a)<elseif(d>1e-6)
{x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
cout<<"x1="<}
elsecout<<"方程无实根\n";
}
}
3、输入一个成果,打印相应的品级
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<<"可以构成三角形";
else
cout<<"不成以构成三角形";
}
5、输入20个数,求其最年夜、最小和平均值
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(as=s+a;
}
cout<}
6、输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最年夜值.
intmain()
{
inta,m,s=0;
cin>>n;
cin>>a;
m=a;s=a;
for(inti=1;i{cin>>a;
s+=a;
if(a>m)m=a;
}
cout<<"平均值:
"<<(double)s/n<<",最年夜值:
"<}
7、输入若干个数,输入-999暗示结束,求平均值及最年夜值.
#include
#include
#include
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(sum)/count;
cout<:
fixed)<(2);
cout<<"平均值为:
"<"<}
}
8、求和s=1*1+2*2+3*3+...+100*100
intmain()
{inti,t;
doubles=0;
for(i=1;i<=100;i++)
{t=i*i;
s=s+t;
}
}
9、印度国王的奖励,求和s=20+21+22+...+263
intmain()
{doublet=1,s=0;
for(inti=0;i<=63;i++)
{s=s+t;
t=2*t;
}
cout<
}
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<}
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
#include
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<}
14、输入20个数,统计其中正数、负数和零的个数.
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<}
15、输入若干个整数,计算其中的奇数之和与偶数之和,假设输入0暗示结束.
intmain()
{inta,n=0,m=0;
cin>>a;
while(a!
=0)
{if(a%2==0)n+=a;;
elsem+=a;
cin>>a;
}
cout<}
16、写一函数,计算x的y次方(假设x、y都为正整数).
intpow(intx,inty)
{ints=1;
for(inti=1;i<=y;i++)
s=s*x;
returns;
}
17、求水仙花数(一个三位数,其各位数字立方和即是该数字自己)
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<
}
}
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<
}
}
18、编写一个函数,确定一个整数是否为完全数(一个数,即是他的因子之和).用这个函数确定和打印1到1000之间的所有完全数.
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<}
19、写一函数,求斐波那契数列的第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、写一个函数,取一个整数值并返回将此整数的各数字反序的数值
intreverse(intn)
{ints=0;
while(n)
{s=s*10+n%10;
n/=10;
};
returns;
}
21、写一个函数,将一个整数的各位数字的反序打印
voidshow(intn)
{while(n)
{cout<n/=10;
};
}
voidshow(intn)
{if(n<10)cout<else
{cout<show(n/10);
}
}
22、写一个函数,将一个整数的各位数字的按顺序打印出来
voidshow(intn)
{
intk=1,m=n;
while(m>10)
{k*=10;m/=10;}
while(n)
{cout<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<}
voidshow(intn)
{if(n<10)cout<else
{show(n/10);
cout<<""<}
}
23、求一个整数的各位数之和的函数
intsum(intn)
{ints=0;
while(n)
{s+=n%10;
n/=10;
};
returns;
}
24、写一函数,判断某个数是否素数,以及求1-1000之内的素数
#include
#include
#include
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<}
25、用筛法求1-1000之内的素数
#include
#include
#include
#include
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<}
26、判断某一年是否闰年的函数
boolIsLeapYear(inty)
{return(y%4==0&&y%100!
=0)||(y%400==0);
}
27、写一个函数,交换两个整型变量的值
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、求两个数的最年夜公约数,欧几里德算法(辗转相除法)
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、求两个数的最小公倍数
intlcm(intm,intn)
{intt,s;
if(ms=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<}
}
31、编一法式,输入一行字符串,统计其中的小写英文字母的个数.
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<}
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<
}
33、打印杨辉三角形(帕斯卡三角形),打印10行.
#include
#include
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
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<cout<}
}
34、打印一个九九乘法表
#include
#include
usingnamespacestd;
intmain()
{
for(intj=1;j<=9;j++)
{for(inti=1;i<=j;i++)
cout<
(2)<
cout<}
}
35、掷骰子10000次,统计获得各点数的次数.
intmain()
{inta[7]={0};
srand(time(0));
for(inti=1;i<=10000;++i)
++a[1+rand()%6];
for(inti=1;i<=6;++i)
cout<
"<}
36、编写函数distance,计算两点(x1,y1)和(x2,y2)之间的距离.
doubledistance(doublex1,doubley1,doublex2,doubley2)
{
returnsqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
37、写一个法式,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分.
intmain()
{inti;
floatmax,min,s,x;
max=0;min=10;s=0;
for(i=1;i<=10;i++)
{cin>>x;
s=s+x;
if(xif(x>max)max=x;
}
s=s-min-max;
cout<
}
38、写一函数,将一数组中的元素反转.
voidreverse(inta[],intn)
{for(inti=0;iswap(a[i],a[n-i-1]);
}
39、写一函数,在一个数组中找出最年夜元素的位置
intSearchMax(inta[],intn)
{intk=0;
for(inti=1;iif(a[i]>a[k])k=i;
returnk;
}
40、找出一个二维数组中的鞍点,即该元素在该行上最年夜,在该列上最小.
41、写一个字符串拷贝函数
时间:
二O二一年七月二十九日