/*【问题描述】
|
#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;}
wiklvrain
小江xue
00小伙