分类：电脑/网络-软件
问题：C语言题目，求完整程序，急求答案，不要百度储存五位学生的姓名和4 
储存五位的姓名和4门课的成绩信息。输入任意一位同学的姓名，可以查到该同学的成绩，并将该同学各门课的成绩和平均成绩输出。1.如何保存学生的名字？2.如何保存学生的成绩？3.如何将姓名和成绩联系起来？4.如何查找？5.如何显示？
回答：人格保证，绝对没有，我只弄了5位同学的和三门课程，你按照那个图片给输入就是了，如果要保存文件，可以联系我哦。。。还有就是我多弄了几个功能。。。给你参考下。。。#include<stdio.h>#include<string.h>#define N 5#define M 3typedef struct stud{ long studentID; char studentName[10]; int score[3];}st;void f1(st student[]);void f2(st student[]);void f3(st student[]);void f4(st student[],int (*f)(int a,int b));void f5(st student[]);void f6(st student[]);void f7(st student[]);void f8(st student[]);void f9(st student[]);void f10(st student[]);int e1(int a,int b);int e2(int a,int b);void f1(st student[]){  int i=0,j;      while (i<N) {   printf("请输入学生学号:");  scanf("%ld", &student[i].studentID);  printf("请输入三门功课的成绩（按数学、英语和物理的顺序输入）:");  for(j=0;j<M;j++)          scanf("%d",&student[i].score[j]);        getchar();        printf("请输入学生姓名:");  gets(student[i].studentName);  i++; }                                   }void f2(st student[]){  int i,j,sum;  float av; for(j=0;j<M;j++) {sum=0;  for(i=0;i<N;i++)   sum+=student[i].score[j];  av=(float)sum/N;  printf("第%d门课程的总分为%d,平均分为%.2f\n",j+1,sum,av); }}void f3(st student[]){  int i,j,sum;  float av; for(j=0;j<N;j++) { sum=0;  for(i=0;i<M;i++)   sum+=student[j].score[i];  av=(float)sum/M;  printf("第%d个同学的总分为%d,平均分为%.2f\n",j+1,sum,av); }}void f4(st student[],int (*f)(int a,int b)){ int i,j,k,sum=0; st t; int k1[N];    for(j=0;j<N;j++) {  sum=0;  for(i=0;i<M;i++)  sum+=student[j].score[i];  k1[j]=sum; } for (i=0; i<N-1; i++) {      k=i;    for (j=i+1;j<N;j++)        {if((*f)(k1[j],k1[k]))    k=j;  }  if (k!=i)                     {        t=student[i];student[i]=student[k];student[k]=t;     }   f10(student); }}void f5(st student[]){ int i,j,k; st t; for (i=0; i<N-1; i++) {  k=i;  for(j=i+1;j<N;j++)        {     if(student[j].studentID<student[k].studentID)    k=j;  }  if(k!=i)                     {       t=student[i];student[i]=student[k];student[k]=t;  }   }  f10(student);}void f6(st student[]){  int i,j;  st t;  for(i=0;i<N-1;i++)  {   for(j=i+1;j<N;j++)    if(strcmp(student[j].studentName,student[i].studentName)<0)    {     t=student[i];student[i]=student[j];student[j]=t;    }  } f10(student);}void f7(st student[]){  long x;    int i,j,k,sum; st t; int k1[N];    printf("请输入你要查找的学号:"); scanf("%ld",&x); for(j=0;j<N;j++) {  sum=0;  for(i=0;i<M;i++)  sum+=student[j].score[i];  k1[j]=sum; } for (i=0; i<N-1; i++) {      k=i;    for (j=i+1;j<N;j++)        {if(k1[j]>k1[k])    k=j;  }  if (k!=i)                     {        t=student[i];student[i]=student[k];student[k]=t;     }   } for (i=0;i<N;i++)                  {   if (student[i].studentID==x)  {  printf("该同学的排名为%d,数学成绩为:%d,英语成绩为:%d,物理成绩为:%d,总分为:\n",i+1,student[i].score[0],student[i].score[1],student[i].score[2],student[i].score[0]+student[i].score[1]+student[i].score[2]);break;  } } if(i==N)  printf("无此学号！\n");                           }void f8(st student[]){ int i,j,k,sum; st t1; char t[M]; int k1[N];    printf("请输入你要查找的姓名:"); getchar();    gets(t);     for(j=0;j<N;j++) {  sum=0;  for(i=0;i<M;i++)  sum+=student[j].score[i];  k1[j]=sum; }  for (i=0; i<N-1; i++) {      k=i;    for (j=i+1;j<N;j++)        {if(k1[j]>k1[k])    k=j;  }  if (k!=i)                     {        t1=student[i];student[i]=student[k];student[k]=t1;     }      for(i=0;i<N;i++)  {  if(strcmp(t,student[i].studentName)==0)   {    printf("该同学的排名为%d,数学成绩为:%d,英语成绩为:%d,物理成绩为:%d,总分为:\n",i+1,student[i].score[0],student[i].score[1],student[i].score[2],student[i].score[0]+student[i].score[1]+student[i].score[2]);break;   }  }  if(i==N)  printf("无此姓名!\n"); }}void f9(st student[]){int i,j; float k1=0,k2=0,k3=0,k4=0,k5=0; for(j=0;j<M;j++) {  k1=0,k2=0,k3=0,k4=0,k5=0;  for(i=0;i<N;i++)  if(student[j].score[i]>=90)   k1++;  else if(student[j].score[i]>=80)   k2++;  else if(student[j].score[i]>=70)   k3++;  else if(student[j].score[i]>=60)   k4++;  else   k5++;    printf("第%d门课程优秀率为%.2f%%,良好率为%.2f%%,中等率为%.2f%%,及格为%.2f%%,不及格率%.2f%%\n",j+1,k1/N*100,k2/N*100,k3/N*100,k4/N*100,k5/N*100); }}void f10(st student[]) { int i; printf("      学号       姓名    数学成绩   英语成绩   物理成绩   总分\n"); for (i=0; i<N; i++) {  printf("%10ld%10s",student[i].studentID,student[i].studentName);  printf("%10d%10d%10d%10d\n",student[i].score[0],student[i].score[1],student[i].score[2],student[i].score[0]+student[i].score[1]+student[i].score[2]); }} int e1(int a,int b){   return a<b;}int e2(int a,int b){ return a>b;}void main(){   int C,n;    st student[N]; printf("1.录入数据\n"); printf("2.计算每门课程的总分及平均分\n");    printf("3.计算每个学生的总分及平均分\n"); printf("4.按成绩排序\n"); printf("5.按学号由小到大输出\n"); printf("6.按姓名顺序输出\n"); printf("7.按学号查询排名及成绩\n");    printf("8.按姓名查询\n"); printf("9.分析成绩\n"); printf("10.输出各项数据\n"); printf("0.退出\n"); printf("请输入序号选择:"); do{ scanf("%d",&C); switch(C) {    case 1:f1(student);break;    case 2:f2(student);break;       case 3:f3(student);break;    case 4:     {      printf("请输入要排序数字1为升序，2为降序:");    scanf("%d",&n);    if(n==1)    {f4(student,e1);break;}    else if(n==2)    {f4(student,e2);break;}    else     break;     }    case 5:f5(student);break;       case 6:f6(student);break;    case 7:f7(student);break;       case 8:f8(student);break;    case 9:f9(student);break;    case 10:f10(student);break; } printf("请输入序号选择:"); }while(C!=0);}