我比较菜,就目前知识面只学到指针初步,目前只学习了C语言,还不会c++
很多算法也没有接触,希望能够得到我这个知识层面,能够解决这个表示问题
#include<stdio.h>
struct infor{
int number;
int science,mind;
int total;
};
int sort(struct infor ch[],int kin){//kin是该数组的上限
struct infor temp;
int i,j,index;
for(i=0;i<kin-1;i++){
index=i;
for(j=i+1;j<kin;j++){
if(ch[j].total>ch[index].total){
index=j;
}
if(ch[j].total==ch[index].total){
if(ch[j].mind>ch[index].mind){
index=j;
}
if(ch[j].mind==ch[index].mind){
if(ch[j].number<ch[index].number){
index=j;
}
}
}
}
temp=ch[index];
ch[index]=ch[i];
ch[i]=temp;
}
}
int main(){
int i,n,min,max,j=0,k=0,k1=0,k2=0,k3=0;
scanf("%d %d %d",&n,&min,&max);
struct infor in[n],temp,ms[n];//in是及格学生信息,共i个人;ms是才德双全,共k个人;
struct infor sm[n],mm[n],ss[n];//sm是德胜才,共k1个;mm是德才皆无,但德>才,k2 ;ss是才胜德,k3
for(i=0;j<n;i++,j++){
scanf("%d %d %d",&in[i].number,&in[i].mind,&in[i].science);
in[i].total=in[i].science+in[i].mind;
if(in[i].science<min||in[i].mind<min){
i--;
}
}//i就已经是及格个数了,没有及格的进行覆盖;
for(j=0;j<i;j++){
if(in[j].science>=max&&in[j].mind>=max){
ms[k]=in[j];
k++;
}
if(in[j].mind>=max&&in[j].science<max){
sm[k1]=in[j];
k1++;
}
if(in[j].mind<max&&in[j].science<max){
if(in[j].mind>=in[j].science){
mm[k2]=in[j];
k2++;
}
}
if(in[j].mind<max&&in[j].science<max){
if(in[j].mind<in[j].science){
ss[k3]=in[j];
k3++;
}
}
if(in[j].mind<max&&in[j].science>=max){
ss[k3]=in[j];
k3++;
}
}
printf("%d\n",i);
sort(ms,k);
sort(sm,k1);
sort(mm,k2);
sort(ss,k3);
for(j=0;j<k;j++){
printf("%d %d %d\n",ms[j].number,ms[j].mind,ms[j].science);
}
for(j=0;j<k1;j++){
printf("%d %d %d\n",sm[j].number,sm[j].mind,sm[j].science);
}
for(j=0;j<k2;j++){
printf("%d %d %d\n",mm[j].number,mm[j].mind,mm[j].science);
}
for(j=0;j<k3;j++){
printf("%d %d %d\n",ss[j].number,ss[j].mind,ss[j].science);
}
}//录入完成,现在要写一个sort函数,进行结构数组的排序