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

一、程序填空题

在此程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数。

例如,若m=14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1。

#include  <stdio.h>

void fun( int  m, int  a[10])

{  int  i;

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

/**********found**********/

    __1__ = 0;

  while (m > 0)

  {

/**********found**********/

     i = ___2___;

     a[i]++;

/**********found**********/

     m = ___3___;

  }

}

void main()

{  int  m,  a[10],i;

   printf("请输入一个整数 :  ");   scanf("%d", &m);

   fun(m, a);

   for (i=0; i<10; i++)   printf("%d,",a[i]);  printf("\n");

}

答案:(1) a[i] (2) m%10 (3) m/10

二、程序修改题

在此程序中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。

假如:若a=

则结果应为1,5,9,13。

#include  <stdio.h>

#define   N   4

void fun(int  a[][N], int  b[])

{   int  i, j;

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

    {

/**********found**********/

        b[i] = a[0][0];

/**********found**********/

        for (j=1; j<N-1; j++)

/**********found**********/

           if ( b[i] < a[i][j] )

               b[i] = a[i][j];

    }

}

void main()

{   int  a[N][N]={{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N];    int  i;

    fun(a,b);

    for (i=0; i<N; i++)  printf("%d,", b[i]);

    printf("\n");

}

答案:(1) b[i] = a[i][0]; (2) for (j=1; j<N; j++) (3) if ( b[i] > a[i][j] )

三、程序设计题

在此程序中,编写函数fun,其功能是:将一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回。函数形参a所指存放得分的数组,形参n中存放得分个数(n>2)。

例如,若输入9.9 8.5 7.6 8.5 9.3 9.5 8.9 7.8 8.6 8.4十个得分,则输出结果为:8.687500。

#include  <stdio.h>

void NONO();

double fun(double  a[ ] , int  n)

{

}

void main()

{  double  b[10],  r;    int  i;

    printf("输入10个分数放入b数组中 :  ");

    for (i=0; i<10; i++)   scanf("%lf",&b[i]);

    printf("输入的10个分数是 :  ");

    for (i=0; i<10; i++)   printf("%4.1lf ",b[i]);    printf("\n");

    r = fun(b, 10);

    printf("去掉最高分和最低分后的平均分 :  %f\n", r );

    NONO();

}

void NONO()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

  FILE *fp, *wf ;

  int i, j ;

  double b[10], r ;

  fp = fopen("in.dat","r") ;

  wf = fopen("out.dat","w") ;

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

    for(j = 0 ; j < 10 ; j++) {

      fscanf(fp, "%lf ", &b[j]) ;

    }

    r = fun(b, 10) ;

    fprintf(wf, "%f\n", r) ;

  }

  fclose(fp) ;

  fclose(wf) ;

}

答案:

double sum=0,max,min;int i;

max=min=a[0];

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

{

sum=sum+a[i];

if(max<a[i])max=a[i];

if(min>a[i])min=a[i];

}

sum=sum-max-min;

return(sum/(n-2));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值