非常抱歉,題目描述有問題。
已經更正為長度小於等於 1000 大於 0 且只由大寫英文字母構成。
將您的代碼的 buffer 長度放寬即可通過,感謝回報。
非常抱歉,題目描述有問題。
已經更正為長度小於等於 1000 大於 0 且只由大寫英文字母構成。
將您的代碼的 buffer 長度放寬即可通過,感謝回報。
我如果送出
#include <stdio.h>
#define _SIZE_ 1000
int main() {
char c1[_SIZE_], c2[_SIZE_];
int ans;
while(fgets(c1, _SIZE_, stdin)){
fgets(c2, _SIZE_, stdin);
ans = c2[0]-c1[0];
printf("%d\n", ans >= 0 ? ans : ans+26);
}
return 0;
}
會在161行 WA
------------------
改成
#include <stdio.h>
#define _SIZE_ 1024
int main() {
char c1[_SIZE_], c2[_SIZE_];
int ans;
while(fgets(c1, _SIZE_, stdin)){
fgets(c2, _SIZE_, stdin);
ans = c2[0]-c1[0];
printf("%d\n", ans >= 0 ? ans : ans+26);
}
return 0;
}
就AC,
難道char c1[1000]會裝不下剛好1000個字元嗎?(位置從0...999)
你的測資長度至少1001
非常抱歉,題目描述有問題。
已經更正為長度小於等於 1000 大於 0 且只由大寫英文字母構成。
將您的代碼的 buffer 長度放寬即可通過,感謝回報。
我如果送出
#include
#define _SIZE_ 1000
int main() {
char c1[_SIZE_], c2[_SIZE_];
int ans;
while(fgets(c1, _SIZE_, stdin)){
fgets(c2, _SIZE_, stdin);
ans = c2[0]-c1[0];
printf("%d\n", ans >= 0 ? ans : ans+26);
}
return 0;
}
會在161行 WA
------------------
改成
#include
#define _SIZE_ 1024
int main() {
char c1[_SIZE_], c2[_SIZE_];
int ans;
while(fgets(c1, _SIZE_, stdin)){
fgets(c2, _SIZE_, stdin);
ans = c2[0]-c1[0];
printf("%d\n", ans >= 0 ? ans : ans+26);
}
return 0;
}
就AC,
難道char c1[1000]會裝不下剛好1000個字元嗎?(位置從0...999)
你的測資長度至少1001
所以字元陣列至少要1002
沒錯,在 C/C++ 中,字元陣列的讀入會補上 '\0' 字元作為結束符號。
因此藉由函數一次讀入 n 個字元,則佔有記憶體空間為 n+1 個。
倘若採用單一字元的讀入方法,則不會有這個問題。
沒錯,在 C/C++ 中,字元陣列的讀入會補上 '\0' 字元作為結束符號。
因此藉由函數一次讀入 n 個字元,則佔有記憶體空間為 n+1 個。
倘若採用單一字元的讀入方法,則不會有這個問題。
因此,使用 fgets 要宣告 1002 個以上,用 scanf 和 gets 宣告要 1001 個以上。