C编程基础题训练答案Word文件下载.docx
《C编程基础题训练答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C编程基础题训练答案Word文件下载.docx(45页珍藏版)》请在冰点文库上搜索。
}
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||