\( \newcommand{\ord}[1]{\mathcal{O}\left(#1\right)} \newcommand{\abs}[1]{\lvert #1 \rvert} \newcommand{\floor}[1]{\lfloor #1 \rfloor} \newcommand{\ceil}[1]{\lceil #1 \rceil} \newcommand{\opord}{\operatorname{\mathcal{O}}} \newcommand{\argmax}{\operatorname{arg\,max}} \newcommand{\str}[1]{\texttt{"#1"}} \)
進階語法-輸入輸出
scanf
主要用來輸入的函數
當讀到檔案結尾會回傳EOF
%d : dec
%i : integer
於 scanf 時有部份差異 (%d 只接受10進位, %i 可接受指定進位,如 0x23, 045),但於 printf 時 %d, %i 並無顯著差異
輸入一整行
printf
類似於scanf,printf也有以下的引數寫法
%[旗標][寬度][.精度]資料型態
因為printf和scanf的資料型態一樣,所以就不重複說了
stringstream
有的時候題目不會給說要輸入幾個數字
像是這一題
輸入有多行,每行長度小於1000字元
每行會有多個整數,請輸出每行的總和(總合為int範圍)
範例輸入:
1 2 3
45 67
100
範例輸出:
6
112
100
剛剛教的所有東西都不能用啊
這個時候就可以用stringstream
cin,cout輸入優化
眾所皆知,cin、cout的效能是非常慢的
但是加了以下的優化後就會跟scanf、printf差不多快
(甚至更快)
連續輸入
有些題目會說:
"測資有多行"、"有多筆測資"、"讀到檔案結尾(EOF)為止"
出現這種文字的都是教你連續輸入的意思
作業
暫時存放區
TEMP
第一題
第二題
第三題