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

C++ 12 小時制轉 24 小時制:scanf 格式字符串與參數傳遞修正

     編輯:程式設計綜合問答

原代碼錯誤

void input(int &hours24, int &minutes) {
    cin >> hours24 >> ":" >> minutes; // 錯誤:":" 無法直接讀入 int
}

cin 遇到非數字字符會進入失敗狀態,需讀取字符變量跳過分隔符。

修正版

#include <iostream>
using namespace std;

void input(int &hours, int &minutes) {
    char colon;
    cin >> hours >> colon >> minutes; // 讀取 ':' 到 colon 變量
}

void convert(int &hours, char &ampm) {
    if (hours < 12) ampm = 'A';
    else {
        hours -= 12;
        ampm = 'P';
    }
}

void output(int hours, int minutes, char ampm) {
    cout << hours << ':' << minutes << ampm << endl;
}

int main() {
    int h, m; char ap;
    input(h, m);
    convert(h, ap);
    output(h, m, ap);
    return 0;
}

注意事項

  • 輸入格式必須為 HH:MM(如 13:30),否則需增加錯誤處理。
  • 12:00 AM → 0:00,12:00 PM → 12:00,邏輯已覆蓋。
  • main 返回 int,符合 C++ 標準。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved