50道C++编程练习题及解答c 编程例题Word下载.docx
《50道C++编程练习题及解答c 编程例题Word下载.docx》由会员分享,可在线阅读,更多相关《50道C++编程练习题及解答c 编程例题Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
}
方程无实根\n"
}
3.输入一个成绩,打印响应的等级
{inta;
cin>
a;
if(a>
=90)cout<
A"
elseif(a>
=80)cout<
B"
=70)cout<
C"
=60)cout<
D"
E"
4.输入3个double类型的值,断定这3个值是否可以表示一个三角形的三条边.
{
doublea,b,c;
if(a+b>
c&
&
b+c>
a&
c+a>
b)
可以组成三角形"
else
不可以组成三角形"
5.输入20个数,求其最大.最小和平均值
inti;
inta,max,min,s;
a;
max=min=a;
s=a;
for(i=1;
i<
20;
i++)
{cin>
max)max=a;
if(a<
min)min=a;
s=s+a;
}
max<
"
min<
s/20.0<
6.输入若干个数,设输入的第一个数为后面要输入的数的个数,求平均值及最大值.
inta,m,s=0;
n;
for(inti=1;
i<
i++)
s+=a;
m)m=a;
平均值:
(double)s/n<
最大值:
m<
7.输入若干个数,输入-999表示停止,求平均值及最大值.
iomanip>
cstdlib>
{intn,count,sum,max;
doubleave;
count=0;
n;
sum=0;
max=n;
while(n!
=-999)
{sum=sum+n;
if(n>
max)max=n;
count++;
if(count!
=0)
{ave=static_cast<
double>
(sum)/count;
setiosflags(ios:
:
fixed)<
setprecision
(2);
平均值为:
ave<
最大值为:
8.乞降s=1*1+2*2+3*3+...+100*100
{inti,t;
doubles=0;
=100;
i++)
{t=i*i;
s=s+t;
9.印度国王的嘉奖,乞降s=20+21+22+...+263
{doublet=1,s=0;
for(inti=0;
=63;
{s=s+t;
t=2*t;
s/1.4e8<
10.乞降s=1!
+2!
+3!
+...+10!
{inti;
longt,s;
t=1;
s=0;
=10;
{t=t*i;
11.求e=1+1/1!
+1/2!
+1/3!
+...
doublet,e;
i=1;
e=1;
while(t>
=1e-7)
{t=t/i;
e=e+t;
i=i+1;
e;
12.求PI值,PI/4=1-1/3+1/5-1/7+...
{inti,k;
doublepi,t;
pi=0;
k=1;
while(fabs(t)>
1e-8)
{pi=pi+t;
i=i+2;
k=-k;
t=double(k)/i;
4*pi;
13.求PI值,PI/2=1+1/3+1/3*2/5+1/3*2/5*3/7+...
inti,j;
i=0;
j=1;
1e-18)
j=j+2;
t=t*i/j;
setprecision(17)<
2*pi;
14.输入20个数,统计个中正数.负数和零的个数.
inta,n=0,m=0,s=0;
=20;
{cin>
0)n++;
elseif(a<
0)m++;
elses++;
n<
s;
15.输入若干个整数,盘算个中的奇数之和与偶数之和,假设输入0表示停止.
{inta,n=0,m=0;
while(a!
=0)
{if(a%2==0)n+=a;
elsem+=a;
16.写一函数,盘算x的y次方(假设x.y都为正整数).
intpow(intx,inty)
{ints=1;
=y;
s=s*x;
returns;
17.求水仙花数(一个三位数,其列位数字立方和等于该数字本身)
{inti,a,b,c;
for(i=100;
=999;
i++)
{a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
for(a=1;
a<
=9;
a++)
for(b=0;
b<
b++)
for(c=0;
c<
c++)
{i=a*100+b*10+c;
18.编写一个函数,肯定一个整数是否为完整数(一个数,等于他的因子之和).用这个函数肯定和打印1到1000之间的所有完整数.
intperfect(intn)
{inti,s=1;
for(i=2;
=n/2;
if(n%i==0)s=s+i;
if(s==n)return1;
elsereturn0;
{intn;
for(n=2;
=1000;
n++)
ifperfect(n)
19.写一函数,求斐波那契数列的第n项.
intfib(intn)
inti,f1,f2,f;
if(n==1||n==2)return1;
f1=1;
f2=1;
for(i=3;
=n;
{f=f1+f2;
f1=f2;
f2=f;
returnf;
20.写一个函数,取一个整数值并返回将此整数的各数字反序的数值
intreverse(intn)
{ints=0;
while(n)
{s=s*10+n%10;
n/=10;
};
21.写一个函数,将一个整数的列位数字的反序打印
voidshow(intn)
{while(n)
{cout<
n%10<
{if(n<
10)cout<
show(n/10);
22.写一个函数,将一个整数的列位数字的按次序打印出来
intk=1,m=n;
while(m>
10)
{k*=10;
m/=10;
n/k<
n%=k;
k/=10;
{inta[10],i=0;
{a[i]=n%10;
i++;
for(intj=i-1;
j>
=0;
j--)
a[j]<
{if(n<
10)cout<
{show(n/10);
cout<
<
n%10;
23.求一个整数的列位数之和的函数
intsum(intn)
{ints=0;
{s+=n%10;
24.写一函数,断定某个数是否素数,以及求1-1000之内的素数
stdlib.h>
boolisprime(intn)
{floatk=sqrt(float(n));
for(inti=2;
=k;
if(n%i==0)returnfalse;
returntrue;
{for(intn=2;
n<
n++)
if(isprime(n))cout<
setw(5)<
25.用筛法求1-1000之内的素数
inti,k,a[1001];
i++)a[i]=1;
floats=sqrt(float(1000));
=s;
if(a[i]==1)
{k=2*i;
while(k<
=1000)
{a[k]=0;
k=k+i;
if(a[i]==1)cout<
i;
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)
t=a;
a=b;
b=t;
28.求两个数的最大公约数,欧几里德算法(辗转相除法)
intgcd(intm,intn)
{intk;
while(n!
{k=m%n;
m=n;
n=k;
returnm;
while((k=m%n)!
{m=n;
returnn;
{while(m!
=n)
{if(m>
n)m=m-n;
elsen=n-m;
29.求两个数的最小公倍数
intlcm(intm,intn)
{intt,s;
if(m<
n){t=m;
n=t;
s=m;
while(s%n!
=0)s=s+m;
returnm*n/gcd(m,n);
30.百钱买百鸡问题:
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,百钱买百鸡,问鸡翁.母.雏各几何?
intcock,hen,chick;
for(cock=0;
cock<
cock++)
for(hen=0;
hen<
=33;
hen++)
{chick=100-cock-hen;
if(5*cock+3*hen+chick/3.0==100)
setw(4)<
cock<
hen<
chick<
31.编一程序,输入一行字符串,统计个中的小写英文字母的个数.
{chars[100];
cin.getline(s,100);
inti=0,count=0;
while(s[i]!
='
\0'
)
{if(s[i]>
a'
&
s[i]<
z'
count<
32.编一程序,输入一行字符串,将个中的大写英文字母改为小写,再输出.
inti;
if(s[i]>
A'
Z'
s[i]=s[i]+32;
s<
33.打印杨辉三角形(帕斯卡三角形),打印10行.
{inta[10][10]={0};
10;
{a[i][0]=1;
a[i][i]=1;
for(intj=1;
j<
j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
{for(intj=0;
=i;
a[i][j];
34.打印一个九九乘法表
{for(inti=1;
=j;
*"
j<
="
setw
(2)<
i*j<
35.掷骰子10000次,统计得到各点数的次数.
{inta[7]={0};
srand(time(0));
i<
=10000;
++i)
++a[1+rand()%6];
=6;
a[i]<
36.编写函数distance,盘算两点(x1,y1)和(x2,y2)之间的距离.
doubledistance(doublex1,doubley1,doublex2,doubley2)
returnsqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
37.写一个程序,进行体操评分,依次输入10名评委所评分数,去除一个最高分和一个最低分,再算出平均分作为选手的得分.
floatmax,min,s,x;
max=0;
min=10;
x;
s=s+x;
if(x<
min)min=x;
if(x>
max)max=x;
s=s-min-max;
s/8;
38.写一函数,将一数组中的元素反转.
voidreverse(inta[],intn)
{for(inti=0;
n/2;
swap(a[i],a[n-i-1]);
39.写一函数,在一个数组中找出最大元素的地位
intSearchMax(inta[],intn)
{intk=0;
if(a[i]>
a[k])k=i;
returnk;
40.找出一个二维数组中的鞍点,即该元素在该行上最大,在该列上最小.
41.写一个字符串拷贝函数
voidstrcpy(char*p,constchar*q)
while(*p++=*q++);
char*strcpy(char*str1,constchar*str2)
char*p=str1;
while(*str1++=*str2++);
returnp;
42.写一个字符串比较函数
intstrcmp(char*str1,constchar*str2)
while(*str1&
*str2&
*str1==*str2)
{str1++;
str2++;
return*str1-*str2;
while(*str1==*str2)
{if(*str1=='
)return0;
str1++;
43.写一个字符串衔接函数
char*strcat(char*str1,char*str2)
while(*str1!
=0)str1++;
44.写一个求字符串长度函数
intstrlen(char*str)
intn=0;
while(*str!
{n++;
str++;
45.写一函数,在一数组里查找某个值.
intsearch(inta[],intn,intkey)
if(a[i]==key)
returni;
return-1;
46.编一程序,求两个矩阵的乘积
47.盘算某日是某年的第几天
boolisLeapYear(inty)//断定某一年是否闰年
return(y%4==0&
intyear,month,day,i,s=0;
inta[13]=(0,31,28,31,30,31,30,31,31,30,31,30,31};
year>
month>
day;
month;
s=s+a[i];
s=s+day;
if(isLeapYear(year)&
month>
2)s++;
s;
48.编写一个关心小学生进修加法的程序,随机产生2个数,让学生输入答案.
intx,y,z;
srand(time(0));
x=rand()%1000;
y=rand()%1