文档库 最新最全的文档下载
当前位置:文档库 › 程序填空201271

程序填空201271





一、程序填空 (共131题)
Turbo C(共131试题)
3)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:已定义一个含有30个元素的数组s,函数fun1的功能是按

顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序

每五个元素求一个平均值, 并将该值存放在数组w中。



-------------------------------------------------------*/



float s[30],w[6];

fun1(float s[])

{

int k,i;

for(k=2,i=0;i<30;i++)

{

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

________________ ;

k+=2;

}

}

fun2(float s[],float w[])

{

float sum=0.0;

int k,i;

for(k=0,i=0;i<30;i++)

{

sum+=s[i];

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

________________;

{

w[k]=sum/5;

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

________________ ;

k++;

}

}

}

main()

{

int i;

fun1(s);

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

________________;

for(i=0;i<30;i++)

{

if(i%5==0) printf("\n");

printf("%8.2f",s[i]);

}

printf("\n");

for(i=0;i<6;i++)

printf("%8.2f",w[i]);

}





答案:

【1】 s[i]=k 或 s[i]=(i+1)*2

【2】 if( ( i + 1 )%5 == 0 ) 或 if( ( i + 1 )/5*5 ==i+1)

【3】 sum=0 或 sum=0.0

【4】 fun2(s,w)

50.以下程序是用选择法对20个整数按升序排序。
答案:1.#define N 20
2.k=i
3.jj
4.k!=i

4)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



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



-------------------------------------------------------*/



main()

{

long int f,s;

int i,j,n;

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

________________;

scanf("%d",&n);

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

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

{

f=1;

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

for(j=1; ________________;j++)

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

________________;

s=s+f;

}

printf("n=%d,s=%ld\n",n,s);

}



答案:

【1】 s=0

【2】 i+=2 或 i=i+2 或 i++,i++

【3】 j<=i 或 i>=j 或 jj

【4】 f= f * j



5)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:将一个字符串中下标为m的字符开始的全部字符复制成为另

一个字符串。



-------------------------------------------------------*/



#include

void strcopy(char *str1,char *str2,int m)

{

char *p1,*p2;

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

________________;

p2=str2;



while(*p1)

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

________________;

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

________________;

}

main()

{

int i,m;

char str1[80],str2[80];

gets(str1);

scanf("%d",&m);

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

________________;

puts(str1);puts(str2);

}



答案:

【1】 p1= str1 + m

【2】 *p2++=*p1++ 或 *(p2++)=*(p1++) 或 *p2=*p1,p2++,p1++ 或 *p2=*p1++,p2++ 或 *p2++=*p1,p1++

【3】 *p2='\0' 或 *p2=0 或 *p2=NULL

【4】 strcopy(str1,str2,m)



6)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以下程序是用选择法对10个整数按升序排序。



-------------------------------------------------------*/



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

________________



main()

{

int i,j,k,t,a[N];

for(i=0;i<=N-1;i++)

scanf("%d",&a[i]);

for(i=0;i
{

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

________________;

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

for(j=i+1; ________________;j++)

if(a[j]
/***********SPACE***********/

if(________________)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

printf("output the sorted array:\n");

for(i=0;i<=N-1;i++)

printf("%5d",a[i]);

printf("\n");

}



答案:

【1】 #define N 10

【2】 k=i

【3】 jj 或 j<=N-1 或 N-1>=j

【4】 k != i



7)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:从键盘上输入一个字符串, 将该字符串升序排列后输出到

文件test.txt中,然后从该文件读出字符串并显示出来。



-------------------------------------------------------*/



#include

#include

#include



main()

{

FILE *fp;

char t,str[100],str1[100]; int n,i,j;

if((fp=fopen("test.txt","w"))==NULL)

{

printf("can't open this file.\n");

exit(0);

}

printf("input a string:\n"); gets(str);

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

________________;

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

for(i=0; ________________ ;i++)

for(j=0;j
/***********SPACE***********/

if(________________)

{

t=str[j];

str[j]=str[j+1];

str[j+1]=t;

}

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

________________;

fclose(fp);

fp=fopen("test.txt","r");

fgets(str1,100,fp);

printf("%s\n",str1);

fclose(fp);

}



答案:

【1】 n=strlen(str) 或 for(n=0;str[n]!='\0';n++) 或 for(n=0;str[n];n++) 或 for(n=0;str[n]!=0;n++)

【2】 ii 或 i<-1+n 或 i

或 n-1>i 或 -1+n>i 或 i<=n-1 或 n-1>=i 或 -1+n>=i

【3】 str[j]>str[ j + 1 ] 或 str[ j + 1 ]
【4】 fputs(str,fp) 或 fprintf(fp,"%s\n",str) 或 fprintf(fp,"%s",str)



8)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以每行5个数来输出300以内能被7或17整除的偶数,并求出

其和。



-------------------------------------------------------*/



#include

#include

main()

{

int i,n,sum;

sum=0;

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

________________;

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

for(i=1; ________________ ;i++)

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

if(________________)

if(i%2==0)

{

sum=sum+i;

n++;

printf("%6d",i);

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

if(________________)

printf("\n");

}

printf("\ntotal=%d",sum);

}



答案:

【1】 n=0

【2】 i<=300 或 i<300 或 300>=i 或 300>i

【3】 i%7 == 0 || i%17 == 0 或 !(i%7)||!(i%17) 或 !(i%17)||!(i%7) 或 !(i%7&&i%17)

【4】 n%5 == 0 或 !(n%5) 或 n/5*5==n



9)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以下程序的功能如(图1)。



-------------------------------------------------------*/



#include

main()

{

int f;

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

________________;

float t,pi;

t=1;pi=t;f=1;n=1.0;

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

while(________________ )

{

n=n+2;

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

________________;

t=f/n;

pi=pi+t;

}

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

________________;

printf("pi=%10.6f\n",pi);

}



答案:

【1】 float n 或 duoble n

【2】 fabs(t)>=1e-6 或 fabs(t)>=0.000001 或 1e-6<=fabs(t) 或 0.000001<=fabs(t)

【3】 f=-f 或 f=-1*f 或 f=f*(-1) 或 f=f*-1 或 f=(-1)*f

【4】 pi= pi * 4 或 pi*=4

(图1)



11)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:求100-999之间的水仙花数

说明:水仙花数是指一个三位数的各位数字的立方和是这个数本身。

例如:153=1^3+5^3+3^3)。



-------------------------------------------------------*/



int fun(int n)

{ int i,j,k,m;

m=n;

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

________________;

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

{

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

________________;

m=(m-j)/10;

k=k+j*j*j;

}

if(k==n)

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

________________;



else

return(0);}

main()

{

int i;

for(i=100;i<1000;i++)

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

if(________________==1)

printf("%d is ok!\n" ,i);

}



答案:

【1】 k=0

【2】 j=m%10 或 j=m-m/10*10 或 j=m-10*(m/10)

【3】 return(1)

【4】 fun(i)

(图1)



12)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:产生并输出如下形式的方阵。

1 2 2 2 2 2 1

3 1 2 2 2 1 4

3 3 1 2 1 4 4

3 3 3 1 4 4 4

3 3 1 5 1 4 4

3 1 5 5 5 1 4

1 5 5 5 5 5 1



-------------------------------------------------------*/



main()

{

int a[7][7];

int i,j;

for (i=0;i<7;i++)

for (j=0;j<7;j++)

{

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

if (________________) a[i][j]=1;

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

else if (i
else if (i>j&&i+j<6) a[i][j]=3;

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

else if (________________) a[i][j]=4;

else a[i][j]=5;

}

for (i=0;i<7;i++)

{

for (j=0;j<7;j++)

printf("%4d",a[i][j]);

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

________________;

}

}



答案:

【1】 i == j || i + j == 6

【2】 a[i][j]=2

【3】 i6 或 j>i && i + j>6 或 ii && i + 6
【4】 printf("\n")



13)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:产生并输出杨辉三角的前七行。



1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1



-------------------------------------------------------*/



main ( )

{

int a[7][7];

int i,j,k;

for (i=0;i<7;i++)

{

a[i][0]=1;

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

________________;

}

for (i=2;i<7;i++)

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

for (j=1;j<________________;j++)

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

a[i][j]= ________________;

for (i=0;i<7;i++)

{

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

for (j=0; ________________;j++)

printf("%6d",a[i][j]);

printf("\n");

}

}



答案:

【1】 a[i][i]=1

【2】 i

【3】 a[i-1][j]+a[i-1][j-1] 或 a[i-1][j-1]+a[i-1][j]

【4】 j<=i 或 i>=j 或 jj 或 j-1j-1



14)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输出100到1000之间的各位数字之和能被15整除的所有数,

输出时每10个一行。



-------------------------------------------------------*/





main()

{

int m,n,k,i=0;

for(m=100;m<=1000;m++)

{

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

________________;

n=m;

do

{

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

k=k+________________ ;

n=n/10;

}

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

________________;

if (k%15==0)

{

printf("%5d",m);i++;

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

if(i%10==0) ________________;

}

}

}

答案:

【1】 k=0

【2】 n%10 或 n-n/10*10 或 n-10*(n/10)

【3】 while(n>0) 或 while(0
【4】 printf("\n")



15)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:分别求出一批非零整数中的偶数、奇数的平均值,用零作

为终止标记。



-------------------------------------------------------*/



main()

{

int x,i=0,j=0;

float s1=0,s2=0,av1,av2;

scanf("%d",&x);

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

while(________________)

{

if(x%2==0) {s1=s1+x;i++;}

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

________________

{

s2=s2+x;

j++;

}

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

________________;

}

if(i!=0)

av1=s1/i;

else

av1=0;

if(j!=0)

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

________________ ;

else

av2=0;

printf("oushujunzhi:%7.2f,jishujunzhi:%7.2f\n",av1,av2);

}



答案:

【1】 x != 0 或 x

【2】 else 或 else if(x%2==1) 或 else if(x%2!=0) 或 if(x%2)

【3】 scanf("%d",&x)

【4】 av2=s2/j



16)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:产生10个[30,90]区间上的随机整数,然后对其用选择法

进行由小到大的排序。



-------------------------------------------------------*/



#include "stdlib.h"

main()

{

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

________________;

int i,j,k;

int a[10];

for(i=0;i<10;i++)

a[i]=random(61)+30;

for(i=0;i<9;i++)

{

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

________________;

for(j=i+1;j<10;j++)

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

if(________________) k=j;

if(k!=i)

{

t=a[k];

a[k]=a[i];

a[i]=t;

}

}

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

for(________________ )

printf("%5d",a[i]);

printf("\n");

}

答案:

【1】 int t

【2】 k=i

【3】 a[k]>a[j] 或 a[j]
【4】 i=0;i<10;i++ 或 i=0;10>i;i++ 或 i=0;i<=9;i+=1 或 i=0;9>=i;i++ 或 i=0;i<10;i+=1 或 i=0;10>i;i+=1 或 i=0;i<=9;i++ 或 i=0;9>=i;i+=1 或

i=0;i<10;++i 或 i=0;10>i;++i 或 i=0;9>=i;++i 或 i=0;i<=9;++i



17)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘

输入。



-------------------------------------------------------*/



#include "stdio.h"

main()

{

char str[80],ch;

int i,k=0;

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

gets(________________);

ch=getchar();

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

for(i=0;________________;i++)

if(str[i]!=ch)

{

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

________________;

k++;

}

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

________________;

puts(str);

}

答案:

【1】 str

【2】 str[i]!='\0' 或 str[i]!=NULL 或 str[i]!=0 或 str[i]

【3】 str[k]=str[i] 或 *(str+k)=*(str+i) 或 str[k]=*(str+i) 或 *(str+k)=str[i]

【4】 str[k]='\0' 或 *(str+k)='\0' 或 str[k]=NULL 或 str[k]=0 或 *(str+k)=0 或 *(str+k)=NULL



18)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:将一个数组中的元素按逆序存放。



-------------------------------------------------------*/



#define N 7

main ()

{

static int a[N]={12,9,16,5,7,2,1},k,s;

printf("\n the origanal array:\n");

for (k=0;k
printf("%4d",a[k]);

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

for (k=0;k
{

s=a[k];

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

________________ ;

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

________________ ;

}

printf("\n the changed array:\n");

for (k=0;k
/***********SPACE***********/

________________ ("%4d",a[k]);

}

答案:

【1】 k++ 或 k= k + 1 或 k+=1 或 ++k

【2】 a[k]=a[N-k-1] 或 a[k]=a[N-1-k] 或 a[k]=a[6-k] 或 *(a+k)=*(a+N-k-1) 或 *(a+k)=*(a+N-1-k] 或 a[k]=a[-1+N-k] 或 a[k]=a[-1-k+N] 或 a[k]=a[-k-1+N] 或 a[k]=a[-k+N-1] 或 *(a+k)=*(a+N-k-1) 或 a[6-k]=s

【3】 a[N-k-1]=s 或 a[N-1-k]=s 或 a[6-k]=s 或 a[N -k -1]=s 或 *(a +N -k -1)=s

【4】 printf



19)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。



-------------------------------------------------------*/



#include "stdio.h"

#include "string.h"

main ( )

{

char str1[80],str2[40];

int i,j,k;

gets(str1);gets(str2);

puts(str1);puts(str2);

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

________________;

puts(str1);

}



JOIN(s1,s2)

char s1[80],s2[40];

{

int i,j;

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


________________;

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

for (i=0; ________________'\0';i++)

s1[i+j]=s2[i];

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

s1[i+j]= ________________ ;

}



答案:

【1】 JOIN(str1,str2)

【2】 j=strlen(s1) 或 for(j=0;s1[j]!='10';j++); 或 for(j=0;s1[j];j++);

【3】 s2[i]!= 或 *(s2 + i)!=

【4】 '\0' 或 NULL 或 0



20)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:求两个非负整数的最大公约数和最小公倍数。



-------------------------------------------------------*/



main()

{

int m,n,r,p,gcd,lcm;

scanf("%d%d",&m,&n);

if(m
p=m*n;

r=m%n;

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

while(________________ )

{

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

m=n;n=r; ________________;

}

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

gcd=________________;

lcm=p/gcd;

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

printf("gcd=%d,lcm=%d\n", ________________);

}



答案:

【1】 r != 0 或 r

【2】 r=m%n 或 r=m-m/n*n

【3】 n

【4】 gcd,lcm 或 n,lcm



21)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:将一个字符串中的前N个字符复制到一个字符数组中去,

不许使用strcpy函数。



-------------------------------------------------------*/



main ( )

{

char str1[80],str2[80];

int i,n;

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

gets(________________);

scanf("%d",&n);

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

for (i=0; ________________ ;i++)

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

________________;

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

________________;

printf("%s\n",str2);



}



答案:

【1】 str1

【2】 ii 或 i<=n-1 或 n-1>=i

【3】 str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i)

【4】 str2[n]='\0' 或 str2[i]='\0' 或 str2[n]=0 或 str2[i]=0 或 *(str2+n)='\0' 或 *(str2+i)='\0' 或 *(str+n)=0 或 *(str2+i)=0



22)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:打印以下图形。



*****

*****

*****

*****

*****



-------------------------------------------------------*/



main ( )

{



char a[5][9]={" "};

int i,j;

for (i=0;i<5;i++)

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

for(j=i; ________________;j++)

a[i][j]='*';

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

for(________________;i<5;i++)

{

for(j=0;j<9;j++)

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

printf("%c", ________________ );

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

*/

________________;

}

}

答案:

【1】 j< i + 5 或 i + 5 >j 或 j<= i + 4 或 i + 4 >j

【2】 i=0

【3】 a[i][j]

【4】 printf("\n")



23)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:求一个二维数组中每行的最大值和每行的和。



-------------------------------------------------------*/



#include "stdlib.h"

main()

{

int a[5][5],b[5],c[5],i,j,k,s=0;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

a[i][j]=random(40)+20;

for(i=0;i<5;i++)

{

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

k=a[i][0]; ________________ ;

for(j=0;j<5;j++)

{

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

if(k
s=s+a[i][j];

}

b[i]=k;

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

________________ ;

}

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

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

printf("%5d", ________________ );

printf("%5d%5d",b[i],c[i]);

printf("\n");

}

}



答案:

【1】 s=0

【2】 k=a[i][j]

【3】 c[i]=s

【4】 a[i][j]



24)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:对任一整数N(N≠0),它都可以分解成1(或-1)和一些质数(素

数)因子的形式。

例如:当N=150时,可分解成1×2×3×5×5;

当N=-150时,可分解为-1×2×3×5×5。

下边程序能实现这种分解过程。当N=150,输出以下分解结

果:N= 1* 2* 3* 5* 5



-------------------------------------------------------*/



main()

{

int n,i,j,r;

scanf("%d",&n);

if (n==0)

{

printf ("data error \n");

exit(0);

}

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

else if (________________)

printf("n=1");

else

{

printf("n=-1");

n=-n;

}

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

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

{

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

________________ ;

while(r==0)

{

printf("*%d",i);

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

________________ ;

r=n%i;

}

}

printf("\n");

}



答案:

【1】 n>0 或 0
【2】 i=2

【3】 r=n%i

【4】 n=n/i 或 n/=i



25)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以下程序的功能如(图1)。



-------------------------------------------------------*/



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

________________

main()

{

float x,f;

scanf("%f",&x);

/***********SPAC

E***********/

if(x<0) ________________;

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

else if(________________)

f=2*x+1;

else

f=sin(x)+5;

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

printf("x=%f,y=%f\n", ________________);

}



答案:

【1】 #include "math.h" 或 #include

【2】 f=fabs( x + 1 )

【3】 x<=5 或 5>=x 或 x<6 或 6>x 或 x>=0&&x<=5 或 0<=x&&x<=5 或 x>=0&&5>=x 或 0<=x&&5>=x 或 !(x>5)

【4】 x,f

(图1)



26)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:删除一个字符串中的所有数字字符。



-------------------------------------------------------*/



#include "stdio.h"

void delnum(char *s)

{

int i,j;

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

for(i=0,j=0; ________________'\0' ;i++)

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

if(s[i]<'0'________________ s[i]>'9')

{

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

________________;

j++;

}

s[j]='\0';

}

main ()

{

char *item;

printf("\n input a string:\n");

gets(item);

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

________________;

printf("\n%s",item);

}



答案:

【1】 s[i]!= 或 *(s+i)!= 或 *(i+s)!=

【2】 ||

【3】 s[j]=s[i] 或 *(s+j)=*(s+i) 或 s[j]=*(s+i) 或 *(s+j)=s[i]

【4】 delnum(item)



27)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:统计一个字符串中的字母、数字、空格和其它字符的个数。



-------------------------------------------------------*/



#include "stdio.h"

main ()

{

char s1[80];int a[4]={0};

int k;

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

________________;

gets(s1);

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

________________;

puts(s1);

for(k=0;k<4;k++)

printf("%4d",a[k]);

}

void fun(char s[],int b[])

{

int i;

for (i=0;s[i]!='\0';i++)

if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')

b[0]++;

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

else if (________________)

b[1]++;

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

else if (________________ )

b[2]++;

else

b[3]++;

}



答案:

【1】 void fun(char s[],int b[])

【2】 fun(s1,a)

【3】 '0'<=s[i] && s[i]<='9' 或 s[i]>='0' && s[i]<='9' 或 '0'<=s[i] && '9'>=s[i] 或 s[i]>='0' && '9'>=s[i] 或 48<=s[i] && s[i]<=57 或 s[i]>=48 && s[i]<=57 或 48<=s[i] && 57>=s[i] 或 s[i]>=48 && 57>=s[i] 或 !( x < 48 || x > 57 ) 或 !( x < '0' || x > '9' )

【4】 s[i] == ' ' 或 s[i] == 32



28)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:将十进制数转换成十六进制数。




-------------------------------------------------------*/



#include "stdio.h"

#include "string.h"

main ()

{

int a,i;

char s[20];

printf("input a integer:\n");

scanf("%d",&a);

c10_16(s,a);

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

for(________________;i>=0;i--)

printf("%c",s[i]);

printf("\n");

}

c10_16(char p[],int b)

{

int j,i=0;

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

while (________________)

{

j=b%16;

if(j>=0&&j<=9)

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

________________;

else p[i]=j+55;

b=b/16;

i++;

}

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

________________;

}



答案:

【1】 i=strlen(s)-1 或 i=-1+strlen(s)

【2】 b>0 或 0
【3】 p[i]= j + '0' 或 p[i]= j + 48 或 *(p+i)= j + '0' 或 *(p+i)= j + 48

【4】 p[i]='\0' 或 p[i]=0 或 p[i]=NULL 或 *(p+i)='\0' 或 *(p+i)=0 或 *(p+i)=NULL



29)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:下面函数为二分法查找key值。数组中元素已递增排序,

若找到key则返回对应的下标,否则返回-1。



-------------------------------------------------------*/



fun(int a[],int n,int key)

{

int low,high,mid;

low=0;

high=n-1;

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

while(________________)

{

mid=(low+high)/2;

if(key
/***********SPACE***********/

________________;

else if(key>a[mid])

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

________________;

else

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

________________;

}

return -1;

}

main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

int b,c;

b=4;

c=fun(a,10,b);

if(c==1)

printf("not found");

else

printf("position %d\n",c);

}



答案:

【1】 low<=high 或 high>=low

【2】 high=mid-1

【3】 low= mid + 1

【4】 return mid 或 return (mid)



30)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入字符串,再输入一个字符,将字符串中与输入字符相

同的字符删除。



-------------------------------------------------------*/



#include "stdio.h"

void fun(char a[],char c)

{

int i,j;

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

for(i=j=0; ________________;i++)

if(a[i]!=c) a[j++]=a[i];

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

________________;

}

main()

{

char a[20],cc;

gets(a);

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

________________;

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

________________;

puts(a);

}



答案:

【1】 a[i] != '\0' 或 a[i] 或 a[i]!=NULL

【2】 a[j]

='\0' 或 a[j]=NULL 或 a[j]=0

【3】 cc=getchar() 或 scanf("%c",&cc)

【4】 fun(a,cc)



31)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:用冒泡法对数组a 进行由小到大的排序。



-------------------------------------------------------*/



void fun(int a[],int n)

{

int i,j,t;

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

for (j=0; ________________;j++)

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

for (i=0; ________________;i++)

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

if(________________)

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

main()

{

int i,a[10]={3,7,5,1,2,8,6,4,10,9};

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

________________;

for(i=0;i<10;i++)

printf("%3d",a[i]);

}



答案:

【1】 j<=n-1 或 n-1>=j 或 j<=-1+n 或 -1+n>=j 或 jj 或 j
【2】 ii 或 ii 或 i<=n-j-2 或 i<=n-2-j

【3】 a[i]>a[ i + 1 ] 或 a[ i + 1 ]
【4】 fun(a,10)



32)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:计算并输出500以内最大的10个能被13或17整除的自然数之和。



-------------------------------------------------------*/



#include

#include

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

int fun(________________ )

{

int m=0, mc=0, j, n;

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

while (k >= 2 && ________________)

{

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

if (k%13 == 0 || ________________)

{

m=m+k;

mc++;

}

k--;

}

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

________________;

}

main ( )

{

clrscr( );

printf("%d\n", fun (500));

}



答案:

【1】 int k

【2】 mc < 10 或 10 > mc 或 mc <= 9 或 9 >= mc

【3】 k%17 == 0 或 !(k%17) 或 k/17*17 == k

【4】 return m 或 return (m)



33)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以下程序的功能如(图1)。



-------------------------------------------------------*/



#include

#include

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

double f(________________)

{

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

________________;

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

if (________________)

y=2.0*x*x+3.0*x+4.0;

else

y=-2.0*x*x+3.0*x-4.0;

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

________________;

}



main ( )

{

clrscr( );

printf("%f\n", f(f(-1.0)+f(5.0)));

}



答案:

【1】 float x 或 double x

【2】 double y

【3】 x<=2 或 2>=x

【4】 r

eturn y 或 return (y)

(图1)



34)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:以下程序的功能如(图1)。



-------------------------------------------------------*/



#include

#include

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

float fun(________________, int n)

{

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

________________;

float xa=0, s;

for (j=0; j
xa += x[j]/n;

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

________________;

for (j=0; j
s += (x[j]-xa)*(x[j]-xa)/n;

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

________________;

}

main ( )

{

float x[100] = {193.199, 195.673, 195.757, 196.051, 196.092,196.596,196.579, 196.763};

clrscr( );

printf("%f\n", fun (x, 8));

}



答案:

【1】 float x[] 或 float *x

【2】 int j

【3】 s = 0 或 s = 0.0

【4】 return s 或 return(s)

(图1)



35)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:计算并输出high以内最大的10个素数之和,high由主函数传

给fun函数,若high的值为100,则函数的值为732。



-------------------------------------------------------*/



#include

#include

#include

int fun( int high )

{

int sum = 0, n=0, j, yes;

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

while ((high >= 2) && (________________))

{

yes = 1;

for (j=2; j<=high/2; j++ )

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

if (________________)

{

yes=0;

break;

}

if (yes)

{

sum +=high;

n++;

}

high--;

}

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

________________;

}



main ( )

{

clrscr( );

printf("%d\n", fun (100));

}



答案:

【1】 n<10 或 10>n

【2】 high%j == 0 或 !(high%j)

【3】 return sum 或 return (sum)



92)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t

所指的数组中。

例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。



-------------------------------------------------------*/



#include

#include

#include

void fun (char *s, char *t)

{

int i, d;

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

d = ________________;

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

for (i = 0; i
t[i] = s[i];

for (i = 0; i
/***********SPACE***********/

t[______________

__] = s[d-1-i];

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

t[________________] ='\0';

}

main()

{

char s[100], t[100];

clrscr();

printf("\nPlease enter string S:"); scanf("%s", s);

fun(s, t);

printf("\nThe result is: %s\n", t);

}





答案:

【1】 strlen(s)

【2】 i++ 或 i=i+1 或 i+=1 或 ++i

【3】 d+i 或 i+d

【4】 2*d 或 d*2 或 i+d 或 d+i



394)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:用条件编译方法实现以下功能。输入一行电报文字,可以任

选两种方式输出,一种为原文输出;另一种将字母变成下

一个字母(如a变成b,C变成D,其他字符不变)输出。



-------------------------------------------------------*/

#define CHANGE

main()

{

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

char str[80],________________=str;

int k;

printf("Input string:");

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

gets________________;

printf("Output string:");

#ifdef CHANGE

for(;*s!='\0';s++)

{

if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')

{

(*s)++;

if(*s>'Z'&&*s<'Z'+2)

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

________________;

if(*s>'z')

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

*s=________________;

}

}

printf("%s\n",str);

#else

printf("%s\n",str);

#endif

}

答案:

【1】 *s

【2】 (str) 或 (s)

【3】 *s='A'

【4】 'a'



395)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入3个数a,b,c,按从小到大的顺序输出。



-------------------------------------------------------*/



main()

{

void swap(int *p1, int *p2);

int n1,n2,n3;

int *pointer1,*pointer2,*pointer3;

printf("please input 3 number:n1,n2,n3:");

scanf("%d,%d,%d",&n1,&n2,&n3);

pointer1=&n1;

pointer2=&n2;

pointer3=&n3;

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

if(________________) swap(pointer1,pointer2);

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

if(________________) swap(pointer1,pointer3);

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

if(________________) swap(pointer2,pointer3);

printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3);

}

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

void swap(________________)

int *p1,*p2;

{

int p;

p=*p1;*p1=*p2;*p2=p;

}



答案:

【1】 n1>n2 或 n2*pointer2 或 *pointer2<*pointer1

【2】 n1>n3 或 n3*pointer3 或 *pointer3<*pointer1

【3】 n2>n3 或 n3*pointer3 或 *pointer3<*pointer2

【4】 p1,p2



396)./*-------------------------------------------------------


【程序填空】

---------------------------------------------------------



功能:输入数组,最大的与最后一个元素交换,最小的与第一个元

素交换,输出数组。



-------------------------------------------------------*/



main()

{

int number[10];

input(number);

max_min(number);

output(number);

}



input(number)

int number[10];

{

int i;

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

for(i=0;________________;i++)

scanf("%d,",&number[i]);

scanf("%d",&number[9]);

}



max_min(array)

int array[10];

{

int *max,*min,k,l;

int *p,*arr_end;

arr_end=array+10;

max=min=array;

for(p=array+1;p
if(*p>*max)

max=p;

else if(*p<*min)

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

________________;

k=*max;

l=*min;

*p=array[0];

array[0]=l;

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

________________;

*p=array[9];

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

________________;

k=*p;

return;

}



output(array)

int array[10];

{

int *p;

for(p=array;p
printf("%d,",*p);

printf("%d\n",array[9]);

}

答案:

【1】 i<9 或 9>i

【2】 min=p

【3】 l=*p

【4】 array[9]=k



397)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙

队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比

赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出

三队赛手的名单。



-------------------------------------------------------*/



main()

{

char i,j,k;/*i是a的对手,j是b的对手,k是c的对手*/

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

{

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

if(________________)

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

for(k='x';________________;k++)

{

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

if(________________)

{

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

if(i!='x'&&k!=________________)

printf("order is a--%c\tb--%c\tc--%c\n",i,j,k);

}

}

}

}



答案:

【1】 i!=j 或 i != j

【2】 k<='z' 或 'z'>=k

【3】 i!=k&&j!=k 或 i != k && j != k

【4】 'z'



398)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:打印出如下图案(菱形)



*

***

*****

*******

*****

***

*

-------------------------------------------------------*/



#include

main()

{

int i,j,k;


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

for(i=0;________________;i++)

{

for(j=0;j<=4-i;j++)

printf(" ");

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

for(k=1;k<=________________;k++)

printf("*");

printf("\n");

}

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

for(________________;j<3;j++)

{

for(k=0;k
printf(" ");

for(k=0;k<5-2*j;k++)

printf("*");

printf("\n");

}

}



答案:

【1】 i<=3 或 i<4 或 3>=i 或 4>i

【2】 2*i+1 或 i*2+1 或 1+2*i 或 1+i*2

【3】 j=0



400)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:用结构体调用的方法编程。要求输入A,B,C,D,E,F五

个元素的数值,并按从大到小的顺序输出。



-------------------------------------------------------*/



#define N sizeof tbl/sizeof tbl[0] /*取得数组有多少个元素*/

int A,B,C,D,E,F;



struct ele

{

char vn;

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

int ________________;

}tbl[]={{'A',&A},{'B',&B},{'C',&C},{'D',&D},{'E',&E},{'F',&F}},t;



main()

{

int k,j,m;

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

for(k=0;k<________________;k++)

{

printf("Enter data for %c\n",tbl[k].vn);

scanf("%d",tbl[k].vp);

}

m=N-1;

while(m>0)

{

for(k=j=0;j
/***********SPACE***********/

if(*tbl[j].vp<________________)

{

t=tbl[j];

tbl[j]=tbl[j+1];

tbl[j+1]=t;

k=j;

}

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

________________;

}

for(k=0;k
printf("%c(%d)",tbl[k].vn,*tbl[k].vp);

printf("\n");

getch();

}

答案:

【1】 *vp

【2】 N

【3】 *tbl[j+1].vp 或 *tbl[ j + 1 ].vp

【4】 m=k



401)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入某年某月某日,判断这一天是这一年的第几天?



-------------------------------------------------------*/



main()

{

int day,month,year,sum,leap;

printf("\nplease input year,month,day\n");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

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

case 4:________________;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

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

________________;

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

if(year%400==0||(_______

_________)

leap=1;

else

leap=0;

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

if(________________)

sum++;

printf("It is the %dth day.",sum);

}



答案:

【1】 sum=90

【2】 sum=sum+day 或 sum= sum + day

【3】 year%4==0&&year%100!=0) 或 year%4 == 0 && year%100 != 0

【4】 leap==1&&month>2 或 leap == 1 && month>2 或 leap == 1 && 2


402)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入三个整数x,y,z,请把这三个数由小到大输出。



-------------------------------------------------------*/



main()

{

int x,y,z,t;

scanf("%d%d%d",&x,&y,&z);

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

if (x>y){________________}

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

if(x>z){________________}

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

if(y>z){________________}

printf("small to big: %d %d %d\n",x,y,z);

}



答案:

【1】 t=x;x=y;y=t;

【2】 t=z;z=x;x=t;

【3】 t=y;y=z;z=t;



403)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输出9*9口诀。



-------------------------------------------------------*/



main()

{

int i,j,result;

printf("\n");

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

for (i=1;________________;i++)

{

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

for(j=1;j<10;________________)

{

result=i*j;

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

printf("%d*%d=%-3d",i,j,________________);

}

printf("\n");

}

}



答案:

【1】 i<10 或 10>i

【2】 j++ 或 ++j 或 j=j+1

【3】 result



404)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:从键盘上输入两个复数的实部与虚部,求出并输出它们的

和、差、积、商。



-------------------------------------------------------*/



#include

void main()

{

float a,b,c,d,e,f;

printf("输入第一个复数的实部与虚部:");

scanf("%f, %f",&a,&b);

printf("输入第二个复数的实部与虚部:");

scanf("%f, %f",&c,&d);

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

________________;

f=b+d;

printf("相加后复数:实部:%f,虚部:%f\n",e,f);

e=a*c-b*d;

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

________________;

printf("相乘后复数:实部:%f,虚部:%f\n",e,f);

e=(a*c+b*d)/(c*c+d*d);

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

________________;

printf("相除后复数:实部:%f,虚部:%f\n",e,f);

}

答案:

【1】 e=a+c 或 e=c+a

【2】 f=a*d+b*c 或 f= a*d + b*c 或 f= a * d + b * c

【3】 f=(b*c-a*d)/(c*c+d*d) 或 f=

(b*c-a*d) / (c*c+d*d) 或 f=( b * c - a * d ) / ( c * c + d * d )



405)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:要求输出结果为:

A,B

65,66



-------------------------------------------------------*/



#include

void main()

{

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

char a,________________;

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

a=________________;

b='b';

a=a-32;

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

b=b-________________;

printf("%c, %c\n%d,%d\n",a,b,a,b);

}







答案:

【1】 b

【2】 'a' 或 97

【3】 32



406)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:从键盘输入一个字符串,将小写字母全部转换成大写字母,

然后输出到一个磁盘文件“test”中保存。输入的字符串

以!结束。



-------------------------------------------------------*/



#include "stdio.h"

#include

main()

{

FILE *fp;

char str[100];

int i=0;

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

if((fp=fopen("test",________________))==NULL)

{

printf("cannot open the file\n");

exit(0);

}

printf("please input a string:\n");

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

gets(________________);

while(str[i]!='!')

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

{

if(str[i]>='a'&&________________)

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

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

fclose(________________);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}



答案:

【1】 "w"

【2】 str

【3】 str[i]<='z' 或 'z'>=str[i]

【4】 fp



407)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:有五个学生,每个学生有3门课的成绩,从键盘输入以上数

据(包括学生号,姓名,三门课成绩),计算出平均成绩,

设原有的数据和计算出的平均分数存放在磁盘文件"stud"

中。



-------------------------------------------------------*/



#include "stdio.h"

struct student

{

char num[6];

char name[8];

int score[3];

float avr;

} stu[5];



main()

{

int i,j,sum;

FILE *fp;

/*input*/

for(i=0;i<5;i++)

{

printf("\n please input No. %d score:\n",i);

printf("stuNo:");

scanf("%s",stu[i].num);

printf("name:");

scanf("%s",stu[i].name);

sum=0;

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

for(j=0;________________;j++)

{

printf("score %d.",j+1);

scanf("%d",&stu[i].score[j]);

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

sum+=stu[i].________________;

}

stu[i].avr=sum/3.0;

}

fp=fopen("stud","w");

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

for(i=0;i<5;________________)

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

if(fwrite(&stu[i],sizeof(________________),1,fp)!=1)

printf("file write error\n");

fclose(fp);

}

答案:

【1】 j<3 或 3>j

【2】 score[j]

【3】 i++ 或 ++i 或 i=i+1

【4】 struct student



408)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入两个整数,求他们的按位与。



-------------------------------------------------------*/



#include

void main()

{

int x,y,z=0,a,b,k=1;

scanf("%d,%d",&x,&y);

while(x>0&&y>0)

{

a=x%2;

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

x=________________;

b=y%2;

y=y/2;

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

z=z+________________;

k=k*2;

}

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

________________("z=%d\n",z);

}

答案:

【1】 x/2

【2】 a*b*k 或 a * b * k

【3】 printf



409)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:输入数组,最大的与第一个元素交换,最小的与最后一个

元素交换,输出数组。



-------------------------------------------------------*/



main()

{

int number[10];

input(number);

max_min(number);

output(number);

}



input(number)

int number[10];

{

int i;

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

for(i=0;i<9;________________)

scanf("%d,",&number[i]);

scanf("%d",&number[9]);

}



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

max_min(________________)

int array[10];

{

int *max,*min,k,l;

int *p,*arr_end;

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

arr_end=________________;

max=min=array;

for(p=array+1;p
if(*p>*max) max=p;

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

else if(________________) min=p;

k=*max;

l=*min;

*p=array[0];array[0]=l;l=*p;

*p=array[9];array[9]=k;k=*p;

return;

}



output(array)

int array[10];

{

int *p;

for(p=array;p
printf("%d,",*p);

printf("%d\n",array[9]);

}

答案:

【1】 i++ 或 i=i+1 或 ++i

【2】 array

【3】 array+10 或 10+array

【4】 *p<*min 或 *min>*p



410)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数

变成最前面

的m个数



-------------------------------------------------------*/



main()

{

int number[20],n,m,i;

printf("the total numbers is:");

scanf("%d",&n);

printf("back m:");

scanf("%d",&m);

for(i=0;i
scanf("%d,",&number[i]);

scanf("%d",&number[n-1]);

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

move(________________);

for(i=0;i
printf("%d,",number[i]);

printf("%d",number[n-1]);

}



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

move(________________)

int n,m,array[20];

{

int *p,array_end;

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

array_end=*(________________);

for(p=array+n-1;p>array;p--)

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

*p=*(________________);

*array=array_end;

m--;

if(m>0) move(array,n,m);

}

答案:

【1】 number,n,m

【2】 array,n,m

【3】 array+n-1 或 array + n -1

【4】 p-1 或 p -1



411)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1

到3报数),凡报到3的人退出圈子,问最后留下的是原来

第几号的那位。



-------------------------------------------------------*/



#define nmax 50

main()

{

int i,k,m,n,num[nmax],*p;

printf("please input the total of numbers:");

scanf("%d",&n);

p=num;

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

for(i=0;________________;i++)

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

*(p+i)=________________;

i=0;

k=0;

m=0;

while(m
{

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

if(________________!=0) k++;

if(k==3)

{

*(p+i)=0;

k=0;

m++;

}

i++;

if(i==n) i=0;

}

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

while(________________) p++;

printf("%d is left\n",*p);

}

答案:

【1】 ii

【2】 i+1 或 i + 1

【3】 *(p+i) 或 *( p + i )

【4】 *p==0 或 *p == 0



412)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:写一个函数,求一个字符串的长度,在main函数中输入字

符串,并输出其长度。



-------------------------------------------------------*/



#include

main()

{

int length(char *p);

int len;

char str[20];

printf("please input a string:\n");

scanf("%s",str);

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

len=length(________________);

printf("the string has %d characters.",len);

}



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

________________(p)

char *p;

{

int n;

n=0;

while(*p!='\0')

{

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

________________;

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

**********/

________________;

}

return n;

}

答案:

【1】 str

【2】 length 或 int length

【3】 n++ 或 ++n 或 n=n+1 或 n+=1

【4】 p++ 或 ++p 或 p=p+1 或 p+=1



414)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:通过函数的递归调用计算阶乘。



-------------------------------------------------------*/



long power(int n)

{

long f;

if(n>1)

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

f=________________;

else

f=1;

return(f);

}

main()

{

int n;

long y;

printf("input a inteager number:\n");

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

scanf("%d",________________);

y=power(n);

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

printf("%d!=%ld\n",n,________________);

getch();

}

答案:

【1】 power(n-1)*n 或 power( n - 1 ) * n 或 n*power(n-1)

【2】 &n

【3】 power(n) 或 y



415)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:数组名作为函数参数,求平均成绩。



-------------------------------------------------------*/



float aver(float a[ ]) /*定义求平均值函数,形参为一浮点型数组名*/

{

int i;

float av,s=a[0];

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

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

s+=________________[i];

av=s/5;

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

return ________________;

}



void main()

{

float sco[5],av;

int i;

printf("\ninput 5 scores:\n");

for(i=0;i<5;i++)

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

scanf("%f",________________);

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

av=aver(________________);

printf("average score is %5.2f\n",av);

getch();

}

答案:

【1】 a

【2】 av 或 (av)

【3】 &sco[i] 或 sco+i

【4】 sco



416)./*-------------------------------------------------------

【程序填空】

---------------------------------------------------------



功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显

示出来。



-------------------------------------------------------*/



#define M 5 /*定义符号常量 人数为5*/

#define N 4 /*定义符号常量 课程为4*/

#include "stdio.h"

main()

{

int i,j;

void aver(float sco[M+1][N+1]);

static float score[M+1][N+1]={{78,85,83,65}, {88,91,89,93}, {72,65,54,75},{86,88,75,60},{69,60,50,72}};

aver(score);

clrscr();

printf("学生编号 课程1 课程2 课程3 课程4 个人平均\n");

for(i=0;i
{

printf("学生%d\t",i+1);

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

for(j=0;j<________________;j++)

printf("%6.1f\t",sc