xiezhaodong 发表于 2020-4-6 22:41:36

关于结构体数组指针的实践


有两个警告不知道如何消除,但程序本身运行没有问题。

#if(1)
#include <stdio.h>

#define NUM 4

typedef struct Stu{
      char num;
      double score;
} STU;

double fun(STU *,int );

double fun(STU *p,int n)
{
      int i;

      double sum = 0.0;
      double av = 0;
      for( i = 0 ; i < n ; i++ )
      {
                sum += (p+i)->score;            //我擦。。对了。。            p每次加一,结构体数组指针指向下一个结构体数组,用指针取出相应的值。
      }
      av = sum/n;
      
      return av;
}

int main ()
{
      STU stu = {
      {"10001",76.5,82.0},
      {"10002",66.5,73.0},
      {"10003",80.5,66.0},
      {"10004",81.0,56.0}};
      STU (*p);                                                                                                //主要是模仿了二维数组用数组指针的方法指向,这里我考虑使用结构体数组指针指向,包含四个指向结构体数组的指针主要是模仿了二维数组用数组指针的方法指向,这里我考虑使用结构体数组指针指向
      p = stu;
      printf("第一门课的平均分是:%lf\n",fun(p,4));
      return 0;
}
#endif


//答案
#if(0)
#include<stdio.h>
typedefstruct      
{charnum;
doublescore;
}STU ;
double fun(STUstd[], intn)
{int   i;
/**********found**********/
   doublesum=0.0;
/**********found**********/
   for(i=0; i<n; i++)
/**********found**********/
      sum += std.score;
   returnsum/n;
}
void main()
{STUstd[ ]={ "N1001", 76.5,82.0 ,"N1002", 66.5,73.0,
            "N1005", 80.5,66.0,"N1006", 81.0,56.0 };
   printf("第1门课程的平均分是:%lf\n", fun(std,4) );
}
#endif
页: [1]
查看完整版本: 关于结构体数组指针的实践