最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過c++的sort函數(shù)實(shí)現(xiàn)成績排序功能

 更新時(shí)間:2020年02月22日 15:54:49   作者:fourpoint  
這篇文章主要介紹了通過c++的sort函數(shù)實(shí)現(xiàn)成績排序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

sort函數(shù)用于C++中,對給定區(qū)間所有元素進(jìn)行排序,默認(rèn)為升序,也可進(jìn)行降序排序。sort函數(shù)進(jìn)行排序的時(shí)間復(fù)雜度為n*log2n,比冒泡之類的排序算法效率要高,sort函數(shù)包含在頭文件為#include<algorithm>的c++標(biāo)準(zhǔn)庫中。

題目描述:

有N個(gè)學(xué)生的數(shù)據(jù),將學(xué)生數(shù)據(jù)按成績高低排序,如果成績相同則按姓名字符的字母排序,如果姓名的字母序也相同,則按照學(xué)生的年齡排序,并輸出N個(gè)學(xué)生排序后的信息。

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct E {
 char name[101];
 int age;
 int score;
}buf[1000];

bool cmp(E a, E b) {
 if (a.score != b.score) return a.score < b.score;
 int tmp = strcmp(a.name, b.name);
 if (tmp != 0) return tmp < 0;
 else return a.age < b.age;
}
int main() {
 int n;
 while (scanf_s("%d", &n) != EOF) {
 for (int i = 0; i < n; i++) {
 scanf_s("%s%d%d", buf[i].name,sizeof(buf[i].name), &buf[i].age, &buf[i].score);
 }
 sort(buf, buf + n, cmp);
 printf("\n");
 for (int i = 0; i < n; i++) {
 printf("%s %d %d\n", buf[i].name, buf[i].age, buf[i].score);
 } 
 }
 return 0;
}

注意事項(xiàng)

scanf和scanf_s區(qū)別使用,scanf_s需要標(biāo)明緩沖區(qū)的大小,因而多出一個(gè)參數(shù)。 Unlike scanf and wscanf, scanf_s and wscanf_s require you to specify buffer sizes for some parameters. Specify the sizes for all c, C, s, S, or string control set [] parameters. The buffer size in characters is passed as an additional parameter. It immediately follows the pointer to the buffer or variable. For example, if you're reading a string, the buffer size for that string is passed as follows:

char s[10];
scanf_s("%9s", s, (unsigned)_countof(s)); // buffer size is 10, width specification is 9

微軟參考文檔

結(jié)果

運(yùn)行結(jié)果

通過運(yùn)算符重載來實(shí)現(xiàn)

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
struct E {
 char name[101];
 int age;
 int score;
 bool operator <(const E &b) const {
 if (score != b.score) return score < b.score;
 int tmp = strcmp(name, b.name);
 if (tmp != 0) return tmp < 0;
 else return age < b.age;
 }
}buf[1000];

int main() {
 int n;
 while (scanf_s("%d", &n) != EOF) {
 for (int i = 0; i < n; i++) {
 scanf_s("%s%d%d", buf[i].name,sizeof(buf[i].name), &buf[i].age, &buf[i].score);
 }
 sort(buf, buf + n);
 printf("\n");
 for (int i = 0; i < n; i++) {
 printf("%s %d %d\n", buf[i].name, buf[i].age, buf[i].score);
 } 
 }
 return 0;
}

由于已經(jīng)指明了結(jié)構(gòu)體的小于運(yùn)算符,計(jì)算機(jī)便知道了該結(jié)構(gòu)體的定序規(guī)則。 sort函數(shù)只利用小于運(yùn)算符來定序,小者在前。于是,我們在調(diào)用sort時(shí)便不必特別指明排序規(guī)則(即不使用第三個(gè)參數(shù))。

總結(jié)

到此這篇關(guān)于通過c++的sort函數(shù)實(shí)現(xiàn)成績排序的文章就介紹到這了,更多相關(guān)c++ sort函數(shù)內(nèi)容請搜素腳本之家以前的文章或下面相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)在windows服務(wù)中新建進(jìn)程的方法

    C語言實(shí)現(xiàn)在windows服務(wù)中新建進(jìn)程的方法

    這篇文章主要介紹了C語言實(shí)現(xiàn)在windows服務(wù)中新建進(jìn)程的方法,涉及C語言進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 深入了解C++的多態(tài)與虛函數(shù)

    深入了解C++的多態(tài)與虛函數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++多態(tài)與虛函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-07-07
  • 深度解析三個(gè)常見的C語言內(nèi)存函數(shù)

    深度解析三個(gè)常見的C語言內(nèi)存函數(shù)

    這篇文章主要深度解析了三個(gè)常見的C語言內(nèi)存函數(shù)memcpy,memmove,memcmp,所以本文將對memcpy,memmove,memcmp 三個(gè)函數(shù)進(jìn)行詳解和模擬實(shí)現(xiàn),需要的朋友可以參考下
    2023-07-07
  • C 語言中strstr函數(shù)實(shí)例詳解

    C 語言中strstr函數(shù)實(shí)例詳解

    這篇文章主要介紹了C 語言中strstr函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C語言實(shí)現(xiàn)簡易的掃雷小游戲

    C語言實(shí)現(xiàn)簡易的掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • VC使用TerminateProcess結(jié)束進(jìn)程實(shí)例

    VC使用TerminateProcess結(jié)束進(jìn)程實(shí)例

    這篇文章主要介紹了VC使用TerminateProcess結(jié)束進(jìn)程的方法,實(shí)例演示了TerminateProcess結(jié)束進(jìn)程的具體實(shí)現(xiàn)過程,在進(jìn)行VC應(yīng)用程序開發(fā)時(shí)非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • QT實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法

    QT實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法

    本文主要介紹了QT實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 詳解C++圖搜索算法之雙端隊(duì)列廣搜

    詳解C++圖搜索算法之雙端隊(duì)列廣搜

    這篇文章主要為大家介紹一下C++圖搜索算法中的雙端隊(duì)列廣搜,文中通過例題詳細(xì)介紹了雙端隊(duì)列廣搜的使用方法,感興趣的可以了解一下
    2022-06-06
  • 編寫C++程序使DirectShow進(jìn)行視頻捕捉

    編寫C++程序使DirectShow進(jìn)行視頻捕捉

    這篇文章主要介紹了如何編寫C++程序來使DirectShow進(jìn)行視頻捕捉的方法,DirectShow是微軟公司在ActiveMovie和Video for Windows的基礎(chǔ)上推出的新一代基于COM(Component Object Model)的流媒體處理的開發(fā)包,要的朋友可以參考下
    2016-03-03
  • C++11中的可變參數(shù)模板/lambda表達(dá)式

    C++11中的可變參數(shù)模板/lambda表達(dá)式

    C++11的新特性可變參數(shù)模板能夠讓我們創(chuàng)建可以接受可變參數(shù)的函數(shù)模板和類模板,相比C++98和C++03,類模板和函數(shù)模板中只能含固定數(shù)量的模板參數(shù),可變參數(shù)模板無疑是一個(gè)巨大的改進(jìn),這篇文章主要介紹了C++11中的可變參數(shù)模板/lambda表達(dá)式,需要的朋友可以參考下
    2023-03-03

最新評論

饶河县| 宁乡县| 古浪县| 和林格尔县| 怀柔区| 剑川县| 安义县| 永寿县| 舞阳县| 福泉市| 肥城市| 三原县| 沧州市| 亳州市| 永顺县| 东源县| 清镇市| 徐州市| 黄浦区| 开封市| 黔江区| 盐源县| 津市市| 安义县| 正蓝旗| 阿瓦提县| 西乌珠穆沁旗| 维西| 肥乡县| 松潘县| 玉屏| 井陉县| 永昌县| 眉山市| 都昌县| 离岛区| 邢台市| 嘉善县| 建阳市| 西昌市| 兴义市|