首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 字符串逆序輸出:新手常見錯誤與規範寫法

     編輯:程式設計綜合問答

原代碼問題

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,非實際字符串長度
}

三大核心錯誤

  1. 輸入邏輯錯誤:循環條件 getchar() != '\n' 消耗字符,循環體內再次 getchar() 導致跳過奇數位字符。
  2. 長度計算錯誤:sizeof(a) 返回數組總字節數(50),而非有效字符長度,應用 strlen(a)。
  3. 主函數返回類型: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)。
  • 現代 C++ 推薦直接用 std::string + reverse 算法:
    string s; getline(cin, s); reverse(s.begin(), s.end()); cout << s;
  • 代碼風格:運算符兩側加空格、縮進統一、註釋關鍵邏輯。

避開這些新手坑,寫出的 C++ 代碼才既正確又專業。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved