C语言作业 输入多名学生3门课程成绩,并统计成绩的平均分和总分,并根据总分输出名次。

要求:使用数组存放数字,用函数实现输入成绩、排序和输出功能。速度,我急用,2582909009@qq,com ,好了的话。再赏你100金币。

#include<stdio.h>
#include<stdlib.h>
struct stu
{
int grade1,grade2,grade3,count,average;
stu*next;
};
void main()
{
stu*head=NULL,*tail,*p;
int num,i=1,good_num=0,pass_num=0;
printf("请输入全班学生人数: ");
scanf("%d",&num);
for(;i<=num;i++)
{
if (i==1)
{
head=tail=(stu*)malloc(sizeof(stu));
printf("请输入第%d名学生的3门课程分数: ",i);
scanf("%d %d %d",&tail->grade1,&tail->grade2,&tail->grade3);
tail->count=tail->grade1+tail->grade2+tail->grade3;
tail->average=tail->count/3;
tail->next=NULL;
}else
{
p=(stu*)malloc(sizeof(stu));
tail->next=p;
tail=p;
printf("请输入第%d名学生的3门课程分数: ",i);
scanf("%d %d %d",&tail->grade1,&tail->grade2,&tail->grade3);
tail->count=tail->grade1+tail->grade2+tail->grade3;
tail->average=tail->count/3;
tail->next=NULL;
}
}
p=head;
i=1;
while(p)
{
printf("第%d个学生的总分为:%d 平均分为: %d\n",i,p->count,p->average);
if(p->average>=85)
{
good_num++;
}else if(p->average>=60)
{
pass_num++;
}
p=p->next;
i++;
}
printf("全班学生成绩优秀人数为:%d\n全班学生成绩通过人数为:%d\n",good_num,pass_num);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-19
void read_data(int s[][3],int m,int n)
{
int i,j;

for(i=0;i<m;i++)
{
printf("请输入%d个学生的成绩\n",i+1);
for(j=0;j<n;j++)
{
printf("请输入第%d门成绩\n",j+1);
scanf("%d",&s[i][j]);
}
}

}
void show_data(int s[][3], int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
printf("第%d个学生成绩: \t",i+1);
for(j=0;j<n;j++)
{
printf("课程%d成绩: %d ",j+1,s[i][j]);
}
printf("\n");
}
}
int main()
{
int s[6][3]={0};
read_data(s,6,3);
show_data(s,6,3);
return 0;
}
第2个回答  2014-06-19

不知道这算不算你想的结果,我用linux C写的