首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 最簡單的計算機:模擬六指令雙內存三寄存器機器

     編輯:關於C++

題目規範

機器 PpMm 擁有:
內存 M1, M2(初始值由輸入給定)
寄存器 R1, R2, R3(初始 0)
六條指令:

指令操作
AR1 = M1
BR2 = M2
CM1 = R3
DM2 = R3
ER3 = R1 + R2
FR3 = R1 - R2

輸入多組:每組兩行,第一行 M1 M2,第二行指令串(長 ≤ 200,僅含 A-F)。輸出最終 M1,M2(逗號分隔)。

直接模擬

狀態變量:m1, m2, r1, r2, r3。遍歷指令串 switch 執行對應操作。中間結果保證在 32 位有符號範圍內,int 足夠。

參考代碼

#include 
#include 
int main() {
    int m1, m2; char cmd[205];
    while (scanf("%d %d %s", &m1, &m2, cmd) == 3) {
        int r1 = 0, r2 = 0, r3 = 0;
        for (char *p = cmd; *p; ++p) {
            switch (*p) {
                case 'A': r1 = m1; break;
                case 'B': r2 = m2; break;
                case 'C': m1 = r3; break;
                case 'D': m2 = r3; break;
                case 'E': r3 = r1 + r2; break;
                case 'F': r3 = r1 - r2; break;
            }
        }
        printf("%d,%d\n", m1, m2);
    }
    return 0;
}

樣例追蹤

輸入:100 288 ABECED
A: R1=100
B: R2=288
E: R3=388
C: M1=388
E: R3=388 (R1,R2 未變)
D: M2=388
輸出:388,388 ✓

總結

純模擬題,無算法難度。關鍵在於:準確理解指令語義、正確初始化寄存器、處理多組輸入至 EOF。代碼極短,適合作為狀態機模擬的入門練習。

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