动态结构体数组编程
动态结构体数组编程:定义一个结构体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 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]