二级C语言操作例题(二十六)

一、程序填空题

在此程序中,函数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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值