void print(const char a[], int size) {
for (int i = size; i > 0; i--)
cout << a[i-1];
}
int main() {
char a[50];
int i = 0;
while (getchar() != '\n') { // 第一次調用消耗了第一個字符
a[i] = getchar(); // 第二次調用讀取第二個字符,導致漏讀
i++;
}
print(a, sizeof(a)); // sizeof(a) 恆為 50,非實際字符串長度
}
getchar() != '\n' 消耗字符,循環體內再次 getchar() 導致跳過奇數位字符。sizeof(a) 返回數組總字節數(50),而非有效字符長度,應用 strlen(a)。void main() 不符合 C++ 標準,必須用 int main() 並返回 0。#include <iostream>
#include <cstring>
using namespace std;
void print(const char a[], int len) {
for (int i = len - 1; i >= 0; i--)
cout << a[i];
cout << endl;
}
int main() {
char a[50];
cout << "請輸入字符串:";
cin >> a; // 自動讀取至空白字符,簡潔安全
print(a, strlen(a)); // 實際長度
return 0;
}
cin.getline(a, 50)。std::string + reverse 算法:string s; getline(cin, s); reverse(s.begin(), s.end()); cout << s;避開這些新手坑,寫出的 C++ 代碼才既正確又專業。