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

一、程序填空题

在此程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。

例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。

主函数中输出m=30。

#include  <stdlib.h>

#include  <stdio.h>

#define   N   10

double fun(double  x[],double  *av)

{ int  i,j;    double  d,s;

  s=0;

  for(i=0; i<N; i++)  s = s +x[i];

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

  __1__=s/N;

  d=32767;

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

    if(x[i]<*av && *av - x[i]<=d){

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

      d=*av-x[i];

  j=__2__;

 }

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

  return  __3__;

}

void main()

{ int  i;    double  x[N],av,m;

  for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}

  printf("\n");

  m=fun(x,&av);

  printf("\nThe average is: %f\n",av);

  printf("m=%5.1f ",m);

  printf("\n");

}

答案:(1) *av (2) i (3) x[j]

二、程序修改题

在此程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。

例如,若n=10,则应输出0.617977。

#include  <stdlib.h>

#include  <conio.h>

#include  <stdio.h>

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

int fun(int n)

{ float A=1;int i;

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

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

     A=1.0/(1+A);

  return A;

}

void main()

{ int n;

  system("CLS");

  printf("\nPlease enter n: ");

  scanf("%d",&n);

  printf("A%d=%lf\n",n,fun(n));

}

答案:(1) float fun(int n) (2) for(i=2;i<=n;i++)

三、程序设计题

在此程序中,定义N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int m),该函数的功能是使数组右上半三角元素中的值乘以m。

例如,若m的值为2,a数组中的值为:

则返回主程序后a数组中的值应为:

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define  N  5

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

{

  

}

void main()

{

  int a[N][N],m, i, j;

  FILE *out;

  printf("*****The array*****\n");

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

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

         {a[i][j]=rand()%20;

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

         }

        printf("\n");

     }

  m=rand()%4;

  printf("m=%4d\n",m);

  fun(a,m);

  printf("THE RESULT\n");

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

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

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

       printf("\n");

     }

  /******************************/

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

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

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

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

  fun(a,8);

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

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

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

fprintf(out,"\n");

  }

  fclose(out);

  /******************************/

}

答案:

int i,j;

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

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

a[i][j]=a[i][j]*m;       /*右上半三角元素中的值乘以m*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值