用C语言编写5名学生的信息,包括学生学号(字符型)、姓名(字符型)和3门课成绩(整型)

要求:
(1)计算每个学生的总成绩、平均分,并输出。
(2)将学生成绩按总分从高到低排序并输出,输出项有学生学号、姓名、3门课成绩及总分。

#include<stdio.h>
struct student //定义结构体,包括学号,姓名,成绩,平均分,总成绩
{
int no;
char name[10];
int score[3];
float ave;
int sum;
};
int main()
{
struct student s[5], temp;
int i, j;
printf("input 5 students' informations\n");
for(i = 0; i < 5; ++i) //输入信息
{
s[i].sum = s[i].ave = 0;
scanf("%d%s", &s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
{
scanf("%d",&s[i].score[j]);
s[i].sum += s[i].score[j]; //计算成绩总和
s[i].ave = s[i].sum;
}

}
printf("before sort\n"); // 排序前信息输出
for(i = 0; i < 5; ++i)
{
printf("no=%d name=%s ", s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
printf("%d ", s[i].score[j]);
printf("ave=%f sum=%d\n", s[i].ave/3, s[i].sum);
}
for(j = 0; j < 5; ++j) //按照成绩总和从打到小排序
for(i = 0; i < 4; ++i)
if(s[i].sum < s[i+1].sum)
{
temp = s[i];
s[i] = s[i+1];
s[i+1] = temp;
}
printf("affter sort\n"); //排序后信息输出
for(i = 0; i < 5; ++i)
{
printf("no=%d name=%s ", s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
printf("%d ", s[i].score[j]);
printf("ave=%f sum=%d\n", s[i].ave/3, s[i].sum);
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-03
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[10];
int score[3];
int sum;
}stu[5],t;
void main()
{
int i, j;

float ave;
printf("请输入五个学生的信息\n");
for(i=0;i<5; i++) //输入信息
{
printf("\n请输入第%d个学生的信息\n",i+1);
printf("学号: ");
scanf("%d",&stu[i].num);
printf("姓名: ");
scanf("%s",&stu[i].name);
for(j=0;j<3;j++)
{
printf("第%d门课的成绩:",j+1);
scanf("%d",&stu[i].score[j]);
}

}
system("cls");
printf("学号\t姓名\t总分\t平均分\n");
for(i=0;i<5;i++)
{
int sum;
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
ave=(float)stu[i].sum/3;
printf("%d\t%s\t%d\t%5.2f\n",stu[i].num,stu[i].name,stu[i].sum,ave);

}
int k=0;

while(k<5)
{i=0;
while(i<5)
{
if(stu[i].sum<stu[i+1].sum)
{
t=stu[i];
stu[i]=stu[i+1];
stu[i+1]=t;
i++;

}
else
{
i++;
}
}
k++;
}
printf("\n排名如下:\n\n");
printf("学号\t姓名\t课程1\t课程2\t课程3\t总分\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
}
}
//如果不明白可以问我,我调试过了,没有问题,希望能帮到你。
第2个回答  2010-04-22
给你个思路 :可以定义个结构体,包含你想要包含的数据,然后,编个函数计算成绩,再编个排序的函数 不就ok了

用C语言编写5名学生的信息,包括学生学号(字符型)、姓名(字符型)和3...
include<stdio.h> struct student \/\/定义结构体,包括学号,姓名,成绩,平均分,总成绩 { int no;char name[10];int score[3];float ave;int sum;};int main(){ struct student s[5], temp;int i, j;printf("input 5 students' informations\\n");for(i = 0; i < 5; ++i) ...

用C语言编写程序,完成以下功能: (1) 有5个学生,每个学生的数据包括学号...
void max(STU *stu, int num, STU *stuRev, int *stuRevNum) \/\/stu为学生数组的首地址,num为数组长度 \/\/stuRev表示要接收的数组,stuRevNum表示最终接收的个数,即最高成绩同学的个数(有可能不止一个同学){ STU temp[5] ;float maxtotal = 0 ;int i ,temp_index=0 ;for(i=0; i...

...姓名(字符型)和3门课成绩(整型),编程完成下面的
define N 5 struct student {char num;char name[20];int score1,score2,score3;};void paixu(zf[N],int n){ int i,j,t;for(i=0;i<N-1;i++)for(j=N-2;j>=i;j--)if(zf[j]<zf[j+1]){ t=zf[i];zf[j]=zf[j+1];zf[j+1]=t;} } main(){ int i,m,k;char ...

利用C语言,建立一个五个学生的信息登记表,要求有学号、姓名、和三门课...
printf("%s\\t%s\\t%s\\t\\n","MATH","C","ENGLISH");scanf("%d %d %d",&info[i-1].MATH,&info[i-1].C,&info[i-1].ENGLISH);info[i-1].TOTAL=info[i-1].MATH+info[i-1].C+info[i-1].ENGLISH;} printf("%s\\n","输入@,回车保存学生信息");while(getchar()!='@'){ ...

C语言填空 从键盘输入5名学生的学号、姓名以及3门课成绩,计算每名同学...
第一空:scanf("%d %s",&stu[i].num,stu[i].name);第二空:scanf("%f",&stu[i].sco[j]);第三空:stu[i].sum+=stu[i].sco[j];

C语言编程题:有5个学生,每个学生有3门课成绩,从键盘上输入以上数据(包 ...
unsigned int Uint32;typedef struct stu{char name[NAME_MAX];char stu_number[NUMBER_MAX];Uint32 chinese;Uint32 math;Uint32 english;} stu;int main(void){stu students[STUDENTS_MAX];int idx=0;printf("输入5个学生的信息\\n");for(idx=0;idx<STUDENTS_MAX;idx++){printf("name:"...

从键盘输入5名学生的信息,包含学号,姓名,数学成绩英语成绩,C语言成绩...
if(min>a[i]) {bb=pb,min=a[i];}逻辑错误,刚开始”min=a[0]而开始运行后,min不可能大于a[i],要在这一句前再赋给min一个值,改为min=a[0];if(min>=a[i]) {bb=pb,min=a[i];}就行了,我已经试过了,运行成功

...输入5个学生的数据信息,包括学生的学号,姓名,数学、英语和语文三门...
c语言问题急求答案① 输入5个学生的数据信息,包括学生的学号,姓名,数学、英语和语文三门课程的成绩并统计平均成绩;② 系统中学生数据的排列顺序,初始时是按照输入顺序排列的;根据使用者的选择,可以按照学号由低向高排序,也可以按照平均成绩由高向低排序;求大神 ...

c语言,有5个学生的信息(包括学号,姓名,成绩),要求按照成绩的高低顺序...
Li",86},{10108,"Ling",73.5},{10110,"Sun",100}}; int n=5; int i; int j; struct Student temp; printf("The order is:\\n"); for(i=n-1;i>0;i--){ for(j=0;j<i;j++){ if(stu[j].score<stu[j+1]...

用c语言编写。五个学生,每人语文、数学和英语三门成绩,输出成绩,求...
h>void main(){float temp[5][3];int i;float x1,x2,x3,x[5];for(i=0;i<5;i++){printf("请输入学生%d的语文成绩:",i+1); scanf("%f",&temp[i][0]);printf("请输入学生%d的数学成绩:",i+1); scanf("%f",&temp[i][1]);printf("请输入学生%d的英语成绩:",i+...

相似回答