錯誤訊息:
您的輸出超過測資的輸出!!(line:22)
您額外輸出了: 2432902008176640000
可能的原因為
* 累贅的輸出,請勿輸出題目未要求的文字
程式碼:
# include <iostream>
using namespace std ;
long long int Answer( long long int num ) {
if ( num == 1 )
return 1 ;
else
return num * Answer( num - 1 ) ;
} // Answer()
int main() {
long long int num = 0, answer = 1;
while ( ! cin.eof() ) {
answer = 1 ;
cin >> num ;
if ( num == 0 || num == 1)
cout << "1" << endl;
else if ( num > 1 ) {
cout << Answer(num) << endl ;
} // else if
else // num < 0
cout << "ERROR" ;
} // while
return 0 ;
} // main()
在家測試過明明沒任何問題,為何會額外輸出...??????????
錯誤訊息:
您的輸出超過測資的輸出!!(line:22)
您額外輸出了: 2432902008176640000
可能的原因為
* 累贅的輸出,請勿輸出題目未要求的文字
程式碼:
# include
using namespace std ;
long long int Answer( long long int num ) {
if ( num == 1 )
return 1 ;
else
return num * Answer( num - 1 ) ;
} // Answer()
int main() {
long long int num = 0, answer = 1;
while ( ! cin.eof() ) {
answer = 1 ;
cin >> num ;
if ( num == 0 || num == 1)
cout << "1" << endl;
else if ( num > 1 ) {
cout << Answer(num) << endl ;
} // else if
else // num < 0
cout << "ERROR" ;
} // while
return 0 ;
} // main()
在家測試過明明沒任何問題,為何會額外輸出...??????????
看看這個討論 :)
Reference: http://www.cis.nctu.edu.tw/chinese/doc/research/c++/C++FAQ-Chinese/c-cppfaq-1.html
Q30:為什麼我處理輸入時,會超過檔案的結尾?
因為 eof(檔案結尾)的狀態,是到「將要超過檔案結尾的動作」才會被設定。也就
是說,讀檔案的最後一個位元組並不會設定 eof 的狀態。
【譯註】這也是 C 常見的錯誤。
如果你的程式像這樣:
int i = 0;
while (! cin.eof()) {
cin >> x;
++i;
// work with x
}
你的 i 變數就會多了一。
你真正該做的是這樣:
int i;
while (cin >> x) {
++i;
// work with x
}