| #include<stdio.h> #include<stdlib.h>
 struct student
 { int num;
 int math;
 int english;
 int c;
 int sum;
 int average;
 };
 void main()
 {struct student s[10];
 int i;
 void sum( student s[]);
 void average(student s[]);
 void sort(student s[]);
 void print(student s[]);
 void search(student s[]);
 
 for(i=0;i<10;i++)
 {
 printf("请输入%d个学生的信息-------学号------数学成绩------英语成绩-----c语言成绩\n",i+1);
 scanf("%d,%d,%d,%d",&s[i].num,&s[i].math,&s[i].english,&s[i].c);
 }
 sum(s);
 average(s);
 sort(s);
 search(s);
 print(s);
 system("pause");//我用的是vs2010编译器,楼主用别的话改下这条
 }
 void sum( student s[])
 { int i;
 
 for(i=0;i<10;i++)
 s[i].sum=s[i].math+s[i].english+s[i].c;
 }
 void average(student s[])
 {
 int i;
 
 for(i=0;i<10;i++)
 s[i].average=(s[i].math+s[i].english+s[i].c)/3;
 }
 void sort(student s[])
 
 {
 int i,j,k;
 struct student temp;
 for(i=0;i<10;i++)
 {   k=i;
 for(j=i+1;j<10;j++)
 if(s[k].sum<s[j].sum)
 k=j;
 if(k!=i)
 {temp=s[i];
 s[i]=s[k];
 s[k]=temp;
 }
 }
 }
 void search(student s[])
 {int mid,low,high,found;
 low=0;
 high=9;
 found=0;
 while(low<=high)
 {mid=(high+low)/2;
 if(s[mid].average==85){found=1;break;}
 else if(85>s[mid].average)
 high=mid-1;
 else low=mid+1;
 
 }
 if(found==1)
 printf("平均分为85分的学生序号为%d\n",s[mid].num);
 else printf("平均分为85分的学生不存在\n");
 }
 void print(student s[])
 {int i;
 printf("学号--数学成绩---英语成绩---c语言课程设计成绩---平均分---总分\n");
 for(i=0;i<10;i++)
 
 printf("%-4d%5d%5d%5d%5d%5d\n",s[i].num,s[i].math,s[i].english,s[i].c,s[i].average,s[i].sum);
 }
 |