社区讨论
题解中用==的特判0好像不严谨
P1022[NOIP 2000 普及组] 计算器的改良参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lodhrfhc
- 此快照首次捕获于
- 2023/10/31 06:48 2 年前
- 此快照最后确认于
- 2023/11/06 22:02 2 年前
因为只需保留三位小数,像-0.0001也该输出0.000,此外浮点数本身也有误差
不知为什么我用==就WA了(之前也能AC)
CPP#include <cstdio>
#include <cstdlib>
#include <cctype>
using namespace std;
int main()
{
char buf[100];
gets(buf);
int k = 0, b = 0, sign = 1;
char var;
char * p = buf;
while (*p)
{
if (isalnum(*p) || *p == '-' || *p == '+')
{
char * q;
int t = strtol(p, &q, 10);
if (p == q)
{
var = (isalpha(*p) ? *p : *(p + 1));
k += (*p++ == '-' ? -1 : 1) * sign;
}
else
{
if (isalpha(*q))
var = *q, k += t * sign, p = q + 1;
else
b += t * sign, p = q;
}
}
else if (*p == '=')
sign = -1, p++;
else
p++;
}
double ans = - 1.0 * b / k;
printf("%c=%.3f", var, ans ? ans : 0.0);
return 0;
}
输出的那行改成这样才AC
CPPprintf("%c=%.3f", var, fabs(ans) >= 0.0005 ? ans : 0.0);
回复
共 1 条回复,欢迎继续交流。
正在加载回复...