首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用结构体数组描述学生信息的程序有关问题

2012-04-25 
用结构体数组描述学生信息的程序问题C/C++ code/*编一个程序:用结构体描述60位学生的信息,包括学号,姓名和

用结构体数组描述学生信息的程序问题

C/C++ code
/*编一个程序:用结构体描述60位学生的信息,包括学号,姓名和三门课的成绩和总成绩,并以函数形式实现以下的功能1:输入学生的前5项信息,并计算每个学生的总成绩2:按总成绩的递减顺序对成绩表排序3:输出排序后的成绩*/#include<stdio.h>#define N 60struct student{    int num;    char name[10];    int score[4];   //三门课的成绩和总成绩,};void main(){    struct student stu[N];    void read(struct student *p,int n);    //输入学生成绩,计算    void sort(struct student s[],int n);  //排序    void print(struct student *p,int n);   //打印    read(stu,N); sort(stu,N);print(stu,N);}void read(struct student *p,int n){    int i,j,sum=0;    for(i=0;i<n;i++,p++)    //输入学号和姓名        scanf("%d %s",&p->num,&p->name);      for(j=0;j<3;j++)      {          scanf("%d %d %d",&p->score[j]);          sum+=p->score[j];  //计算三门课的总成绩      }      p->score[3]=sum;  //把总成绩放到score[4】中}void sort(struct student s[],int n)   //选择排序法{    int i,j,k;    struct student temp;    for(i=0;i<n-1;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(s[k].score[3]<s[j].score[3])      k=j;        }        if(k!=i)        {            temp=s[i];            s[i]=s[k];            s[k]=temp;        }    }}void print(struct student *p,int n){    int i,j;    for(i=0;i<n;i++,p++)        printf("%6d %16s",p->num,p->name);       for(j=0;j<4;j++)           printf("%d",p->score[j]);       printf("\n");}

这个运行输入的时候没有终止的条件,怎么改这个程序

[解决办法]
[code=C/C++][/code]
void read(struct student *p,int n)
{
int i,j,sum=0;
for(i=0;i<n;i++,p++) //输入学号和姓名
{
scanf("%d %s",&p->num,&p->name);
printf("***********\n");
for(j=0;j<3;j++)
{
scanf("%d",&p->score[j]);
sum+=p->score[j]; //计算三门课的总成绩
}
}
p->score[3]=sum; //把总成绩放到score[4】中
}
[解决办法]
for(i=0;i<n;i++,p++) //输入学号和姓名
{//漏了这个和最下面的括号吧?
scanf("%d %s",&p->num,&p->name);
for(j=0;j<3;j++)
{
scanf("%d %d %d",&p->score[j]);
sum+=p->score[j]; //计算三门课的总成绩
}

热点排行