C统考习题答案66.docx

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

C统考习题答案66.docx

《C统考习题答案66.docx》由会员分享,可在线阅读,更多相关《C统考习题答案66.docx(43页珍藏版)》请在冰点文库上搜索。

C统考习题答案66.docx

C统考习题答案66

统考复习题

1.编写程序,用矩形法求一元函数f(x)=x^3+2x^2-12x-6(其中^示幂运算),在区间[3.5,5]上的积分近似值S,保留2位小数(小区间数n=15,此参数不能改动,否则影响答案)。

#include"stdio.h"

#include"math.h"a

doublef(doublex)

{doubley;

y=x*x*x+2*x*x-12*x-6;

returny;

}

voidmain()

{inti,n;

doublea,b,x,h,s;

n=15;

a=3.5;b=5.0;

h=(b-a)/n;

s=0;

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

{x=a+i*h;

s=s+f(x)*h;

}

printf("s=%6.2f\n",s);

}

运行结果:

s=92.50

2.编写程序,用矩形法求一元函数f(x)=x^3+2x^2-12x-6(其中^示幂运算),在区间[3.5,

5]上的积分近似值S,保留2位小数(小区间数n=25,此参数不能改动,否则影响答案)

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=x*x*x+2*x*x-12*x-6;

returny;

}

voidmain()

{inti,n;

doublea,b,x,h,s;

n=25;

a=3.5;b=5.0;

h=(b-a)/n;

s=0;

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

{x=a+i*h;

s=s+f(x)*h;

}

printf("s=%6.2f\n",s);

}

运行结果:

s=90.69

3.编写程序,用矩形法求一元函数f(x)=7x^3+2x^2-12x-16(其中^表示幂运算),在区间[5,7]上的积分近似值S,保留2位小数(小区间数n=15,此参数不能改动,否则影响答案)

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=7*pow(x,3)+2*x*x-12*x-6;

returny;

}

voidmain()

{inti,n;

doublea,b,x,h,s;

n=15;

a=5.0;b=7.0;

h=(b-a)/n;

s=0;

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

{x=a+i*h;

s=s+f(x)*h;

}

printf("s=%8.2f\n",s);

}

运行结果:

s=3201.43

4.编写程序,用矩形法求一元函数f(x)=3x^3+2x^2+x+1(其中^表示幂运算),在区间[1,3]上的积分近似值S,保留3位小数(小区间数n=15,此参数不能改动,否则影响答案)

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=3*pow(x,3)+2*x*x+x+1;

returny;

}

voidmain()

{inti,n;

doublea,b,x,h,s;

n=15;

a=1.0;b=3.0;

h=(b-a)/n;

s=0;

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

{x=a+i*h;

s=s+f(x)*h;

}

printf("s=%8.3f\n",s);

}

运行结果:

s=89.852

5.编写程序,用牛顿切线法求方程f(x)=x+㏑x-1.56=0的近似实根r,迭代初值为2,精确到0.0001。

(注意:

㏑x是以e为底的自然对数)(提示:

牛顿切线法的计算公式为x=x-f(x)/f′(x)).

#include"stdio.h"

#include"math.h"

voidmain()

{floatx0,x1;

x0=2;

x1=x0-(x0+log(x0)-1.56)/(1+1/x0);

while(fabs(x0-x1)>1e-4)

{x0=x1;

x1=x0-(x0+log(x0)-1.56)/(1+1/x0);

}

printf("x=%8.4f\n",x1);

}

运行结果:

x=1.2987

6.编写程序,用牛顿切线法求方程f(x)=x^3+2x^2-14=0(其中^表示幂运算),在区间(0,5)上的近似实根r,迭代初值自选,精确到0.0001。

{提示:

牛顿切线法的计算公式为x=x-f(x)/f’(x)}.

#include"stdio.h"

#include"math.h"

voidmain()

{floatx0,x1;

x0=2.5;

x1=x0-(x0*x0*x0+2*x0*x0-14)/(3*x0*x0+2*2*x0);

while(fabs(x0-x1)>1e-4)

{x0=x1;

x1=x0-(x0*x0*x0+2*x0*x0-14)/(3*x0*x0+2*2*x0);

}

printf("x=%10.4f\n",x1);

}

运行结果:

x=1.8957

7.要求:

编写程序,用梯形法求一元函数f(x)=㏑(x+1)+x/3,在区间[1,4]上的积分近似值S,保留3位小数(小区间数n=20,此参数不能改动)。

(注意:

㏑x是以e为底的自然对数)

在运行程序时,使用文本框或InputBox函数输入n值,并用适当的方法输出运算结果。

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=log(x+1)+x/3.0;

returny;

}

voidmain()

{doublea,b,s,x,h;

intn=20,i;

a=1.0;b=4.0;

h=fabs(b-a)/n;

s=(f(a)+f(b))/2.0;

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

{x=a+i*h;s=s+f(x);}

s=s*h;

printf("s=%8.3f\n",s);

}

运行结果:

s=6.160

8.编写程序,用梯形法求一元函数f(x)=7x^3+2x^2-12x-16(其中^表示幂运算),在区间[3,5]上的积分近似植S,保留2位小数(小区间数n=25,此参数不能改动,否则影响答案)

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=7*x*x*x+2*x*x-12*x-16;

returny;

}

voidmain()

{doublea,b,s,x,h;

intn=25,i;

a=3.0;b=5.0;

h=fabs(b-a)/n;

s=(f(a)+f(b))/2.0;

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

{x=a+i*h;s=s+f(x);}

s=s*h;

printf("s=%8.2f\n",s);

}

运行结果:

s=889.52

方法二:

#include"stdio.h"

doublef(doublex)

{

doubley;

y=7*x*x*x+2*x*x-12*x-16;

returny;

}

voidmain()

{

doublea,b,x,y1,y2,h,s;

inti,n;

n=25;

a=3;b=5;

h=(b-a)/n;

s=0;

x=a;

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

{

y1=f(x);

y2=f(x+h);

s=s+(y1+y2)*h/2;

x=x+h;

}

printf("s=%.2f\n",s);

}

9.编写程序,用普通迭代法求方程f(x)=x+㏒x-3.18=0的近似实根r,迭代初值为2.5,要求结果保留4位小数。

(注意:

㏒x是以10为底常用对数)(提示:

必须把方程f(x)=0化成其等价形式x=g(x))(本题允许使用其他迭代法)

要求:

在运行程序时,使用文本框或InputBox函数输入迭代初值,并用适当的方法输出运算结果

#include"stdio.h"

#include"math.h"

voidmain()

{floatx0,x1;

x0=2.5;

x1=3.18-log10(x0);

do

{x0=x1;

x1=3.18-log10(x0);}

while(fabs(x0-x1)>1e-4);

printf("x=%8.4f\n",x1);

}

运行结果:

x=2.7419

10.编写程序,用普通迭代法求方程f(x)=x+lgx-3.18=0的近似实根r,迭代初值为2.5,精确到0.0001。

(注意:

lgx是以10为底的常用对数)[提示:

必须把方程f(x)=0化成其等价形式x=g(x)](本题允许使用其他迭代法)

#include"stdio.h"

#include"math.h"

voidmain()

{floatx0,x1;

x0=2.5;

x1=3.18-log10(x0);

do

{x0=x1;

x1=3.18-log10(x0);}

while(fabs(x0-x1)>1e-4);

printf("x=%8.4f\n",x1);

}

运行结果:

x=2.7419

11.编写程序,用二分法求一元非线性方程f(x)=x+cosx-2.8=0在区间(0,5)上的近似实根r,精确到0.0001。

#include"stdio.h"

#include"math.h"

doublef(doublex)

{doubley;

y=x+cos(x)-2.8;

returny;

}

doublexpoint(doublex1,doublex2)

{doubley;

y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));

returny;

}

doubleroot(doublex1,doublex2)

{doublex,y,y1;

y1=f(x1);

do

{x=xpoint(x1,x2);

y=f(x);

if(y*y1>0){y1=y;x1=x;}elsex2=x;

}while(fabs(y)>=0.0001);

returnx;

}

voidmain()

{doublex,x1,x2;

x1=0;x2=5;

if(f(x1)*f(x2)>0)printf("此区间无根");

elsex=root(x1,x2);

printf("x=%8.4f\n",x);

}

运行结果:

x=3.6657

12.编写程序,计算出1到500之间所有满足下列条件的整数的和:

该整数的所有因子

(包括1,但不包括整数本身)之和等于整数本身。

#include"stdio.h"

voidmain()

{intsum=0,i,j,s;

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

{s=0;

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

if(i%j==0)s=s+j;

if(i==s)sum=sum+i;

}

printf("sum=%d\n",sum);

}

运行结果:

sum=530

13.编写程序,界面如下。

统计在所有3位数中,其个位、十位、百位上的数码相加等于9的数据个数。

点击“运行“按钮输出结果。

〈image.gif>

#include"stdio.h"

voidmain()

{inti,a,b,c,sum=0;

for(i=100;i<=999;i++)

{a=i/100;

b=(i-100*a)/10;/*b=(i%100)/10;*/

c=i-100*a-10*b;/*c=i%10;*/

if(a+b+c==9)sum++;

}

printf("sum=%d",sum);

}

运行结果:

sum=45

14.设计如图所示的运行界面,从键盘输入一批不少于10个数的任意数据,点击“计算”按钮,将实现如下功能:

去掉其中的最大数和最小数,输出剩余数据的平均值(保留两位小数)。

〈image001.gif>

#include"stdio.h"

voidmain()

{inti;

floatx,min,max,sum=0,ave;

printf("输入10个数:

\n");

scanf("%f",&x);

max=x;min=x;sum=sum+x;

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

{scanf("%f",&x);sum=sum+x;

if(x>max)max=x;

if(x

}

ave=(sum-max-min)/(i-2);

printf("sum=%10.2f\n",ave);

}

运行结果:

15.编写程序,计算出300到810之间所有满足下列条件的整数的平方根和:

整数能被其每位数字的和整除。

要求:

运行程序,将结果四舍五入保留4位小数,并采用适当的方式输出。

#include"stdio.h"

#include"math.h"

voidmain()

{inti,a,b,c;

floatsum=0;

for(i=300;i<=810;i++)

{a=i/100;

b=(i-100*a)/10;/*b=(i%100)/10;*/

c=i-100*a-10*b;/*c=i%10;*/

if(i%(a+b+c)==0)sum=sum+sqrt(i);

}

printf("sum=%10.4f\n",sum);

}

运行结果:

sum=2368.6831

16.编写程序,计算出1000到5000之间能被3整除但不能被13整除的整数的所有的整数的平方根的和。

保留4位小数

#include"stdio.h"

#include"math.h"

voidmain()

{inti;floatsum=0;

for(i=1000;i<=5000;i++)

if(i%3==0&&i%13!

=0)sum=sum+sqrt(i);

printf("sum=%10.4f\n",sum);

}

运行结果:

sum=65994.6641

17.编写程序,界面如下。

统计在所有3位数中,其个位、十位、百位上的数码相加等于21的数据个数。

点击“运行”按钮输出结果。

〈image115.gif>

#include"stdio.h"

voidmain()

{inti,a,b,c,sum=0;

for(i=100;i<=999;i++)

{a=i/100;

b=(i-100*a)/10;/*b=(i%100)/10;*/

c=i-100*a-10*b;/*c=i%10;*/

if(a+b+c==21)sum++;

}

printf("sum=%d\n",sum);

}

运行结果:

sum=28

18.编写程序,计算出1000到9900之间所有能被3和7同时整除的整数之和。

#include"stdio.h"

voidmain()

{inti;

longsum=0;

for(i=1000;i<=9900;i++)

if(i%3==0&&i%7==0)sum=sum+i;

printf("sum=%ld\n",sum);

}

运行结果:

sum=2310288

19.编写程序,从键盘输入一个3位正整数,试求其个、十、百位数之和(例如:

136的各位数之和为10)。

要求:

用可视化程序设计出如下界面,点击“确认”按钮输出运算结果

#include"stdio.h"

voidmain()

{inti,a,b,c,sum=0;

printf("enteri:

");

scanf("%d",&i);

a=i/100;

b=(i-100*a)/10;/*b=(i%100)/10;*/

c=i-100*a-10*b;/*c=i%10;*/

sum=a+b+c;

printf("i=%d,sum=%d",i,sum);

}

运行结果:

i=123,sum=6

20.编写程序,计算并输出下面数列前n(设n=45)项中所有偶数项的和。

1*2*3,3*4*5,5*6*7,……,(2n-1)*2n*(2n+1),……

#include"stdio.h"

voidmain()

{intn;

longsum=0;

for(n=2;n<=45;n=n+2)

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

printf("sum=%ld\n",sum);

}

运行结果:

sum=4095564

21.编写程序,计算下面数列前n项(设n=50)中奇数项的和。

结果取4位小数。

1/(1*2*3),1/(2*3*4),1/(3*4*5),……,1/(n(n+1)(n+2),……

#include"stdio.h"

voidmain()

{intn;

floatsum=0;

for(n=1;n<=50;n=n+2)

sum=sum+1.0/(n*(n+1)*(n+2));

printf("sum=%10.4f\n",sum);

}

运行结果:

sum=0.1931

22.编写程序,计算并输出下面数列前n(设n=15)项的和。

用科学技术法表示结果,尾数取4位小数。

1!

,2!

,3!

,4!

,……,n!

,……(其中,!

表示求阶乘)。

#include"stdio.h"

voidmain()

{intn;

floatsum=0,p=1;

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

{p=p*n;sum=sum+p;}

printf("sum=%15.4e\n",sum);

}

运行结果:

sum=1.4016e+012

23.编写程序,计算并输出下面数列前30项的和。

1*2*3,3*4*5,5*6*7,……,(2n-1)*2n*(2n+1),……

#include"stdio.h"

voidmain()

{intn;

longsum=0;

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

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

printf("sum=%ld\n",sum);

}

运行结果:

sum=1728870

24.编写程序,计算并输出下面数列前40项的和,结果取6位小数,小数点后第5位四舍五入。

2/3,4/5,6/7,8/9,10/11,12/13,14/15,……,(2n)/(2n+1)

要求:

在运行程序时,使用文本框或InputBox函数输入n值,并用适当的方法输出运算结果。

#include"stdio.h"

voidmain()

{intn;

floatsum=0;

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

sum=sum+2.0*n/(2*n+1);

sum=(int)(sum*10000+0.5)/10000.0;

printf("sum=%f\n",sum);

}

运行结果:

sum=38.161500

25.编写程序,求下面数列前40项的和。

结果取4位小数。

1,1/2^4,1/3^4,1/4^4,……,1/n^4,……(其中,^表示幂运算)

#include"stdio.h"(1.0823)

#include"math.h"

voidmain()

{intn;

floatsum=0;

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

sum=sum+1.0/pow(n,4);

printf("sum=%10.4f\n",sum);

}

运行结果:

sum=1.0823

26.编写程序,计算并输出下面数列前n项(设n=50)的和。

1*2,-2*3,3*4,-4*5,……,(-1)^(n-1)*n*(n+1),……(其中,^表示幂运算)

#include"stdio.h"

voidmain()

{intn,s=1;

intsum=0;

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

{sum=sum+s*n*(n+1);s=-s;}

printf("sum=%d\n",sum);

}

运行结果:

sum=-1300

27.编写程序,计算并输出下面数列前n(设n=45)项中所有奇数项的和。

1*2,2*3,3*4,4*5,……,n*(n+1),……

#include"stdio.h"

voidmain()

{intn;

intsum=0;

for(n=1;n<=45;n=n+2)

sum=sum+n*(n+1);

printf("sum=%d\n",sum);

}

运行结果:

sum=16744

28.编写程序,计算下面数列前n项(设n=50)中奇数的和。

结果取4位小数。

1/(1*2*3),1/(2*3*4),1/(3*4*5),……,1/(n(n+1)(n+2)),……

#include"stdio.h"

voidmain()

{intn;

floatsum=0;

for(n=1;n<=50;n=n+2)

sum=sum+1.0/(n*(n+1)*(n+2));

printf("sum=%8.4f\n",sum);

}

运行结果:

sum=0.1931

29.编写程序,求下面数列前50项的和。

结果取4位小数。

1,1/(3*3),1/(5*5),1/7*7),……,1/(2n-1)*(2n-1),……

#include"stdio.h"

voidmain()

{intn;

floatsum=0;

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

sum=sum+1.0/((2*n-1)*(2*n-1));

printf("sum=%10.4f\n",sum);

}

运行结果:

sum=1.2287

30.编写程序,计算并输出如下数列前35项的和。

-1*2*3,2*3*4,-3*4*5,……,(-1)^n*(n*(n+1)*(n+2)),……

(其中,(-1)^n表示-1的n次方)

#include"stdio.h

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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