c语言程序设计 输入一个学生的学号和各门功课的成绩 求出学生的平均成绩 再按平均

有高手帮忙解决吗 谢谢了 急用 麻烦附上 步骤说明
个数随意 就可以 题是: 输入一个班学生的学号和各门工科的成绩 求出学生平均成绩 再按平均成绩排序 并输出排序后的结果。 最好用最简单的C语言编程

第1个回答  2009-07-21
#include "graphics.h"
#define SIZE 100
#include <conio.h>
#include<stdio.h>
int N;
struct student
{
int No ;
int age;
char name[10];
char sex;
int computerscore;
int Englishscore;
int Mathscore;
int Sum[10];
int aver[10];
char Dengji[10];
}stud[SIZE];
FILE*fp;
int i;
int j;
int m;
int n;
int o;

void input()
{
i=1;

printf("please input student data\n");

while(i<=N)
{
printf("No :");
scanf("%d",&stud[i].No );

printf("name:");
scanf("%s",stud[i].name);

printf("age");
scanf("%d",&stud[i].age);

printf("sex");
getchar();
scanf("%c",&stud[i].sex);

printf("computerscore:");
scanf("%d",&stud[i].computerscore);

printf("Englishscore:");
scanf("%d",&stud[i].Englishscore);

printf("Mathscore:");
scanf("%d",&stud[i].Mathscore);
i++;
}

}

chuli(struct student stud[])
{

int k,m;
struct student t;
int Sum[SIZE],aver[SIZE];

for(i=1;i<=N;i++)
Sum[i]=stud[i].computerscore+stud[i].Englishscore+stud[i].Mathscore;

for(i=1;i<=N;i++)
aver[i]=Sum[i]/3;

for(i=1;i<=N;i++)
{
k=i;
{
for(j=i+1;j<=N;j++)
if(Sum[i]<Sum[j])
k=j;

if(k!=i)
{
t=stud[i];stud[i]=stud[k];stud[k]=t;
m=Sum[i];Sum[i]=Sum[k];Sum[k]=m;
n=aver[i];aver[i]=aver[k];aver[k]=n;
}

}
}
for(i=1;i<=N;i++)
{
if(aver[i]>=90)
{printf("%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\tA\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore,Sum[i],aver[i]);
printf("\t\t\t\t\twelldone!please go on!\n");
}
else if(aver[i]>=80)
printf("%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\tB\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore,Sum[i],aver[i]);
else if(aver[i]>=70)
printf("%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\tC\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore,Sum[i],aver[i]);
else if(aver[i]>=60)
printf("%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\tD\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore,Sum[i],aver[i]);
else
{
printf("%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\tE\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore,Sum[i],aver[i]);
printf("\t\t\t\t\tYou should work hard!\n");
}
}
}
Maxcomputerscore(struct student stud[])
{
int i=0,Max;
Max=stud[i].computerscore;
m=stud[i].No ;
for(i=1;i<N;i++)
if(Max<stud[i].computerscore)
{
Max=stud[i].computerscore;
m=stud[i].No ;
}
printf("Maxcomputerscore:");
printf("Max=%d,m=%d\n",Max,m);
}
Maxenglishscore(struct student stud[])
{
int i,Max;
i=0;
Max=stud[i].Englishscore;
m=stud[i].No ;
for(i=1;i<N;i++)
if(Max<stud[i].Englishscore)
{
Max=stud[i].Englishscore;

m=stud[i].No ;
}
printf("Max Englishscore:");

printf("Max=%d,m=%d\n",Max,m);
}

MaxMathscore(struct student stud[])
{
int i=0;
int m;
int Max;
Max=stud[i].Mathscore;
m=stud[i].No ;
for(i=1;i<N;i++)
if(Max<stud[i]. Mathscore)
{
Max=stud[i].Mathscore;
m=stud[i].No ;
}
printf("MaxMathscore:");
printf("Max=%d,m=%d\n",Max,m);
}

main()
{
char ch;
int i,k,driver=DETECT,mode;
initgraph(&driver,&mode,"c:\\tc");
system("cls");
printf("\t\t*******************************************\n");
setbkcolor(BLUE);cleardevice();
setfillstyle(1,2);
setcolor(YELLOW);
rectangle(100,100,540,380);
floodfill(50,50,14);
setcolor(12);
settextstyle(1,0,8);

outtextxy(130,150,"welcome!");

printf("\t\t*******************************************\t\t\t\n");
printf("\t\t please input the number of students!\t\t\t\t");
scanf("%d",&N);
system("cls");
printf("\t\t**---------------------------------------**\n");

printf("\t\tT:input the student data .\n");

printf("\t\t\C:have a look at the data. \n");

printf("\t\tL:get every subject the highest score \n");

printf("\t\tJ:stored information \n");

printf("\t\tX:quit the program \n");

printf("\t\t**---------------------------------------**\n");

printf("please input your choise:");

while((ch=getchar())!='w')
{
switch(ch)
{
case'T':input();

break;
case'C':
chuli(stud);
break;
case'L':
Maxcomputerscore(stud);

Maxenglishscore(stud);

MaxMathscore(stud);

break;

case'X':exit(o);

case'J':

fp=fopen("student.txt","w+");/*创建一个sutden.txt文本文件*/
if(!fp)
{
printf("cannot open the file");
return;
}/*在文件头写入包含的学生信息*/
for(i=0;i<N;i++)
fprintf(fp,"%d\t%s\t%d\t%c\t%d\t%d\t%d\t%d\t%d\t\n",stud[i].No ,stud[i].name,stud[i].age,stud[i].sex,stud[i].computerscore,stud[i].Englishscore,stud[i].Mathscore);
fclose(fp);/*写完后关闭文件*/

break;
default: printf("\nplease input the right word:\nT.C.L.J.X.\n");
}
printf("\n--------------over------------------------------\n");
}

}

第2个回答  2009-07-10
这个。。。有点害你的成分在里面。。。好好学习啊
#define total_kemu 3
void main()
{
float stu[100][total_kemu+1];
int number=0;
float score_math,score_english,score_other;
float sum=0.0,average,temp;
b=scanf("%d,%d,%d",&score_math,&score_english,&score_other);
while(b==1)/*输入字母结束输入*/
{
stu[number][1]=score_math;
stu[number][2]=score_english;
stu[number][3]=score_other;
for(i=1;i<total_kemu+1;i++)
sum+=stu[number][i];
stu[number][0]=sum/total_kemu;
number++;
b=scanf("%d,%d,%d",&score_math,&score_english,&score_other);
}
for(i=0;i<number;i++)
for(j=i;j<number;j++)
{
if(stu[j][0]>stu[i][0])
{
temp=stu[i][0];
stu[i][0]=stu[j][0];
stu[j][0]=temp;
}
}
for(i=0;i<number;i++)
printf("%f",stu[i][0]);
}本回答被提问者采纳
第3个回答  2009-07-19
#include "stdio.h"
#define N 2

struct student
{
char num[10];
char name[10];
int score[3];
int sum;
float ave;
}stu[10];

input()
{
int i;
printf("\n\nPlease input %d zu xue sheng shu ju:\n",N);
printf("\nxuehao xingming cj1 cj2 cj3\n");
for(i=0;i<N;i++)
{scanf("%s",stu[i].num);
scanf("%s",stu[i].name);
scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);

stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].ave=stu[i].sum*1.0/3;
}
}
outzpj()
{
int i;
float cj1=0,cj2=0,cj3=0;
for(i=0;i<N;i++)
{ cj1+=stu[i].score[0];
cj2+=stu[i].score[1];
cj3+=stu[i].score[2];
}
cj1/=N;
cj2/=N;
cj3/=N;
printf("\n\nNow output 3 men ke cheng de zong ping jun fen :\n");
printf("\n diyimen diermen disanmen \n");
printf("%10.1f%10.1f%10.1f\n",cj1,cj2,cj3);

}
outbjg()
{
int i,biao=1;
printf("\n\nBu ji ge de ren shu you\n");
printf("\nXuehao xingming cj1 cj2 cj3\n");
for(i=0;i<N;i++)
if (stu[i].score[0]<60 || stu[i].score[1]<60 ||stu[i].score[2]<60)
{
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%8d%8d%8d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
biao=0;
}
if (biao==1)
printf("\nMei you bu ji ge de ren ...\n");

}

outzfjx()
{
int i,j;
struct student t;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(stu[i].sum <stu[j].sum)
{t=stu[i];stu[i]=stu[j];stu[j]=t;}

printf("\n\nAn zhao zong fen pai xu hou de jie guo shi : \n");
printf("\nXuehao xingming cj1 cj2 cj3 sum \n");
for(i=0;i<N;i++)
{
printf("%-10s",stu[i].num);
printf("%-10s",stu[i].name);
printf("%8d%8d%8d%8d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
}
}

cunpan()
{
FILE *fp;
int i;
if ((fp=fopen("abc.txt","w"))!=NULL)
{
fprintf(fp,"\n\nAn zhao zong fen pai xu hou de jie guo shi : \n");
fprintf(fp,"\nXuehao xingming cj1 cj2 cj3 sum ave\n");
for(i=0;i<N;i++)
{
fprintf(fp,"%-10s",stu[i].num);
fprintf(fp,"%-10s",stu[i].name);
fprintf(fp,"%8d%8d%8d%8d%8.1f\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].ave);
}
fclose(fp);

}

}

main()
{

input();
outzpj();
outbjg();
outzfjx();
cunpan();

}
第4个回答  2009-07-08
是输入几个学生的成绩还是不限个数