竹園論壇

標題: TOJ第5題 [打印本頁]

作者: 零人桐    時間: 2014-8-10 21:47
標題: TOJ第5題
為甚麼我TOJ第5題在test3的check一直WA(五次了!)?抓BUG也抓不出來......

各位大大救一下啦!


程式碼:

[C++] 純文本查看 復制代碼
#include<iostream>
using namespace std;
int main()
{
        string s;
        cin>>s;
        int x = s.size();
        if( x<=20 )
        {
                cout<< "Hello ,"<<s<<" !"<<endl;
        }
        return 0;
}


作者: Sylveon    時間: 2014-8-10 22:02
試試這筆測資
[Plain Text] 純文本查看 復制代碼
Harry Potter


正確的輸出
[Plain Text] 純文本查看 復制代碼
Hello ,Harry Potter !


作者: amoshuangyc    時間: 2014-8-10 22:11
本帖最後由 amoshuangyc 於 2014-8-10 22:25 編輯

你有沒有搞清楚 cin >> s 這個命令的詳細內容。
例如,input 為
abc def
時,cin >> s ,s 會是 "abc" ,而不是 "abc def"。cin >> s 當讀入到空白或 \n 時就會停止。

再舉一個例子,input 為
123 4
567
程式碼為 cin >> s1 >> s2 >> s3; 結果會是 s1 = "123", s2 = "4", s3 = "567"。

這題的輸入有可能會有空白,所以這題你需要的是 getline(cin, s); 這樣就會把整行都讀進來。
例如 input 為
123 4
getline(cin, s); 的結果為 s = "123 4"。

另外,題目保證名字的長度不超過 20 個字,所以你沒必要去檢查有沒有超過啊。直接輸出就好了啊。

作者: 零人桐    時間: 2014-8-11 10:10
好謝謝各位大大的幫助!
作者: 零人桐    時間: 2014-8-22 16:03
吼我久久上一次就幫忙改成[已解決]嘛!




歡迎光臨 竹園論壇 (http://forum.tfcis.org/) Powered by Discuz! X3.2