生活随笔
收集整理的這篇文章主要介紹了
结构体对成绩进行排名
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
期末考試結(jié)束后要對(duì)同學(xué)們的考試成績(jī)進(jìn)行排序,張老師已經(jīng)計(jì)算好了每一位同學(xué)的總成績(jī)。請(qǐng)編寫程序,輸入每位同學(xué)的總成績(jī)并輸出一個(gè)按成績(jī)高低排列的名次表。
該問(wèn)題中,在成績(jī)排序的同時(shí),需要相應(yīng)的學(xué)號(hào)和姓名一起隨之變化。因此,我們可以使用結(jié)構(gòu)體,學(xué)號(hào)、姓名、成績(jī)以及名次作為結(jié)構(gòu)體成員。通過(guò)對(duì)結(jié)構(gòu)體對(duì)象成員(總成績(jī))的大小判斷,實(shí)現(xiàn)把結(jié)構(gòu)體對(duì)象作為一個(gè)整體進(jìn)行排序操作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct student //聲明結(jié)構(gòu)體 student
{ char id[5]; //學(xué)生學(xué)號(hào)(四位)char name[40]; //學(xué)生姓名float score; //期末總成績(jī)int num; //名次
}student; int main(int argc, char *argv[])
{student stu[100], temp; //定義結(jié)構(gòu)體對(duì)象數(shù)組 stu 和臨時(shí)對(duì)象 tempint i, j, n;printf("輸入學(xué)生人數(shù)(1~100):");scanf("%d", &n);printf("-----------------------\n");for(i = 0; i < n; i++) { //輸入學(xué)生成績(jī)printf("學(xué)號(hào)輸入9999則停止輸入!\n");printf("學(xué)號(hào)(9999):"); scanf("%s", stu[i].id);if(strcmp(stu[i].id, "-1") == 0) {n = i;break;}printf("姓名:"); scanf("%s", stu[i].name);printf("總成績(jī):"); scanf("%f", &stu[i].score);}for(i = 0; i < n; i++) { //按成績(jī)排序(冒泡法)for(j = i+1; j < n; j++) {if(stu[i].score < stu[j].score) {temp = stu[i];stu[i] = stu[j];stu[j] = temp;} //結(jié)構(gòu)體變量整體交換}stu[i].num = i+1;}printf("----------------------------------\n");printf(" 學(xué)號(hào) 姓名 成績(jī) 名次\n");for(i = 0;i < n; i++) { //輸出名次printf("%6s",stu[i].id);printf("%10s",stu[i].name);printf("%12.2f",stu[i].score);printf("%6d\n",stu[i].num);} return 0;
}
運(yùn)行結(jié)果:
?
總結(jié)
以上是生活随笔為你收集整理的结构体对成绩进行排名的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。