EOJ 2990 文獻排序 C語言

2021-09-20 10:30:50 字數 2088 閱讀 9151

問卷調查課日常摸魚,,

這道題感覺思路很簡單,就是具體實現時出現了意料之外的問題。

比如用scanf或cin輸入若干個個字串時,如果輸入了空格,接下來的內容都是下乙個字串的了。

所以本以為這道題可以水過,結果還是花了較長時間w,,

2990. 文獻排序

題面

單點時限: 2.0 sec

記憶體限制: 256 mb

現在你的導師給你了乙個待排序的參考文獻列表,要你排好序給他。

文獻列表中每一條文獻記錄只佔一行。排序的規則和string型別字串的比較規則一致(在排序時如果該字串中包含大寫字母,則當作小寫字母處理,保證沒有相同大小的字串,但是輸出結果不能改變任一字串),按公升序排列。

輸入格式

第 1 行:乙個整數 t (1≤t≤10) 為問題數。

對於每組測試資料:每組第一行包括乙個整數n,(1≤n≤200),接下來有n行,每行包括一行文獻記錄,文獻記錄的長度s (1≤s≤200)。

輸出格式

對每組輸入,輸出一行問題的編號(0開始編號,格式:case #0: 等)然後輸出排好序的文獻記錄。

樣例

input

3

3abc hello!

abc hellz!

bbc hello!

2acc hello!

abc hellz!

3abc hi!

abc hallo!

aac hello!

output

case #0:

abc hello!

abc hellz!

bbc hello!

case #1:

abc hellz!

acc hello!

case #2:

aac hello!

abc hallo!

abc hi!

輸入n個字串(可以用二維陣列來儲存)

用qsort為這些字串排序(此題注意cmp函式)

此題cmp邏輯:

因為比較時不區分大小寫,但輸出時是按原有大小寫輸出,

所以,在cmp函式中,比較的不是原字串,而是兩個臨時字串,內容是「小寫化」了的原串

通過這道題,了解到了gets和scanf、cin的乙個挺重要的區別——

所以如果要輸入的字串中包含空格或tab,這三者中只能選擇gets。

參考部落格:scanf、gets、getchar、cin、cin.get、cin.getline、getline總結

標頭檔案:

#include 

#include

#include

#include

比較大的陣列要定義在main函式之外:

char s[

205]

[205

];

cmp函式(qsort要用到):

int

cmp(

const

void

* a,

const

void

* b)

for(i=

0;s2[i]

!='\0'

; i++

)return

strcmp

(s1,s2)

;}

main函式:

int

main()

return0;

}

挺開心的,又學會了一點東西。

小長假要開始了,不過明天可不能睡懶覺,,(因為搶不到票所以只能坐大清早的高鐵【手動微笑)

by the way, 明天就回家了,生活真是太美好了啊~

——2019.4.30 22點20分 於寢室

EOJ 莫干山奇遇

出題人當然是希望出的題目有關oxx,於是想方設法給題目配上一些有關oxx的背景故事,使得它看起來不那麼無趣。但有的時候卻無法引入合適的小姐姐,使得oxx顯得非常可憐。所以出題人刪除了故事,只留下乙個枯燥乏味的數學問題。故事已刪除 給乙個長度為n的序列a1,a2,an,求乙個長度為m的序列b1,b2,...

EOJ 2794 鍊錶

大概是在10000 10的矩陣裡找兩行,兩列,使得兩行中的對應列是相同的。思路 在長列中hash,建立hash陣列,表示這個hash i 的i前乙個位置,建立鍊錶next i 指向hash value i 這樣就能o n 的找到所有相同的數的乙個鍊錶。然後搜尋兩列的時候比較當前指向的位置,當前比較短...

EOJ 3256 拼音魔法

time limit per test 1.0 seconds time limit all tests 1.0 seconds memory limit 256 megabytes 魔法學校小學一年級有一種題。就是給乙個字的拼音,給乙個聲調,讓你正確地注音。但魔法老師給了巨量的題,你不用魔法根本不...