C语言综合练习题 下载本文

t=x-y; c=f2(s,t); return (c);

}

int f2(int x,int y) { return (x+y); }

A、c=1 B、c=2 C、c=3 D、c=4

110、设j和k都是int类型,则下面的for循环语句( A )。

for(j=0,k=0;j<=9&&k!=876;j++) scanf(\

A、最多执行10次 B、最多执行9次

C、是无限循环 D、循环体一次也不执行 111、下面的函数完成的功能是( A )。

double power(double x,int n) { double p;

if(n>0)

for(p=1.0;n>0;n--) p=p*x;

else if(n==0) p=1.0; return (p); }

A、求xn B、求nx C、求x*n D、求x(n-1)

112、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( A )。

A、自动(auto) B、静态(static) C、外部(extern) D、寄存器(register) 113、以下程序的输出结果是( D )。

A、AfghdEFG B、Abfhd C、Afghd D、Afgd #include #include void main()

{ char *p1,*p2,str[50]=”ABCDEFG”;

p1=\ p2=\

strcpy(str+1, p2+1); strcpy(str+3, p1+3); printf(\}

114、设以下变量均为int类型,则值不等于7的表达式是( C )。

A、(x=y=6,x+y,x+1) B、(x=y=6,x+y,y+1) C、(x=6,x+1,y=6,x+y) D、(y=6,y+1,x=y,x+1)

115、变量t是整型变量,下列各选项中不正确的赋值语句是( D )。

A、++t; B、n1=(n2=(n3=0)); C、y=t==1; D、a=b+c=1;

116、能正确表达数学逻辑关系“0

A、(0

- 17 -

117、已知year为整型变量,不能使表达式(year%4==0&&year0!=0)||year@0==0的

值为“真”的数据是( A )。

A、1990 B、1992 C、1996 D、2000 118、以下合法的字符型常量是( A )。

A、'\\x13' B、'\\081' C、'65' D、\

三、程序填空题

1、有以下程序段,且变量已正确定义和赋值:

for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf(\

请填空,使下列程序段的功能与之完全相同: s=1.0;k=1;

/***********SPACE***********/ while( k<=n )

{ s=s+1.0/(k*(k+1)); k++; } printf(\

2、以下程序的功能是:计算一元二次方程的根。

#include

/***********SPACE***********/ #include main() {

double x1,x2,imagpart; float a,b,c,disc,realpart;

scanf(\ printf(\

/***********SPACE***********/ if( fabs(a) <=1e-6) printf(\ else

disc=b*b-4*a*c; if(fabs(disc)<=1e-6)

printf(\ /***********SPACE***********/

else if( fabs(disc)>1e-6 或 1e-6

x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a);

printf(\ } else {

- 18 -

realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a); printf(\

printf(\ printf(\ } }

3、以下程序的功能是:将输入的正整数按逆序输出,例如:若输入135则输出531。请填

空。

#include void main() { int n, s;

printf(\:\ scanf(\%d\,&n); printf(\ \

do{ s=n%10; printf(\%d\,s);

/***********SPACE***********/ n=n/10 或 n/=10 ;

}while(n!=0); printf(\}

4、以下程序的功能是:求1!+3!+5!+……+n!的和。

#include main() {

long int f,s; int i,j,n;

/***********SPACE***********/ s=0 ; scanf(\

/***********SPACE***********/

for(i=1;i<=n; i+=2或i=i+2或i++,i++ ) {

f=1;

/***********SPACE***********/

for(j=1; j<=i或i>=j或jj ;j++) /***********SPACE***********/ f=f*j 或 f*=j ; s=s+f; }

printf(\}

- 19 -

5、以下函数的功能是求出形参a所指数组中的最大值和最小值,并把它们分别存入max和

min所对应的实参中,请填空。 void fun(int *a,int n,int *max,int *min) { int *p

*max=*min=a[0];

/***********SPACE***********/

for(p=a+1;p< a+n ;p++) {

/***********SPACE***********/

if( *max<*p ) *max=*p;

/***********SPACE***********/

if( *min>*p ) *min=*p; } }

6、以下程序要求输出结果为: A,B 65,66

#include void main() {

/***********SPACE***********/ char a, b ;

/***********SPACE***********/ a= 'a' 或 97 ; b='b'; a=a-32;

/***********SPACE***********/ b=b- 32 ;

printf(\}

7、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这

N个最大值中的最小的那个数作为函数值返回。请填空。 #include #define N 100 int fun(int (*a)[N])

{ int row,col,max,min;

for(row=0;row

{ for(max=a[row][0],col=1;col

if( max

/***********SPACE***********/

- 20 -