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

一、程序填空题

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

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

主函数中输出:46 32 40 45 48。

#include <stdlib.h>

#include <stdio.h>

#define   N   10

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

{ int  i,j;    double  av;

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

  av=__1__;

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

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

  av=av+__2__;

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

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

    if(x[i]>av)  y[__3__]= x[i];

  y[j]=-1;

  return  av;

}

void main()

{ int  i;    double  x[N],y[N];

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

  printf("\n");

  printf("\nThe average is: %f\n",fun(x,y));

  for(i=0; y[i]>=0; i++)  printf("%5.1f ",y[i]);

  printf("\n");

}

答案:(1) 0.0 (2) x[i]/N (3) j++

二、程序修改题

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

例如,若m=2000,则应输出0.000160。

#include  <stdlib.h>

#include  <conio.h>

#include  <stdio.h>

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

fun (int m)

{ double y=0, d;

  int i;

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

  for(i=100,i<=m,i+=100)

     {d=(double)i*(double)i;

      y+=1.0/d;

     }

  return(y);

}

void main()

{ int n=2000;

  system("CLS");

  printf("\nThe result is %1f\n",fun(n));

}

答案:(1) double fun (int m) (2) for(i=100;i<=m;i+=100)

三、程序设计题

在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#define N 10

typedef struct ss

{ char num[10];

  int s;

} STU;

void fun(STU a[], STU *s)

{

  

}

void main()

{

  FILE *wf;

  STU a[N]={{ "A01",81},{ "A02",89},{ "A03",66},{ "A04",87},{ "A05",77},

  { "A06",90},{ "A07",79},{ "A08",61},{ "A09",80},{ "A10",71}},m;

  int i;

  system("CLS");

  printf("*****The original data*****\n");

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

    printf("No=%s Mark=%d\n", a[i].num,a[i].s);

  fun(a,&m);

  printf("*****THE RESULT*****\n");

  printf("The lowest :%s, %d\n",m.num,m.s);

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

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

  fprintf(wf,"%s, %d",m.num,m.s);

  fclose(wf);

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

}

答案:

   int i;

  *s=a[0];                         /*先认为第1个值最小*/

  for(i=0;i<N;i++)                  /*如果在循环的过程中再发现比第1个值更小的则赋给*s*/

    if(s->s>a[i].s)

      *s=a[i];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值