c语言的问题 求助

来源:百度知道 编辑:UC知道 时间:2024/06/14 01:08:50
#include <stdio.h>
#define N 8
typedef struct
{ char num[10];
double s;
} STREC;
double fun (STREC *a, STREC *b ,int *n)
{
double sum= 0., ave = 0.;
int i, j, k = 0;
for(i = 0; i < N; i++)
sum+=a[i].s;
ave = sum / N;
for(i = 0; i < N; i++)
{
if(a[i].s < ave)
{
j = 0;
while (b[k].num[j] = a[i].num[j++]);
b[k++].s = a[i].s;
}
}
*n = k;
return ave;
}
main ()
{
STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},
{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};
STREC h[N],t;FILE *out;
int i,j,n; double ave;
ave=fun(s,h,&n);
printf("The %d student data which is lower than %7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s %4.1f\n",h[i].num, h[i].s);
pri

#include <stdio.h> //引入头文件stdio.h,这里包含了输入输出必要的库函数
#define N 8 //宏定义,把N设定为8,编译的时候所有N都会被换成8
typedef struct //结构体声明
{ char num[10]; //长度为10的字符数组
double s; //双精度浮点数
} STREC; //结构体的名称
double fun (STREC *a, STREC *b ,int *n) //函数fun的声明,参数为两个STREC结构体的数组和一个整数的指针,返回值为一个双精度浮点数
{
double sum= 0., ave = 0.; //将浮点数sum和ave初始化为0.0
int i, j, k = 0; //声明整数i和j,将k初始化位0
for(i = 0; i < N; i++) //i的初始值为0,当i小于N,也就是8,i的值每次增加1
sum+=a[i].s; //将下标为i的数组a的元素的s的值累计到sum里
ave = sum / N; //平均值为sum除以N,也就是8
for(i = 0; i < N; i++) //同上
{
if(a[i].s < ave) //如果这个数组a的元素的s的值小于平均值
{
j = 0; //将j初始化为0
while (b[k].num[j] = a[i].num[j++]); //将数组b里第k个元素的成员num的第j个元素设置为数组a里第i个元素的num的第j个元素,然后j增加1
b[k++].s = a[i].s; //将数组b里第k个元素的成员s设置为数组a里第i个元素的s,然后k增加1
}
}
*n = k; //将n所指的值设置为k
return ave; //返还平均值ave
}
main () //main函数,里面是被执行的代码
{
STREC s