题目描述
从命令行读入若干指令,执行相应计算。
指令 格式 意义 SET SET x 设置运算结果为x ADD ADD x 运算结果+x SUB SUB x 运算结果-x MUL MUL x 运算结果*x DIV DIV x 运算结果/x OUT OUT 输出运算结果并换行,结果保留2位小数
上述指令的参数x都为浮点数,且保证不会除以0。
输入格式第一行为测试样例个数n,后面接n行测试数据,每一行包含若干指令,指令间空格隔开
输出格式输出结果并换行,保留两位小数
样例输入
2 SET 2.5 MUL 2 SUB 1 OUT SET 3 DIV 3 OUT样例输出
4.00 1.00
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
int main()
{
int n;
char ch[4] = {0};
double result[10] = {0}, x = 0, tmp = 0;
int i = 0;
cin >> n;
while(i < n)
{
cin >> ch;
if((cin.get() == '\n') && (strcmp(ch, "OUT") == 0))
{
result[i] = tmp;
i++;
tmp = 0;
}
else
cin >> x;
if(strcmp(ch, "SET") == 0)
tmp = x;
else if(strcmp(ch, "ADD") == 0)
tmp += x;
else if(strcmp(ch, "SUB") == 0)
tmp -= x;
else if(strcmp(ch, "MUL") == 0)
tmp *= x;
else if(strcmp(ch, "DIV") == 0)
tmp /= x;
}
for(i = 0; i < n; i++)
cout << fixed << setprecision(2) << result[i] << endl;
return 0;
}
奇怪的是上述代码在学堂在线OJ中却通不过评定,满分3分的这一题,得分居然为0 !
经修改,按以下代码输入OJ可得 1 分:
#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
int main()
{
int n;
char ch[4] = {0};
double result[10] = {0}, x = 0, tmp = 0;
int i = 0;
cin >> n;
while(i < n)
{
cin >> ch;
if(cin.get() != '\n')
cin >> x;
if(strcmp(ch, "SET") == 0)
tmp = x;
else if(strcmp(ch, "ADD") == 0)
tmp += x;
else if(strcmp(ch, "SUB") == 0)
tmp -= x;
else if(strcmp(ch, "MUL") == 0)
tmp *= x;
else if(strcmp(ch, "DIV") == 0)
tmp /= x;
else if(strcmp(ch, "OUT") == 0)
{
result[i] = tmp;
i++;
tmp = 0;
}
}
for(i = 0; i < n; i++)
cout << fixed << setprecision(2) << result[i] << endl;
return 0;
}