题目如下:
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
char id[20];
int score[5];
double average;
int total;
}student;
int main()
{
struct student;
int i,sum=0,j,temp;
double average;
scanf("%s",student.name);
scanf("%d",student.id);
for(i=0;i<5;i++)
{
scanf("%d",&student.score);
}
for(i=0;i<5;i++)
{
for(j=0;j<5-1-i;j++)
{
if(student.score[j]<student.score[j+1])
{
temp=student.score[j];
student.score[j]=student.score[j+1];
student.score[j+1]=temp;
}
}
}
for(i=0;i<5;i++)
{
student.total =student.total +student.score[i];
}
student.average =student.total /5.0;
printf("Name:%s\n",student->name );
printf("ID:%d\n",student->id );
printf("Score:");
for(i=0;i<5;i++)
{
if(i==4)
{
printf("%d\n",student->score[i]);
}
else
{
printf("%d ",student->score [i]);
}
}
printf("average:%.2lf total:%d\n",student->average ,student->total );
return 0;
}
编译时出错,出现
->是给指针用的。main中第一句可以删除了。
输出用指针
struct student *stu;
stu=&student;
printf("Name:%s\n",stu->name );
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
char id[20];
int score[5];
double average;
int total;
}student;
int main()
{
struct student* ptr = &student; //修改
int i,sum=0,j,temp;
double average;
scanf("%[^\n]",student.name);//scanf("%s",student.name); 修改
getchar(); //修改
scanf("%s",student.id); //scanf("%d",student.id); 修改
getchar(); //修改
for(i=0;i<5;i++)
{
scanf("%d",&student.score[i]);
//scanf("%d",&student.score); 修改
}
for(i=0;i<5 - 1;i++) //for(i=0;i<5;i++) 修改
{
for(j=0;j<5-1-i;j++)
{
if(student.score[j]<student.score[j+1])
{
temp=student.score[j];
student.score[j]=student.score[j+1];
student.score[j+1]=temp;
}
}
}
for(i=0,student.total=0;i<5;i++) //for(i=0;i<5;i++) 修改
{
student.total =student.total + student.score[i];
}
student.average =student.total /5.0;
printf("Name:%s\n",ptr->name ); //printf("Name:%s\n",student->name ); 修改
printf("ID:%s\n",ptr->id); //printf("ID:%d\n",student->id ); 修改
printf("Score:");
for(i=0;i<5;i++)
{
if(i==4)
{
printf("%d\n",ptr->score[i]);
//printf("%d\n",student->score[i]); 修改
}
else
{
printf("%d ",ptr->score[i]);
//printf("%d ",student->score [i]); 修改
}
}
printf("average:%.2lf total:%d\n",ptr->average ,ptr->total );
// printf("average:%.2lf total:%d\n",student->average ,student->total ); 修改
return 0;
}