社区讨论
【P1957 口算练习题】RE 0分
P1957口算练习题参与者 3已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @loci9yie
- 此快照首次捕获于
- 2023/10/30 14:15 2 年前
- 此快照最后确认于
- 2023/11/05 01:38 2 年前
在线下运行时并没有报错,提交上去就RuntimError了,为什么啊?
CPP#include <iostream>
#include <cstdio>
using namespace std;
char a[1100][1100] = {0};
int main()
{
int n;
cin >> n;
cin.get(); //删除缓冲区中cin剩下下的'\n'
int tmp1 = 0, tmp2 = 0, tmp3 = 0; //运算数
char a2 = 0; //存储运算符
for (int i = 0; i < n; i++)
{
cin.getline(a[i], 110); ///按行输入
//读入运算符
int j = 2;
if ('a' <= a[i][0] && a[i][0] <= 'c' )
{
a2 = a[i][0];
j = 2;
}
else
{
j = 0;
}
//读入运算数
tmp1 = 0, tmp2 = 0;
while (a[i][j] < '0' || a[i][j] > '9')
j++;
for (; a[i][j] != ' ' && a[i][j] != 0; j++)
{
tmp1 *= 10;
tmp1 += a[i][j] - '0';
}
while (a[i][j] < '0' || a[i][j] > '9')
j++;
for (; a[i][j] != ' ' && a[i][j] != 0; j++)
{
tmp2 *= 10;
tmp2 += a[i][j] - '0';
}
//计算
switch (a2)
{
case 'a':
tmp3 = tmp1 + tmp2;
printf("%d+%d=%d\n", tmp1, tmp2, tmp3);
break;
case 'b':
tmp3 = tmp1 - tmp2;
printf("%d-%d=%d\n", tmp1, tmp2, tmp3);
break;
case 'c':
tmp3 = tmp1 * tmp2;
printf("%d*%d=%d\n", tmp1, tmp2, tmp3);
break;
}
//计算运算式的总长度
int cnt = 2;
if (tmp3 <= 0)//
cnt++;
while (tmp1 != 0)
{
tmp1 /= 10;
cnt++;
}
while (tmp2 != 0)
{
tmp2 /= 10;
cnt++;
}
while (tmp3 != 0)
{
tmp3 /= 10;
cnt++;
}
cout << cnt << endl;
}
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...