void fun(int x, int pp[], int *n) {
int i, j = 0;
for (i=1; i<=x; i+=2) if ((x%i) == 0)
pp[j++] = ___1___; *n = ___2___; }
main() {
int x, aa[1000], n, i;
 printf(\ scanf(\ fun(x, ___3___);  for (i=0; i   printf(\ printf(\}  第1处填空:i 第2处填空:j  第3处填空:aa,&n   改错题  N个有序整数数列已放在一维数组中,给定下列程序中,函数FUN的功能是:利用拆半查找算法查找整数M在数组中的位置。若找到,则返回其下标值:反之,则返回-1。  拆半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low 请改正程序中的错误,使它能得出正确结果。  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构! 试题程序:#include  /********found********/ void fun(int  a[], int  m) {   int  low = 0, high = N-1, mid;  while (low <= high)  {    mid = (low+high)/2;   if (m < a[mid])    high = mid-1;    /********found********/   else     if (m >= a[mid])     low = mid+1;    else      return(mid);  }   return (-1); }  main() {   int  i, a[N] = {-3, 4, 7, 9, 13, 45, 67, 89, 100, 180}, k, m;  printf(\  for (i=0; i   printf(\ printf(\ scanf(\ k = fun(a, m);  if (k >= 0)    printf(\ else    printf(\}  第1处:void fun(int a[],int m)应改为int fun(int a[],int m) 第2处:if (m>=a[mid])应改为if(m>a[mid])   编程题  编写函数int fun(int lim,int aa[MAX]),该函数的功能的求出小于或等于lim的所有素数,并放在aa数组中,该函数返回所求出的素数的个数 注意:部分源程序给出如下。  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:  #include  int fun( int lim, int aa[MAX]) {    }   main() {    int limit,i,sum;  int aa[MAX] ;  FILE *out;   printf(\ scanf(\ sum=fun(limit, aa);   for(i=0 ; i < sum; i++)  {    if(i == 0 && i !=0)    printf(\   printf(\ }   sum=fun(28, aa);   out = fopen(\ for(i=0 ; i < sum; i++)    fprintf(out, \ fclose(out); }  答案是:   int fun (int lim,int aa[MAX]) {     int k=0,I,j; for(i=lim;i>1;i--) {    for(j=2;j continue; if(j>=i) {   aa[k]=i; k++; } }  return k++; }   第21套    填空题  给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。  例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537. 注意:部分源程序给出如下         请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。  试题程序:#include   int  i, j = 0, k = 0;  char  t1[80], t2[80];   for(i=0; s[i]!='\\0'; i++)    if(s[i]>='0' && s[i]<='9')   {     t2[j]=s[i];    ___1___;   }   else   {     t1[k++] = s[i];   }   t2[j] = 0;  t1[k] = 0;   for (i=0; i  for (i=0; i<___3___; i++)   s[k+i] = t2[i]; }  main() {   char  s[80] = \  printf(\ fun(s);   printf(\}  第1处填空:j++或++j或j+=1或j=j+1 第2处填空:s[i]=t1[i] 第3处填空:j    改错题  下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数FUN的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。   请改正程序中的错误,使它能得出正确结果。  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构! 试题程序:#include   int  data;   struct aa  *next; }  NODE;  fun(NODE *h) {   int  max = -1;  NODE  *p;   /********found********/  p = h;  while (p)  {    if (p->data > max)    max = p->data;    /********found********/   p=h->next;  }   return max; }  outresult(int  s, FILE  *pf) {   fprintf(pf, \}  NODE *creatlink(int  n, int  m) {   NODE  *h, *p, *s;  int  i;   h = p = (NODE*)malloc(sizeof(NODE));  h->data = 9999;   for (i=1; i<=n; i++)  {    s = (NODE*)malloc(sizeof(NODE));   s->data = rand()%m;   s->next = p->next;   p->next = s;   p = p->next;  }   p->next = NULL;  return h; }  outlink(NODE  *h, FILE  *pf) {   NODE  *p;  p = h->next;   fprintf(pf, \ while (p)