题目


数据:
IN AX,3
IN BX,5
MUL AX,BX
IN CX,2
ADD CX,AX
IN BX,6
DIV CX,BX
OUT CX
答案 2
思路
就分类讨论呗。。。用一下substr函数分离操作然后判断,然后switch来对每个情况进行分析即可
然后用find来找空格和逗号
注意一下IN的时候的负号处理即可
代码
#include<iostream>
using namespace std;
string opera[] = {"IN","MOV","ADD","SUB","MUL","DIV","OUT"};
int main()
{
long long ABCD[10];
for(int i = 0; i < 10; i++)
ABCD[i] = 0;
string s;
while(getline(cin,s))
{
int len = s.length();
int space = s.find(' ');
string name = s.substr(0,space);
int o;
for(int i = 0; i < 7; i++)
{
if(name == opera[i])
o = i;
}
int loc;
int loc2;
int flag = 0;
switch (o)
{
case 0:
loc = s[space + 1] - 'A';
space = s.find(',');
ABCD[loc] = 0;
while(space < len-1)
{
if(s[space+1] == '-')
{
flag = 1;
space++;continue;
}
ABCD[loc] *= 10;
ABCD[loc] += s[++space] - '0';
}
if(flag)
ABCD[loc]*=-1;
//cout << ABCD[loc];
break;
case 1:
loc = s[space + 1] - 'A';
space = s.find(',');
loc2 = s[space + 1] - 'A';
ABCD[loc] = ABCD[loc2];
break;
case 2:
loc = s[space + 1] - 'A';
space = s.find(',');
loc2 = s[space + 1] - 'A';
ABCD[loc] += ABCD[loc2];
break;
case 3:
loc = s[space + 1] - 'A';
space = s.find(',');
loc2 = s[space + 1] - 'A';
ABCD[loc] -= ABCD[loc2];
break;
case 4:
loc = s[space + 1] - 'A';
space = s.find(',');
loc2 = s[space + 1] - 'A';
ABCD[loc] *= ABCD[loc2];
break;
case 5:
loc = s[space + 1] - 'A';
space = s.find(',');
loc2 = s[space + 1] - 'A';
ABCD[loc] /= ABCD[loc2];
break;
case 6:
loc = s[space + 1] - 'A';
cout << ABCD[loc]<<endl;
break;
default:
break;
}
}
}
该博客介绍了一个C++程序,它读取类似汇编的语言指令,如`INAX,3`、`MULAX,BX`等,并根据指令进行计算。程序通过查找操作符并使用switch-case结构来执行相应的操作,例如加法、减法、乘法、除法等。最终,程序将计算结果输出。这个代码段展示了如何处理简单的计算指令并实现基本的计算逻辑。
2万+

被折叠的 条评论
为什么被折叠?



