亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

if (cin >> (int)類型) 與 if (cin >> (string)類型)

if (cin >> (int)類型) 與 if (cin >> (string)類型)

C++
慕桂英4014372 2018-10-30 09:09:10
題目只是個例子1044 火星數字(20 分)火星人是以 13 進制計數的:地球人的 0 被火星人稱為 tret。地球人數字 1 到 12 的火星文分別為:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec?;鹦侨藢⑦M位以后的 12 個高位數字分別稱為:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。例如地球人的數字 29 翻譯成火星文就是 hel mar;而火星文 elo nov 對應地球數字 115。為了方便交流,請你編寫程序實現地球和火星數字之間的互譯。輸入格式:輸入第一行給出一個正整數 N(<100),隨后 N 行,每行給出一個 [0, 169) 區間內的數字 —— 或者是地球文,或者是火星文。輸出格式:對應輸入的每一行,在一行中輸出翻譯后的另一種語言的數字。輸入樣例:4295elo novtam受到while (cin >> s)這種寫法的啟發,想問這種寫法可以么             int main()             {                 int a;                 string s;                 if (cin >> a)                 {                     //將地球數字轉化成火星文                 }                 if (cin >> s)                 {                     //將火星文轉化成地球數字                 }             }
查看完整描述

2 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

不行,cin是流輸入,也就是它讀入一個合適的數據后再流向下一個數據進行讀入。
如果這個題目輸入是
29
5
elo nov
tam
cin會將這4個數據放入字節流中,然后開始讀入,讀入29,5,符合你的第一個條件語句,那么進入該語句,此時程序不會出現問題。
但當讀入elo nov時,(準確的說它只會讀入elo,nov將在下一個讀)它還是先進入第一個if,然后出現類型不匹配的錯誤,因為你寫的代碼讀入的類型應該是整型,但給了一個字符串。
正確的做法應該是按行讀取,判斷數據類型后再選擇合適的條件語句。
最后,你這種寫法只能在你能完全確定下一個數據是合適的類型時才行。

查看完整回答
反對 回復 2018-11-03
  • 2 回答
  • 0 關注
  • 906 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號