blablabl @ 2023-03-22 20:46:19
下载了第一个错误样例一行一行对,感觉没问题,但是一直没过[它真的我哭死]
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string.h>
using namespace std;
int sum(int n) { //统计数字的位数
int cnt = 0;
if(n < 0) cnt ++;
while(n) {
n /= 10;
cnt ++;
}
return cnt;
}
int main() {
int n;
cin >> n;
while(n --) {
getchar();
//对每次的变量进行初始化
char stay, v[4] = {'\0', '\0', '\0', '\0'};
int a = 0, b = 0, cnt = 0, end = 0;
cin >> v;
//如果是第一个字符数字就就计算当前的字符串代表的数字
if(v[0] < 'a') {
if(v[1] == '\0') a = v[0] - '0';
else {
int l = strlen(v) - 1;
for(int i = 0; l >= 0; l --, i ++) a += (v[i] - '0') * pow(10, l);
}
cin >> b; //只需输入一个数字
v[0] = stay; //将上一题的运算符赋给当前的运算符
}
//如果是字母则输入两个数字
else cin >> a >> b;
//根据当前的运算符进行计算
if(v[0] == 'a') {
end = a + b;
printf("%d+%d=%d\n", a, b, end);
}
else if(v[0] == 'b') {
end = a - b;
printf("%d-%d=%d\n", a, b, end);
}
else if(v[0] == 'c') {
end = a * b;
printf("%d*%d=%d\n", a, b, end);
}
//存一下当前的运算符
stay = v[0];
cnt = sum(a) + sum(b) + sum(end) + 2;
cout << cnt << endl;
}
return 0;
}