printf(“\\nn=%d”,n); }
【1】 A)k*10 B)k C)k/10 D)k*10 【2】 A)a2*10 B)a2 C)a2/10 D)a2
7.以下程序的功能是用二分法求方程2x3?4x2?3x?6?0的根,并要求绝对误 main() { float m=-100,n=90,r; r=(m+n)/2; while(f(r)*f(n)!=0) { if(f(m)*f(r)>0) m=r; else n=r; if(fabs(f(r))<=0.001) break; r=(m+n)/2; } printf(“The is fangcheng jie is %6.3f\\n”,r); }
8.以下程序的功能是计算下面函数的值。请填空。
F(x,y,z)?sin(x)sin(y)sin(z)??sin(x?y)*sin(x?z)sin(y?z)*sin(y?x)sin(z?x)*sin(z?y)差不超过0.001。请填空。 #include
return(2*x*x*x-4*x*x+3*x-6); }
#include
float f(float,float,float); main() {
float x,y,z,sum;
printf(“\\ninput x,y,z:\\n”); scanf(“%f %f %f”,&x,&y,&z);
sum=f(x,x-y,x-z)+f(y,y-z,y-x)+f(z,z-x,z-y); printf(“sum=%f\\n”,sum); }
float f(float a,float b,float c)
{ float value; value=sin(a)/(sin(b)*sin(c)); return(value); }
9.以下程序的运行结果是输出如下图形。请填空。 * * * * * * * * * * * * * * * * * * * * * * * * * #include
10.以下程序的功能是用递归方法计算五位学生的年龄,请填空。 递归公式如下:
10(n?1)? age(n)??age(n?1)?2(n?1)?#include
age(int n) {
int c;
if(n==1) c=10; else c=age(n-1)+2; return(c); } main()
{
int n=5;
printf(“age:%d\\n”,age(5));}
(三)编程题(20分)
1.用函数编程打印以下图案。
(1) (2) (3) ****** * *
****** *** ***
****** ***** *****
******* ****** *******
**
Void f1(int n) { int i;
for(i=1;i<=n;i++) printf(“ “); }
Void f2(int n) { int i;
for(i=1;i<=n;i++) printf(“*“); }
(1)main() (2)main() (3)main() { { { int i; int i; int i;
f(i=1;i<=4;i++) f(i=1;i<=4;i++) f(i=1;i<=4;i++) { { {
f1(4-i); f2(2*i-1); f1(4-i); f2(6); printf(“\\n”); f2(2*i-1); printf(“\\n”); } printf(“\\n”); } }
getch(); getch(); getch(); } } }
2.以下函数p的功能是用递归方法计算x的n阶勒让德多项式的值。已有调用
语句p(n,x);请编写p函数。递归公式如下:
1(n?0)??Px(x)??x(n?1)
?((2n?1)*x*P(x)?(n?1)*P(x))/n(n?1)n?1n?2? float p(int n,int x)
{ } float p(int n,int x) {
if(n==0) return 1;
else if(n==1) return x;
else ((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n; }
3.以下程序的功能是用牛顿法求解方程f(x)=cosx-x=0。已有初始值x0=3.1415/4,要求
绝对误差不超过0.001,函数f用计算迭代公式中xn的值,请编写f函数。牛顿迭代公式是:
即:
xn?1xn?1?xn?f(xn)/f?(xn)
?xn?(cosxn?xn)/(sinxn?1)#include float f(float x0) { return x0-(cos(x0)-x0)/(sin(x0)-1); } 4.以下程序的功能是应用弦截法求方程x3?5x2?16x?80?0的根,其中f函数可根据 指定的x的值求出方程的值;函数xpoint可根据x1和x2求出f(x1)和f(x2)的连线与x 轴的交点;函数root用来求区间(x1,x2)的实根,请编写root函数。 #include { ? } main() { float x1,x2,f1,f2,x; do{ printf(“input x1,x2:\\n”); scanf(“%f %f”,&x1,&x2); printf(“x1=%5.2f,x2=%5.2f\\n”,x1,x2); f1=f(x1); f2=f(x2); }while(f1*f2>=0); x=root(x1,x2); printf(“A root of equation is %8.4f”,x); } #include float root(float x1,float x2) { float x; do { x=x2-f(x2)*(x2-x1)/(f(x2)-f(x1)); if(f(x)*f(x2)>0) x1=x; else x2=x; }while(fabs(f(x))>1e-6); return x; } float f(float x) { return x*x*x-5*x*x+16*x-80; }