Tsuroneko
Tsuroneko
2019-12-20 20:57
采纳率: 0%
浏览 385

C语言 杭电HDU1021-最简单的计算机(不明白为什么一直报错)

一个名叫是PigHeadThree的研究组织设计了一台实验用的计算机,命名为PpMm。PpMm只能执行简单的六种命令A,B,C,D,E,F;

只有二个内存M1,M2;三个寄存器R1,R2,R3。六种命令的含义如下:

命令A:将内存M1的数据装到寄存器R1中;

命令B:将内存M2的数据装到寄存器R2中;

命令C:将寄存器R3的数据装到内存M1中;

命令D:将寄存器R3的数据装到内存M2中;

命令E:将寄存器R1中的数据和寄存器R2中的数据相加,结果放到寄存器R3中;

命令F:将寄存器R1中的数据和寄存器R2中的数据相减,结果放到寄存器R3中。

你的任务是:设计一个程序模拟PpMm的运行。

Input

有若干组,每组有2行,第一行是2个整数,分别表示M1和M2中的初始内容;第二行是一串长度不超过200的由大写字母A到F组成的命令串,命令串的含义如上所述。

Output

对应每一组的输入,输出只有一行,二个整数,分别表示M1,M2的内容;其中M1和M2之间用逗号隔开。
其他说明:R1,R2,R3的初始值为0,所有中间结果都在-2^31和2^31之间。

Sample Input

100 288
ABECED
876356 321456
ABECAEDBECAF 

Sample Output

388,388
2717080,1519268 

我的代码如下:(用的是结构体)

不明白为什么我是Wrong Answer

#include <stdio.h>
#include <string.h>
struct memory
{
    int R1;
    int R2;
    int R3;
};

int main() 
{
    int M1,M2=0;
    int olen,i=0;
    char order[1000];
    struct memory s={0,0,0};
    while(scanf("%d %d",&M1,&M2)!=EOF)
    {
    scanf("%s",order);
    olen=strlen(order);
    for(i=0;i<olen;i++)
    {
        switch(order[i])
        {
        case 'A':s.R1=M1;break;
        case 'B':s.R2=M2;break;
        case 'C':M1=s.R3;break;
        case 'D':M2=s.R3;break;
        case 'E':s.R3=s.R1+s.R2;break;
        case 'F':s.R3=s.R1-s.R2;break;
        }
    }
    printf("%d,%d\n",M1,M2);
    }
    return 0;
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

相关推荐