C++编程基础题训练答案Word格式.docx

上传人:b****5 文档编号:17431893 上传时间:2022-12-01 格式:DOCX 页数:39 大小:22.82KB
下载 相关 举报
C++编程基础题训练答案Word格式.docx_第1页
第1页 / 共39页
C++编程基础题训练答案Word格式.docx_第2页
第2页 / 共39页
C++编程基础题训练答案Word格式.docx_第3页
第3页 / 共39页
C++编程基础题训练答案Word格式.docx_第4页
第4页 / 共39页
C++编程基础题训练答案Word格式.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

C++编程基础题训练答案Word格式.docx

《C++编程基础题训练答案Word格式.docx》由会员分享,可在线阅读,更多相关《C++编程基础题训练答案Word格式.docx(39页珍藏版)》请在冰豆网上搜索。

C++编程基础题训练答案Word格式.docx

}

while(a<

101);

s<

4、求1-2+3-4+…-100

inta,s=0,s1=0,s2=0;

101;

a++,a++)

s1+=a;

for(a=-2;

-101;

a=a-2)

s2=s2+a;

}

s=s1+s2;

cout<

5、求1+1/2+1/3+…+1/100

voidmain()

floata,m;

floats=0;

{m=1/a;

s=s+m;

s="

6、求输入n,求n!

(需判断n的合法性)递归调用

intfac(intn)

if(n==0)

return1;

else

returnfac(n-1)*n;

while

(1)

{intx,y,n;

输入一个整数:

\n"

;

cin>

x;

fac(x);

fac(x)<

7、求1!

+2!

+3!

+…+10!

ints=0;

intt=1;

intn;

for(n=1;

n<

11;

n++)

t=t*n;

s=s+t;

1!

+2!

+3!

+...+10!

="

8、求1+1/2!

+1/3!

+…1/n!

,直到1/n!

1E-5为止

第一种方法:

doubles=0;

doublet=1;

doublen=1;

do{

s=s+1/t;

n++;

while(t<

1e5);

1/1!

+1/2!

+...+1/n!

第二种方法:

doublesum=0.0;

//结果

doublenow=1.0;

//现在的1/n!

doublecnt=2.0;

//现在的n

while(now>

=1e-5)

sum+=now;

now/=cnt;

cnt+=1.0;

sum<

9、用公式求ex=1+x+x2/2!

+x3/3!

+…+xn/n!

n取20。

#include<

intpow(intx,intn);

intf1(intn);

intmain(intargc,char*argv[])

intx,n;

doubleex=1;

cin>

x;

n;

for(inti=1;

i<

=n;

i++)

ex+=pow(x,i)/(f1(i)*1.0);

cout<

ex<

endl;

system("

pause"

);

return0;

intf1(intn)

ints=1;

for(inti=2;

s*=i;

returns;

intpow(intx,intn)

s*=x;

10、假定f1=1,f2=1;

fn=fn-1+fn-2。

输出前50项的值,且要求每行输出5个值

iomanip>

intf(intn)

intsum;

if(n<

=2)

return1;

else

sum=f(n-1)+f(n-2);

returnsum;

sum;

};

intmain()

{

inti,n;

n;

f(n);

for(i=1;

i<

i++)

f("

):

"

f(i)<

if(i%5==0)

11、判断一个数是否为素数

方法1:

#include<

cmath>

{inti,n,k;

请输入一个数:

k=sqrt(n);

for(i=2;

=k;

if(n%i==0)break;

if(i>

k)

是素数。

elsecout<

不是素数。

方法2:

inti,n,m;

m=sqrt(n);

=m;

if(n%i==0)

if(i>

m)

12、输出2-1000中的素数及个数。

且要求每行输出8个素数。

iostream.h>

math.h>

intn=0,i,j,w,k;

for(i=2;

=2000;

i++)

w=1;

k=sqrt(i);

for(j=2;

j<

j++)

if(i%j==0)

{

w=0;

break;

}

if(w)

{

++n;

if(n%8==0)

cout<

else

}

个数n="

inti,j,n=0;

2001;

for(j=2;

j<

=i;

j++)

if(j==i)

n++;

if(n%8==0)

cout<

if(i%j==0)

break;

个数为n:

13、输入两个整数,求最大公约数和最小公倍数。

intfun1(inta,intb);

intfun2(inta,intb);

{inta,b;

请输入两个整数:

intfun1(inta,intb);

intfun2(inta,intb);

最大公约数:

fun1(a,b)<

最小公倍数:

fun2(a,b)<

intfun1(inta,intb)

intm,i;

m=a<

b?

for(i=m;

i>

=1;

i--)

if(a%i==0&

b%i==0)

break;

returni;

intfun2(inta,intb)

intn,j;

n=a<

for(j=n;

=a*b;

if(j%a==0&

j%b==0)

returnj;

14、输入一个非0的一位整数x,输入一个整数n。

输出n位整数xxx…x。

intm,i,s,x,n,j;

输入一个整数x:

输入一个整数n:

s=0;

for(i=0;

j=pow(10,i);

s=s+j;

}

m=x*s;

结果:

m<

15、输入n、a。

求sn=a+aa+aaa+a…a,其中a是一个非0的一位整数。

intfun(inta,intb);

intn,a,s,i,k;

输入一个整数a:

for(i=0;

k=fun(a,i);

s=s+k;

Sn="

intfun(inta,intb)

intm,i,s,j;

=b;

m=a*s;

returnm;

16、输入任意的正整数,将其各位分离出来;

求它是几位数,求各位上数字的和,求其逆值。

intx,y,m,n,i,j=1,k=0,a[20];

m;

y=m;

j*=10;

n=m/j;

a[i]=n;

k++;

if(n<

1)

您输入的位数是:

k<

intb=1,c,d=0;

b*=10;

//cout<

b<

你输入的数字各位分别是:

for(i=k;

0;

{b=b/10;

c=m/b;

m=m-c*b;

d+=c;

c<

//cout<

你输入的数字是"

位数\n"

各位上的数字之和为:

d<

x=0;

x=x*10+y%10;

y=y/10;

while(y!

=0);

逆序输出为:

17、一个正整数如果恰好等于它的因子之和,这个数称为“完数”,如6=1+2+3。

求1000以内所有的完数,每行5个。

1000以内的完数有:

for(m=1;

1001;

m++)

intc=0,n=0;

for(i=1;

{if(m%i==0)

{c=c+i;

if(c==m)

{n++;

if(n%5==0)

{cout<

18、用迭代法求x=a的平方根。

求平方根的迭代公式为xn+1=0.5(xn+a/xn)。

要求前后两次求出的x的差的绝对值小于1e-5为止。

cstdio>

doublex1,x2,a,b;

x2=0;

x1=1.0;

b=1.0;

while(b>

x2=(x1+a/x1)/2;

b=fabs(x2-x1);

x1=x2;

x2<

19、用牛顿迭代法求方程在1.5附近的根2x3-4x2+3x-6=0

doublex=1.5,x0,f,f1;

x0=x;

f=2*x0*x0*x0-4*x0*x0+3*x0-6;

f1=6*x0*x0-8*x+3;

x=x0-f/f1;

while(fabs(x-x0)>

=1e-5);

x0="

x0<

20、用二分法求上面的方程在(-10,10)之间的根

doublefun(doublex)

return2*x*x*x-4*x*x+3*x-6;

doublejudge(doublee,doublea,doubleb)

doublec;

c=(a+b)/2;

if(b-a<

=e)

returnc;

if(fun(c)==0)

returnc;

elseif(fun(a)*fun(c)<

0)

//b=c;

returnjudge(e,a,c);

//a=c;

returnjudge(e,c,b);

doublee;

请输入精确度:

e;

judge(e,-10,10)<

21、打印形状为直角三角形的九九乘法表。

inti,j,k;

=9;

for(j=1;

{cout<

x"

k=i*j;

if(i==j)

22、百马百担问题。

有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大中小马多少匹,共有多少组解?

intx,y,z;

intm=0;

for(x=1;

x<

100;

x++)

for(y=1;

y<

y++)

for(z=1;

z<

z++)

if((x+y+z==100)&

(6*x+4*y+z==200))

{m++;

第"

种方案。

大马:

中马:

小马:

23、数列1,2,2,3,3,3,4,4,4,4,5,……问第100是多少?

inti,m,n=0;

for(m=1;

n++;

if(n==100)

第100个数:

24、求任意一个整数的十位上的数字。

intm,n,x;

n=m%10;

m=(m-n)/10;

x=m%10;

其十位数为:

25、输入三个实数,判断能否构成三角形;

若能,再说明是何种类型的三角形。

inta,b,c;

请输入任意三个数:

if((a+b)>

c&

(a+c)>

b&

(b+c)>

a&

(a-b)<

(a-c)<

(b-c)<

a)

if(a==b||a==c||b==c)

是等腰三角形"

elseif(a==b&

a==c)

是等边三角形"

elseif(a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a)

是直角三角形"

elsecout<

是普通三角形"

不可以构成三角形。

26、输入任意的a,b,c求一元二次方程ax*x+bx+c=0的根。

请输入任意三个数a,b,c:

floatx1,x2,d;

d=sqrt(b*b-4*a*c);

if(d>

=0)

x1=(-b+d)/(2*a);

x2=(-b-d)/(2*a);

x1="

x1<

x2="

无解"

27、将百分制成绩转换为五级制成绩

ints;

请输入分数:

s;

if(s>

100||s<

输入有误!

elseif(s>

0&

60)

不及格"

=60&

80)

及格"

=80&

90)

良好"

=90&

=100)

优秀"

28、输入年月日,判断它是该年的第多少天。

intyear,month,day,days=0,i;

请输入年月日"

请输入年:

year;

请输入月:

month;

请输入日:

day;

if(year>

10000||year<

0||month<

0||month>

13||day<

0||day>

31)

有误!

else

if(year%4==0&

year%100==0||year%400==0)

for(i=1;

if(i==1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1