/*【问题描述】
|
#include "stdafx.h"#include <stdlib.h>#include <stdio.h>#include <string.h>
typedef struct stuInf { int stuID; char stuName[10]; int stuMath; int stuEng; int stuChi; int markAll=stuMath+stuEng+stuChi;};
void stuArrSort(stuInf *pStu, int size);//进行排序void stuArrRakOut(stuInf *pStu, int size);//进行排名并输出
void stuArrSort(stuInf *pStu, int size) { /*根据总分排序*/ int i, j; for (i = 0; i < size - 1; i++) { for (j = i + 1; j < size; j++) { if ((pStu+i)->markAll < (pStu+j)->markAll){ stuInf tmp = *(pStu + i); *(pStu + i) = *(pStu + j); *(pStu + j) = tmp; } } }
/*根据学号排序*/ for (i = 0; i < size - 1; i++) { for (j = i + 1; j < size; j++) { if ((pStu + i)->markAll == (pStu + j)->markAll) { if ((pStu + i)->stuID > (pStu + j)->stuID) { stuInf tmp = *(pStu + i); *(pStu + i) = *(pStu + j); *(pStu + j) = tmp; } } else { continue; } } }}
void stuArrRakOut(stuInf *pStu, int size) { int i,rak=1; printf("%d %d %s %d %d %d\n", rak, (pStu + 0)->stuID,(pStu + 0)->stuName,(pStu+0)->stuMath,(pStu+0)->stuEng,(pStu+0)->stuChi); for (i = 1; i < size; i++) { if ((pStu + i)->markAll == (pStu + (i-1))->markAll) { printf("%d %d %s %d %d %d\n", rak, (pStu + i)->stuID, (pStu + i)->stuName, (pStu + i)->stuMath, (pStu + i)->stuEng, (pStu + i)->stuChi); } else { rak=i; printf("%d %d %s %d %d %d\n", rak, (pStu + i)->stuID, (pStu + i)->stuName, (pStu + i)->stuMath, (pStu + i)->stuEng, (pStu + i)->stuChi); } }}
int main(){ int iniNum; scanf_s("%d", &iniNum);
if (iniNum < 1 || iniNum>9) { printf("Please input num 1-9. \n"); } else {
stuInf *stuArr = (stuInf*)malloc(sizeof(stuInf)*iniNum);
int i; for (i = 0; i < iniNum; i++) { scanf_s("%d %s %d %d %d", &((stuArr + i)->stuID), ((stuArr + i)->stuName),10, &((stuArr + i)->stuMath), &((stuArr + i)->stuEng), &((stuArr+i)->stuChi)); }
stuArrSort(stuArr, iniNum); stuArrRakOut(stuArr, iniNum);
free(stuArr);
}
system("pause"); return 0;}
DreachmeR
wiklvrain
小江xue
00小伙
随时随地看视频慕课网APP