91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通過c++的sort函數實現成績排序功能

發布時間:2020-09-07 19:00:04 來源:腳本之家 閱讀:230 作者:fourpoint 欄目:編程語言

sort函數用于C++中,對給定區間所有元素進行排序,默認為升序,也可進行降序排序。sort函數進行排序的時間復雜度為n*log2n,比冒泡之類的排序算法效率要高,sort函數包含在頭文件為#include<algorithm>的c++標準庫中。

題目描述:

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

#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;
}

注意事項

scanf和scanf_s區別使用,scanf_s需要標明緩沖區的大小,因而多出一個參數。 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

微軟參考文檔

結果

通過c++的sort函數實現成績排序功能

通過運算符重載來實現

#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;
}

由于已經指明了結構體的小于運算符,計算機便知道了該結構體的定序規則。 sort函數只利用小于運算符來定序,小者在前。于是,我們在調用sort時便不必特別指明排序規則(即不使用第三個參數)。

總結

到此這篇關于通過c++的sort函數實現成績排序的文章就介紹到這了,更多相關c++ sort函數內容請搜素億速云以前的文章或下面相關文章,希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

衡阳县| 通江县| 客服| 兴文县| 锦屏县| 平定县| 锡林郭勒盟| 栾城县| 外汇| 旬邑县| 修武县| 南京市| 讷河市| 临夏市| 湘潭市| 招远市| 台北市| 祁东县| 康马县| 三门县| 岳阳县| 永登县| 宜川县| 新巴尔虎左旗| 连平县| 镶黄旗| 木兰县| 凌海市| 茶陵县| 濮阳市| 屯昌县| 若尔盖县| 治多县| 澳门| 黎平县| 山丹县| 搜索| 哈巴河县| 彭山县| 确山县| 黑山县|