一、程序填空题
在此程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。
例如,有9个正整数:1 5 7 23 87 5 8 21 45。
#include <stdio.h>
#define N 9
int fun(int x[])
{ int i,j,k,t,mid,b[N];
for(i=0;i<N;i++) b[i]=x[i];
for(i=0;i<=N/2;i++)
{ k=i;
for(j=i+1;j<N;j++) if(b[k]>b[j]) k=j;
if(k != i )
{
/**********found**********/
t=b[i]; b[i]=___1___; b[k]=t;
}
}
/**********found**********/
mid=b[___2___];
for(i=0; i<N; i++)
/**********found**********/
if(x[i] ___3___ mid) x[i]=mid;
return mid;
}
void main()
{ int i, x[N]={1,5,7,23,87,5,8,21,45};
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\nThe mid data is: %d\n",fun(x));
for(i=0; i<N; i++) printf("%d ",x[i]);
printf("\n");
}
答案:(1) b[k] (2) 4 (3) <
二、程序修改题
在此程序中,fun函数的功能是:删除b所指数组中小于10的数据。主函数中输出删除后数组中余下的数据。
#include <stdio.h>
#include <stdlib.h>
#define N 20
int fun( int *b )
{
/**********found**********/
int t[N] ,i, num
for(i=0; i<N; i++)
if(b[i]>=10)
/**********found**********/
t[++num]=b[i];
/**********found**********/
for(i=0; i<nun; i++)
b[i]=t[i];
return( num );
}
void main()
{ int a[N],i,num;
printf("a数组中的数据 :\n");
for(i=0;i<N ;i++) {a[i]=rand()%21; printf("%4d",a[i]);}
printf("\n");
num=fun(a);
for(i=0;i<num ;i++) printf("%4d",a[i]);
printf("\n");
}
答案:(1) int t[N] ,i, num=0; (2) t[num++]=b[i]; (3) for(i=0; i<num; i++)
三、程序设计题
在此程序中,编写函数fun,其功能是:统计s所指字符串中的数字字符个数,并作为函数值返回。
例如,s所指字符串中的内容是:2def35adh25 3kjsdf7/kj8655x,函数fun返回值为:11。
#include <stdio.h>
void NONO();
int fun(char *s)
{
}
void main()
{ char *s="2def35adh25 3kjsdf 7/kj8655x";
printf("%s\n",s);
printf("%d\n",fun(s));
NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i;
char s[256];
fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
fgets(s, 255, fp);
fprintf(wf, "%d\n", fun(s));
}
fclose(fp) ;
fclose(wf) ;
}
答案:
int n=0;
char *p;
for(p=s;*p!='\0';p++)
if((*p>='0')&&(*p<='9'))
n++;
return n;