c程序设计,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数f

2025年03月12日 20:51
有5个网友回答
网友(1):

#include
struct student
{
int id;
double score;
}s[5],b[5];
int num;
double fun(int *n)
{
double avg=0.0;
int i,count=0;
for(i=0;i {
avg+=s[i].score;
}
avg=avg/num;
for(i=0;i {
if(s[i].score>=avg)
{
b[count].id=s[i].id;
b[count++].score=s[i].score;
}
}
*n=count;
return avg;
}
int main()
{
int i,n=0;
printf("请输入学生人数:\n");
scanf("%d",&num);
for(i=0;i {
printf("请输入第%d个学生的学号:",i+1);
scanf("%d",&s[i].id);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%lf",&s[i].score);
}
double ave=fun(&n);
for(i=0;i {
printf("%d %.2lf\n",b[i].id,b[i].score);
}
printf("%.2lf",ave);
return 0;
}

网友(2):

#include 
#include 
#include 

#define N 5

typedef struct
{
char name[20];
float mark;
}STU;

float f(STU* s, STU* b, int* n)
{
int i,j=0;
float sum=0.0;
float avg;
for(i=0;i {
sum+=s[i].mark;
}
avg=sum/N;
for(i=0;i {
if(s[i].mark>=avg)
{
b[j++]=s[i];
}
}
*n=j;
return avg;
}

int main()
{
STU s[N];
int i;
for(i=0;i {
fflush(stdin);
scanf("%s %f",s[i].name, &s[i].mark);
}
STU b[N];
int n;
float avg=f(s,b,&n);
printf("avg=%.2f  n=%d",avg,n);
for(i=0;i {
printf("\n%s  %.2f",b[i].name,b[i].mark);
}
return 0;
}

网友(3):

STREC fun(STREC *a,char *b){
STREC c={"",-1};
int i:
for(i=0;i<N;i++)
if(strcmp(a[i].num,b)==0)return a[i];
return c;
}

网友(4):

估计你这问题过时了吧?还需要吗

网友(5):

#include
#include
typedef struct
{
int number;
double score;
}strec;
double fun(strec *s,strec *b,int *n);
int main()
{
int n;
double k;
strec s[3]={{1008,90.0},{1009,89.0},{1010,88.0}};
strec b[3];
k=fun(s,b,&n);
printf("%f\n",k);
printf("%d\n",n);
for(int i=0;i{
printf("%d %f ",b[i].number,b[i].score);
}
return 0;
}
double fun(strec *s,strec *b,int *n)
{
double aver;
double sum;
int k=0;
for(int i=0;i<3;i++)
{
aver+=(s[i].score/3.0);
}

for(int i=0;i<3;i++)
{
if(s[i].score>=aver)
{
b[k++]=s[i];
}
}
*n=k;
return aver;
}