社区讨论
为什么我每次都是0???
P1022[NOIP 2000 普及组] 计算器的改良参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mi6tsgfi
- 此快照首次捕获于
- 2025/11/20 10:42 4 个月前
- 此快照最后确认于
- 2025/11/20 10:42 4 个月前
样例过了,第一个点下载了,在c++和IDE中输出都和下载一样,
但还是0分。谁能帮我看一下,谢了。
CPP#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
char a[55],b[55],k;
float z,c;
int p,x;
int main()
{
int i=1;
while (1)
{
scanf("%c",&a[i]);
if (a[i]=='=')
break;
i++;
}
gets(b+1);
int al=strlen(a+1);
int bl=strlen(b+1);
for (int i=al-1;i>=1;)
{
int p=2;
if (a[i]>='a'&&a[i]<='z')
{
p=1;
k=a[i];
i--;
}
int f=0;
while (a[i]!='+'&&a[i]!='-'&&i>=1)
{
x=(a[i]-'0')*pow(10,f)+x;
i--;
f++;
}
if (p==1)
{
if (a[i]=='-')
z=z+x;
else
z=z-x;
i--;
x=0;
}
if (p==2)
{
if (a[i]=='-')
c=c-x;
else
c=c+x;
i--;
x=0;
}
}
for (int i=bl;i>=1;)
{
int p=2;
if (b[i]>='a'&&b[i]<='z')
{
k=b[i];
i--;
p=1;
}
int f=0;
while (b[i]!='+'&&b[i]!='-'&&i>=1)
{
x=(b[i]-'0')*pow(10,f)+x;
i--;
f++;
}
if (p==1)
{
if (b[i]=='-')
z=z-x;
else
z=z+x;
i--;
x=0;
}
if (p==2)
{
if (b[i]=='-')
c=c+x;
else
c=c-x;
i--;
x=0;
}
}
float ans=c/z;
if (ans==-0)
printf("%c=%.3f",k,0);
else
printf("%c=%.3f",k,ans);
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...