C语言程序填空题 下载本文

printf(\; } r( int m )

{ printf(\② ); m = ③ ; if( ④ ) ⑤ ; }

【3.31】输入n值,输出高度为n的等边三角形。例如当n=4时的图形如下: * *** *****

*******

#include

void prt( char c, int n )

{ if( n>0 )

{ printf( \;

① ;

}

}

main()

{ int i, n;

scanf(\;

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

{ ② ;

③ ; printf(\; } }

【3.32】下面的函数实现N层嵌套平方根的计算。 double y(double x, int n) { if( n==0 ) return(0);

else return ( sqrt(x+( ① )) ); }

【3.33】函数revstr(s)将字符串s置逆,如输入的实参s为字符串\, 则返回时 s 为字符串\。递归程序如下: revstr( char *s )

{ char *p=s, c;

while(*p) p++;

① ;

if(s

{ c=*s;

*s=*p;

② ;

revstr(s+1);

③ ;

}

}

如下是由非递归实现的revstr(s)函数:

revstr (s)

char *s; { char *p=s, c; while( *p ) p++; ④ ; while( s

【3.34】下面函数用递归调用的方法,将str中存放的长度为n的字符串反转过来,例如原来是\,反序为\。

void invent(char *str,int n)

{ char t;

t=*str; *str=*(str+n-1); *(str+n-1)=t; if( n>2 ) invent ( ① ,n-2); else ② ; }

【3.35】从键盘上输入10个整数,程序按降序完成从大到小的排序。 #include int array[10]; sort( int *p, int *q ) { int *max, *s; if( ① ) return;

max=p; for( s=p+1; s<=q; s++)

if( *s > *max ) ② ; swap( ③ ); sort( ④ ); }

swap( int *x, int *y ) { int temp; temp=*x; *x=*y; *y=temp; } main()

{ int i; printf(\; for( i=0; i<10;i++)

scanf(\; sort( ⑤ ); printf(\; for( i=0; i<10; i++)

printf(\;

}

【3.36】下面函数的功能是将一个整数存放到一个数组中。存放时按逆序存放。例如:483存放成\。#include

void convert(char *a, int n) { int i;

if((i=n/10) !=0 ) convert( ① , i ); *a = ② ; }

char str[10]= \; main()

{ int number;

scanf(\; convert( str, number ); puts(str); }

【3.38】下面程序通过指向整型的指针将数组a[3][4] 的内容按3行×4列的格式输出,请给printf( )填入适当的参数,使之通过指针p将数组元素按要求输出。 #include

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p=a; main()

【3.37】下面程序的功能是实现数组元素中值的逆转。 { int i,j; #include main()

{ int i,n=10,a[10]={1,2,3,4,5,6,7,8,9,10}; invert(a,n-1); for(i=0;i<10;i++) printf(\; printf(\; }

invert(int *s,int num) { int *t,k; t=s+num; while( ① ) { k=*s; *s=*t; *t=k; ② ; ③ ; } }

for(i=0;i<3;i++ ) { for(j=0;j<4;j++ ) printf(\① ); } }

【3.39】下面程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。 #include main ( )

{ char str[81], *sptr; int i;

for(i=0;i<80;i++ ) { str[i]=getchar( ); if(str[i]== '\\n') break; }

str[i]= ① ; sptr=str; while( *sptr ) putchar( *sptr ② ); }

【3.40】下面函数的功能是将字符变量的值插入已经按ASCII码值从小到大排好序的字符串中。 void fun(char *w,char x,int *n)

{ int i,p=0;

while(x>w[p]) ① ;

for(i=*n;i>=p;i--) ② ;

w[p]=x;

++*n;

}

【3.41】下面程序的功能是从键盘上输入两个字符串,

对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。

#include

strmerge(a,b,c) /* 将已排好序的字符串a、b合并到c */

char *a,*b,*c; { char t,*w; w=c;

while( *a!= '\\0' ① *b!='\\0' )

{ t= ② ?*a++:*b<*a ? *b++ : ( ③ ); /* 将*a、*b的小者存入t */ if( *w ④ '\\0' ) *w=t;

else if( t ⑤ *w) *++w=t; /* 将与*w不相同的t存入w */ }

while( *a != '\\0' ) /* 以下将a或b中剩下的字符存入w */

if( *a != *w ) *++w=*a++; else a++;

while( *b != '\\0')

if( *b != *w ) *++w=*b++; else b++;

*++w = ⑥ ;

}

strsort( char *s ) /* 将字符串s中的字符排序 */

{ int i,j,n;

char t,*w;

⑦ ;

for( n=0;*w != '\\0'; ⑧ ) w++; for( i=0;is[j] ) { ⑨ } } main( )

{ char s1[100],s2[100],s3[200]; printf(\; scanf(\,s1);

printf(\; scanf(\,s2); strsort(s1); strsort(s2); ⑩ = '\\0';

strmerge(s1,s2,s3);