#include <bits/stdc++.h>
using namespace std;
int num, f = 1, now = 1, l, r;
char c, x;
int main() {
while (cin >> c) {
if (c == '=') {
r += f * now * num;
f = 1;
num = 0;
now = -1;
continue;
}
if (c == '+') {
r += f * now * num;
num = 0;
f = 1;
continue;
}
if (c == '-') {
r += f * now * num;
num = 0;
f = -1;
continue;
}
if ('a' <= c && c <= 'z') {
x = c;
if (num == 0) num = 1;
l += f * now * num;
num = 0;
f = 0;
continue;
}
while ('0' <= c && c <= '9') { // *问题在这里
num = num * 10 + c - '0';
cin >> c;
}
cin.unget();// *
}
r += f * now * num;
double ans = 1.0 * -r / l;
if (ans == 0.000) ans = 0;
printf("%c=%.3lf", x, ans);
return 0;
}
但是非常神奇,只要我们小手一动,将我打了“*”标记的那一段改成:
if ('0' <= c && c <= '9') {
num = num * 10 + c - '0';
}
他就会AC.
SO我有两个问题:
Q1 :为什么打“*”的这一段会死循环
Q2 :如果我要改打“*”的这一段要怎么改