指针就是数组,定义函数时传2个参数,一个指针名称,一个数组长度。
float aver(int* score ,int len){
....
}
#include <stdio.h>
typedef struct _student
{
int number;
float math;
float eng;
float comp;
float avg;
}student;
void aver(student *score,int n)
{
for(int i=0;i<n;i++)
score[i].avg = (score[i].math + score[i].eng + score[i].comp)/3;
}
float search(student score[],int n,int number)
{
for(int i=0;i<n;i++)
if(score[i].number == number)
return score[i].avg;
return -1;
}
void sort(student score[],int n)
{
student s;
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
{
if(score[j] > score[j+1])
{
s = score[j];
score[j] = score[j+1];
score[j+1] = s;
}
}
for(i=0;i<n;i++)
{
printf("%d\t%.1f\n",score[i].number,score[i].avg);
}
}
int main()
{
student score[4];
int i=0,j=0;
int number;
float avg;
for(i=0;i<4;i++)
{
printf("输入第%d名学生学号及数学、英语和计算机三科成绩:\n",i+1);
scanf("%d%f%f%f",&score[i].number,&score[i].math,&score[i].eng,&score[i].comp);
}
aver(score,4);
printf("请输入需要查询的学生学号:");
scanf("%d",&number);
avg = search(score,4,number);
if(avg < 0)
printf("没有这个学号的学生。\n");
printf("学号为%d的学生平均分为%.1f\n",number,avg);
sort(score,4);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: