输出错了,根本不知道哪错了

P1957 口算练习题

@[xsj4zyc](/user/778772) 发了题目
by xiangzhenze611 @ 2024-02-21 20:35:47


``` #include<iostream> #include<string> using namespace std; string s; int n, h, a, b, sum,del ,ret; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { cin >> s; a = 0; b = 0; sum = 0; if (s[0] >= 'a' && s[0] <= 'z') { if (s[0] == 'a')h = 1; if (s[0] == 'b')h = 2; if (s[0] == 'c')h = 3; del = 1; } if(del)cin >> s; for (int i = 0;; i++) { if (s[i] < '0' || s[i]>'9')break; a = a * 10 + (s[i] - '0'); sum++; } cin >> s; for (int i = 0;; i++) { if (s[i] < '0' || s[i]>'9')break; b = b * 10 + (s[i] - '0'); sum++; } if (h == 1)printf("%d+%d=%d", a, b, ret=a + b); if (h == 2)printf("%d-%d=%d", a, b, ret=a - b); if (h == 3)printf("%d*%d=%d", a, b, ret=a * b); if (ret <= 0)sum++; while (ret) { ret /= 10; sum++; } printf("\n%d\n", sum + 2); del = 0; } return 0; } ```
by jiejieya @ 2024-02-21 20:42:18


# 几个错误的地方 - ###### 1.输入的错误,输入cin>>s的时候不是输入一整行 - ###### 2.判断s是否完毕 ``` for (int i = 0;; i++) { if (s[i] < '0' || s[i]>'9')break; a = a * 10 + (s[i] - '0'); sum++; } ``` - ###### 如果break放在在后面你把空格是不是也会算到a里面 - ###### 3.长度计算错误,结果长度没有计算,答案是负数的情况多的一个减号没有计算
by jiejieya @ 2024-02-21 20:46:02


|