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

else if( min>max ) min=max; }

return min; }

8、以下程序功能:输入数组,最大的与最后一个元素交换,最小的与第一个元素交换,输

出数组。请填空。 #include input(int number[10]) {

int i;

/***********SPACE***********/ for(i=0; i<9或9>i ;i++) scanf(\ scanf(\}

max_min(int array[10]) {

int *max,*min,k,l; int *p,*arr_end; arr_end=array+10; max=min=array;

for(p=array+1;p*max) max=p; else if(*p<*min)

/***********SPACE***********/ min=p ; k=*max; l=*min; *p=array[0]; array[0]=l;

/***********SPACE***********/ l=*p ; *p=array[9];

/***********SPACE***********/ array[9]=k ; k=*p; }

output(int array[10]) {

int *p;

for(p=array;p

- 21 -

main() {

int number[10]; input(number); max_min(number); output(number); }

9、下面的函数strcat(str1, str2) 实现将字符串str2拼接到字符串str1后面的功能。请在程序

的空白处填入一条语句或一个表达式。 char *strcat(char *str1,char *str2) { char *t=str1;

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

while( *str1!= '\\0' 或 *str1 ) str1++; /***********SPACE***********/

while( *str1++=*str2++ ); return (t); }

10、函数fun的功能是使一个字符串按逆序存放,请填空。

void fun(char str[]) { char m;

int i,j;

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

for(i=0,j=strlen(str)-1;i< j ;i++,j--) { m=str[i];

/***********SPACE***********/ str[i]= str[j] ; str[j]=m; }

printf(\}

四、程序改错题

1、功能:下面程序将输入的大写字母改写成小写字母输出,其他字符不变。请判断下面程

序的正误,如果错误请改正过来。 main( ) { char c;

c = getchar ( ) ;

/**********FOUND**********/

c = (c>='A'||c<='Z') ? c-32:c+32 ; // c = (c>='A'&&c<='Z') ? c+32:c ; printf(\}

- 22 -

2、功能:编写函数求2!+4!+6!+8!+10+12!+14!。

#include long sum(int n) {

/**********FOUND**********/ int i,j // int i,j; long t,s=0;

/**********FOUND**********/

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

t=1;

for(j=1;j<=i;j++) t=t*j; s=s+t; }

/**********FOUND**********/ return(t); // return(s); }

main() {

printf(\}

3、功能:编写函数fun计算下列分段函数的值: x*x+x x<0且x≠-3

f(x)= x*x+5x 0≤x<10且x≠2及x≠3 x*x+x-1 其它

#include double fun(float x) {

/**********FOUND**********/ double y // float y;

/**********FOUND**********/

if (x<0 ||x!=-3.0) // if (x<0 && x!=-3.0) y=x*x+x;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=x*x+5*x; else

y=x*x+x-1;

/**********FOUND**********/ return x; // return y; }

main() {

- 23 -

double f; float x;

printf(\ scanf(\ f=fun(x);

printf(\}

4、功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include main() {

char c;

int letters=0,space=0,digit=0,others=0; printf(\ /**********FOUND**********/

while((c=getchar())=='\\n') // while((c=getchar())!='\\n') {

/**********FOUND**********/

if(c>='a'&&c<='z'&&c>='A'&&c<='Z') //if( c>='a'&&c<='z' || c>='A'&&c<='Z' )

//或if( c<='z'&&c>='a' || c>='A'&&c<='Z' )

//或 if( c <= 'z' && c >= 'a' || c >= 'A' && c<='Z' ) letters++;

/**********FOUND**********/ else if(c=!' ') // else if(c==' ') space++;

else if(c>='0'&&c<='9') digit++; else

others++; }

printf(\}

5、功能:以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的最大的n。

#include #include \main() {

int n,s;

/**********FOUND**********/ s==n=0; //s=n=0;

/**********FOUND**********/ while(s>1000) // while(s<=1000)

- 24 -