c语言习题册及答案 下载本文

.

void main() { int i;

for(i=1;i

{ static int x=1; x*=x+1;

printf(“%d”,x); }

10.以下程序的输出结果是( 3 )。 #include int f(int n)

{ if(n==1) return 1;

else return f(n-1)+1; } void main() { int i,j=0;

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

printf(“%d\\n”,j); }

11.下列程序执行后输出的结果是( #include int d=1; fun(int p) { int d=5; d+=p++;

printf(“%d”,d); } void main( ) { int a=3; fun(a); d+=a++;

printf(\%d\\n\

12.以下程序输出的结果是( 8 )#include

int abc(int u,int v); void main()

{ int a=24,b=16,c; c=abc(a,b);

printf(\%d\\n\,c);} int abc(int u,int v) { int w;

.

84 )。。 .

while(v)

{w=u%v;u=v;v=w;} return u; }

13.以下程序的输出结果是( 61515 )。 #include int d=1; fun (int p)

{ static int d =5; d+=p;

printf(“%d”,d); return (d); } void main() { int a=3;

printf(“%d\\n”,fun(a+fun(d))); } 14.请选择下列程序的运行结果( 6 )。 #include try()

{ static int x=3; x++;

return (x); } void main() { int i,x;

for(i=0;i<=2;i++) x=try();

printf(“%d\\n”,x); } 四、程序填空

1.以下函数用以求x的y次方,请填空。 double fun(double x,int y) { int i;

double z=1.0;

for(i=1;i 【1】 ;i++) <=y z= 【2】 ; z*x return z; }

2.阅读以下程序并填空,该程序是求阶乘的累加和。 S=0!+1!+2!+.........+n! #include long f(int n)

.

.

{ int i; long s;

s= 【1】 ; 1 for(i=1;i<=n;i++) s= 【2】 ; s*i return s;} void main() { long s; int k,n;

scanf(“%d”,&n); s= 【3】 ; 0 for(k-0;k<=n;k++) s=s+ 【4】 ; f(k) printf(“\\n”,s); }

3.请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。

例如:当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。

注意:部分源程序给出如下,请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序:

#include #include #include void main() { int n,m; long sum;

【1】 ; sum=0 system(\

printf(\scanf(\while(n<=m)

{ 【2】 ; n++; } sum+=n printf(\【3】 \\n\ld 五、改错题

1.下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。

例如:当n为5时,函数值应为10.407143。f(x)函数定义如下:

.

.

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include #include

/*************found**************/ double f(double x) { if(x==0.0||x==2.0) return 0.0; else if(x<0.0)

return(x-1)/(x-2); else

return(x+1)/(x-2); } double fun(int n)

{ int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;}

/*************found**************/ return s } // return s ; } void main()

{ system(\

printf(\

2.下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值: t=1+1/2+1/3+1/4+…+1/m

例如:若输入5,则应输出2.283333。请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include #include #include double fun(int m) { double t=1.0;

.

?(x?1)?(x?2)??0?(x?1)?(x?2)f(x)=?x?0x?0或x?2x?0