筱海 发表于 2021-12-8 22:04:00

动态结构体数组编程

动态结构体数组编程:定义一个结构体Student,成员有num,name和C,Java, Python三门课程的成绩以及平均分ave ,
定义一个动态结构体数组a,存储N个学生信息,从键盘输入N和N个学生数据,计算每个学生平均分,输出N个学生的所有信息。
输入:(1)N;(2)N个学生数据(num, name,C,Java,Python),数据用空格隔开。输出:输出N个学生的所有信息(num, name,C,Java, Python, ave),
数据用空格隔开,平均分保留小数点后1位。

jhq999 发表于 2021-12-9 06:41:44

本帖最后由 jhq999 于 2021-12-9 07:03 编辑

typedef struct STUDENT
{
   int id;
   char name;
   int *achievement;
   float average;
   float sum;
}Student,pStudent;
int main(void) {
      


int i=0,j=0,M=0,N=0;//M学生数量,N科目数量
scanf("%d%d",&M,&N);
Student *a=new Student;
int *ptmp=new int;
for(i=0;i<M;i++)
{
   //a.id=i;
   scanf("%d",&a.id);
   scanf("%s",a.name);
   a.achievement=ptmp+i*N;
   a.sum=0;
   a.average=0;
   for(j=0;j<N;j++)
    {
      scanf("%d",&a.achievement);
      a.sum+=a.achievement;
    }
    a.average=a.sum/N;
   // printf("%.1f",a.average);
}
//printf("\n");
/*Student stmp={0};
int flag=1;
for(i=0;i<M-1;i++)
{
   flag=1;
   for(j=1;j<M-i;j++)
   {
      if(a.sum<a.sum)
      {
            flag=0;
            stmp=a,a=a,a=stmp;
         }
    }
   if(flag)break;
}
i=0;
while(a.sum==a.sum&&i<N)
{
   printf("%d ",a.id+1);
   i++;
}
printf("\n");
for(i=0;i<M;i++)printf("%d ",a.id+1);*/
for(i=0;i<M;i++)
{
   printf("%d %s ",a.id,a.name);
   for(j=0;j<N;j++)printf("%d ",a.achievement);
   printf("%.1f\n",a.average);
}

delete[] ptmp;
delete[] a;
      return 0;
}
4 3
1 abc 50 60 75
2 bcd 90 100 81
3 cde 40 80 99
4 def 88 90 53
1 abc 50 60 75 61.7
2 bcd 90 100 81 90.3
3 cde 40 80 99 73.0
4 def 88 90 53 77.0
页: [1]
查看完整版本: 动态结构体数组编程