家人们 从第三个问开始就懵圈了 c语言指针

img

指针就是数组,定义函数时传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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^