C 编程基础题训练答案.docx

上传人:b****6 文档编号:15508109 上传时间:2023-07-05 格式:DOCX 页数:44 大小:21.90KB
下载 相关 举报
C 编程基础题训练答案.docx_第1页
第1页 / 共44页
C 编程基础题训练答案.docx_第2页
第2页 / 共44页
C 编程基础题训练答案.docx_第3页
第3页 / 共44页
C 编程基础题训练答案.docx_第4页
第4页 / 共44页
C 编程基础题训练答案.docx_第5页
第5页 / 共44页
C 编程基础题训练答案.docx_第6页
第6页 / 共44页
C 编程基础题训练答案.docx_第7页
第7页 / 共44页
C 编程基础题训练答案.docx_第8页
第8页 / 共44页
C 编程基础题训练答案.docx_第9页
第9页 / 共44页
C 编程基础题训练答案.docx_第10页
第10页 / 共44页
C 编程基础题训练答案.docx_第11页
第11页 / 共44页
C 编程基础题训练答案.docx_第12页
第12页 / 共44页
C 编程基础题训练答案.docx_第13页
第13页 / 共44页
C 编程基础题训练答案.docx_第14页
第14页 / 共44页
C 编程基础题训练答案.docx_第15页
第15页 / 共44页
C 编程基础题训练答案.docx_第16页
第16页 / 共44页
C 编程基础题训练答案.docx_第17页
第17页 / 共44页
C 编程基础题训练答案.docx_第18页
第18页 / 共44页
C 编程基础题训练答案.docx_第19页
第19页 / 共44页
C 编程基础题训练答案.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C 编程基础题训练答案.docx

《C 编程基础题训练答案.docx》由会员分享,可在线阅读,更多相关《C 编程基础题训练答案.docx(44页珍藏版)》请在冰点文库上搜索。

C 编程基础题训练答案.docx

C编程基础题训练答案

1、输入3个数,求最大数。

#include

usingnamespacestd;

intmain()

{inta,b,c,max;

cout<<"请输入三个数字:

"<

cin>>a>>b>>c;

max=(a>b)?

a:

b;

if(c>max)

max=c;

cout<<"最大值:

"<

return0;

}

2、韩信点兵:

有一个数,用3除余2;用5除余3;用7除余2;求满足条件的最小数。

#include

usingnamespacestd;

intmain()

{

inta;

for(a=1;a<1000;a++)

{

if(a%3==2&&a%5==3&&a%7==2)

{cout<

break;}

}

return0;

}

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

#include

usingnamespacestd;

intmain()

{ints=0;

inta=1;

do

{

s=s+a;

a=a++;

}

while(a<101);

cout<

return0;

}

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

#include

usingnamespacestd;

intmain()

{

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

for(a=1;a<101;a++,a++)

{

s1+=a;

}

for(a=-2;a>-101;a=a-2)

{

s2=s2+a;

}

s=s1+s2;

cout<

return0;

}

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

#include

usingnamespacestd;

voidmain()

{

floata,m;

floats=0;

for(a=1;a<101;a++)

{m=1/a;

s=s+m;

}

cout<<"s="<

}

6、求输入n,求n!

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

#include

usingnamespacestd;

intfac(intn)

{

if(n==0)

return1;

else

returnfac(n-1)*n;

}

intmain()

{

while

(1)

{intx,y,n;

cout<<"输入一个整数:

\n";

cin>>x;

fac(x);

cout<

}

return0;

}

7、求1!

+2!

+3!

+…+10!

#include

usingnamespacestd;

intmain()

{

ints=0;

intt=1;

intn;

for(n=1;n<11;n++)

{

t=t*n;

s=s+t;

}

cout<<"1!

+2!

+3!

+...+10!

="<

return0;

}

8、求1+1/2!

+1/3!

+…1/n!

,直到1/n!

<1E-5为止

第一种方法:

#include

usingnamespacestd;

voidmain()

{

doubles=0;

doublet=1;

doublen=1;

do{

t=t*n;

s=s+1/t;

n++;

}

while(t<1e5);

cout<<"1/1!

+1/2!

+1/3!

+...+1/n!

="<

}

第二种方法:

#include

usingnamespacestd;

voidmain()

{

doublesum=0.0;//结果

doublenow=1.0;//现在的1/n!

doublecnt=2.0;//现在的n

while(now>=1e-5)

{

sum+=now;

now/=cnt;

cnt+=1.0;

}

cout<

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

+x3/3!

+…+xn/n!

n取20。

#include

usingnamespacestd;

intpow(intx,intn);

intf1(intn);

intmain(intargc,char*argv[])

{

intx,n;

doubleex=1;

cin>>x;

cin>>n;

for(inti=1;i<=n;i++)

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

cout<

system("pause");

return0;

}

intf1(intn)

{

ints=1;

for(inti=2;i<=n;i++)

s*=i;

returns;

}

intpow(intx,intn)

{

ints=1;

for(inti=1;i<=n;i++)

s*=x;

returns;

}

10、假定f1=1,f2=1;fn=fn-1+fn-2。

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

#include

#include

usingnamespacestd;

intf(intn)

{

intsum;

if(n<=2)

return1;

else

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

returnsum;

cout<

};

intmain()

{

inti,n;

cin>>n;

f(n);

for(i=1;i<=n;i++)

{cout<<"f("<

"<

if(i%5==0)

{

cout<

}

}

return0;

}

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

方法1:

#include

#include

usingnamespacestd;

intmain()

{inti,n,k;

cout<<"请输入一个数:

"<

cin>>n;

k=sqrt(n);

for(i=2;i<=k;i++)

if(n%i==0)break;

if(i>k)

cout<

"<

elsecout<

"<

return0;

}

方法2:

#include

#include

usingnamespacestd;

intmain()

{

inti,n,m;

cout<<"请输入一个数:

"<

cin>>n;

m=sqrt(n);

for(i=2;i<=m;i++)

if(n%i==0)

break;

if(i>m)

cout<

"<

else

cout<

"<

return0;

}

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

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

方法1:

#include

#include

intmain()

{

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

for(i=2;i<=2000;i++)

{

w=1;

k=sqrt(i);

for(j=2;j<=k;j++)

if(i%j==0)

{

w=0;

break;

}

if(w)

{

++n;

if(n%8==0)

cout<

else

cout<

}

}

cout<

cout<<"个数n="<

return0;

}

方法2:

#include

#include

usingnamespacestd;

intmain()

{

inti,j,n=0;

for(i=2;i<2001;i++)

{

for(j=2;j<=i;j++)

{

if(j==i)

{

cout<

n++;

if(n%8==0)

cout<

}

if(i%j==0)

break;

}

}

cout<

cout<<"个数为n:

"<

return0;

}

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

#include

usingnamespacestd;

intfun1(inta,intb);

intfun2(inta,intb);

intmain()

{inta,b;

cout<<"请输入两个整数:

"<

cin>>a>>b;

intfun1(inta,intb);

intfun2(inta,intb);

cout<<"最大公约数:

"<

cout<<"最小公倍数:

"<

return0;

}

intfun1(inta,intb)

{

intm,i;

m=a

a:

b;

for(i=m;i>=1;i--)

{

if(a%i==0&&b%i==0)

break;

}

returni;

}

intfun2(inta,intb)

{

intn,j;

n=a

a:

b;

for(j=n;j<=a*b;j++)

{

if(j%a==0&&j%b==0)

break;

}

returnj;

}

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

输出n位整数xxx…x。

#include

#include

usingnamespacestd;

intmain()

{

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

cout<<"输入一个整数x:

"<

cin>>x;

cout<<"输入一个整数n:

"<

cin>>n;

s=0;

{

for(i=0;i<=n;i++)

{

j=pow(10,i);

s=s+j;

}

}

m=x*s;

cout<<"结果:

"<

return0;

}

15、输入n、a。

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

#include

#include

usingnamespacestd;

intfun(inta,intb);

intmain()

{

intn,a,s,i,k;

cout<<"输入一个整数n:

"<

cin>>n;

cout<<"输入一个整数a:

"<

cin>>a;

s=0;

for(i=0;i

{

k=fun(a,i);

s=s+k;

}

cout<<"Sn="<

return0;

}

intfun(inta,intb)

{

intm,i,s,j;

s=0;

{

for(i=0;i<=b;i++)

{

j=pow(10,i);

s=s+j;

}

}

m=a*s;

returnm;

}

16、输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值。

#include

#include

usingnamespacestd;

voidmain()

{

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

cout<<"请输入一个数:

";

cin>>m;

y=m;

cout<

for(i=1;;i++)

{

j*=10;

n=m/j;

a[i]=n;

k++;

if(n<1)

break;

}

cout<<"您输入的位数是:

"<

intb=1,c,d=0;

for(i=1;i<=k;i++)

{

b*=10;

//cout<

}

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

";

for(i=k;i>0;i--)

{b=b/10;

c=m/b;

m=m-c*b;

d+=c;

cout<

}

cout<

//cout<<"你输入的数字是"<

cout<<"各位上的数字之和为:

"<

x=0;

do{

x=x*10+y%10;

y=y/10;

}

while(y!

=0);

cout<<"逆序输出为:

"<

cout<

}

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

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

#include

#include

usingnamespacestd;

intmain()

{

intm,i;

cout<<"1000以内的完数有:

";

for(m=1;m<1001;m++)

{

intc=0,n=0;

for(i=1;i

{if(m%i==0)

{c=c+i;}

}

if(c==m)

{n++;

cout<

if(n%5==0)

{cout<

}

}

cout<

return0;

}

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

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

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

#include

#include

#include

usingnamespacestd;

intmain()

{

doublex1,x2,a,b;

x2=0;

x1=1.0;

b=1.0;

cin>>a;

while(b>=1e-5)

{

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

b=fabs(x2-x1);

x1=x2;

}

cout<

return0;

}

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

#include

#include

#include

usingnamespacestd;

intmain()

{

doublex=1.5,x0,f,f1;

do{

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);

cout<<"x0="<

return0;

}

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

#include

usingnamespacestd;

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;

else

{

if(fun(c)==0)

returnc;

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

//b=c;

returnjudge(e,a,c);

else

{

//a=c;

returnjudge(e,c,b);

}

}

}

intmain()

{

doublee;

cout<<"请输入精确度:

"<

cin>>e;

cout<

return0;

}

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

#include

usingnamespacestd;

intmain()

{

inti,j,k;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

{cout<

k=i*j;

cout<

if(i==j)

{

cout<

}

}

}

return0;

}

22、百马百担问题。

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

#include

usingnamespacestd;

intmain()

{

intx,y,z;

intm=0;

for(x=1;x<100;x++)

{

for(y=1;y<100;y++)

{

for(z=1;z<100;z++)

if((x+y+z==100)&&(6*x+4*y+z==200))

{m++;

cout<<"第"<

"<

cout<<"大马:

"<

cout<<"中马:

"<

cout<<"小马:

"<

}

}

}

return0;

}

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

#include

usingnamespacestd;

intmain()

{

inti,m,n=0;

for(i=1;i<101;i++)

{

for(m=1;m<=i;m++)

{

n++;

if(n==100)

cout<<"第100个数:

"<

}

}

return0;

}

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

#include

usingnamespacestd;

intmain()

{

intm,n,x;

cout<<"请输入一个数:

";

cin>>m;

n=m%10;

m=(m-n)/10;

x=m%10;

cout<

cout<<"其十位数为:

"<

return0;

}

25、输入三个实数,判断能否构成三角形;若能,再说明是何种类型的三角形。

#include

usingnamespacestd;

intmain()

{

inta,b,c;

cout<<"请输入任意三个数:

";

cin>>a>>b>>c;

if((a+b)>c&&(a+c)>b&&(b+c)>a&&(a-b)

{

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

cout<<"是等腰三角形";

elseif(a==b&&a==c)

cout<<"是等边三角形";

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

cout<<"是直角三角形";

elsecout<<"是普通三角形";

}

elsecout<<"不可以构成三角形。

"<

return0;

}

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

#include

#include

usingnamespacestd;

intmain()

{

inta,b,c;

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

"<

cin>>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);

cout<<"x1="<

cout<<"x2="<

}

elsecout<<"无解"<

return0;

}

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

#include

usingnamespacestd;

intmain()

{

ints;

cout<<"请输入分数:

";

cin>>s;

if(s>100||s<0)

cout<<"输入有误!

";

elseif(s>0&&s<60)

cout<<"不及格";

elseif(s>=60&&s<80)

cout<<"及格";

elseif(s>=80&&s<90)

cout<<"良好";

elseif(s>=90&&s<=100)

cout<<"优秀";

return0;

}

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

#include

usingnamespacestd;

intmain()

{

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

cout<<"请输入年月日"<

cout<<"请输入年:

";

cin>>year;

cout<<"请输入月:

";

cin>>month;

cout<<"请输入日:

";

cin>>day;

if(year>10000||year<0||month<0||month>13||day<0||day>31)

cout<<"有误!

"<

else

if(year%4==0&&year%100==0||year%400==0)

{

for(i=1;i

{

if(i==1||i==3||i==5||i==7||i==8||i==10||i=

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2