1 条题解
-
1
#include<cstdio> #include<cstring> using namespace std; int main(){ char f[100]; //以字符数组的形式输入 scanf("%s", f); int k=0, b=0; //kx+b=0 bool is1=1, is2=1, is3=0; //is1 =0:负数 =1:正数 is2 =0:k =1:b is3 =0:等号左侧 =1:等号右侧 int n=0, mode=0; //n:存储数字 mode =0:数字首位 =1:加法 =2:减法 char x; //x:存储未知数 for(int i=0; i<strlen(f); i++){ if(f[i]=='-' && !n) is1 = 0; else if(f[i] == '+') mode = 1; else if(f[i] == '-') mode = 2; else if(f[i] == '=') mode = 1; else if(f[i]>='0' && f[i]<='9'){ n *= 10; n += f[i]-'0'; } else{ is2 = 0; x = f[i]; if(!n) n = 1; } if(mode == 1){ if(is2){ if(is3){ if(is1) b -= n; else b += n; } else{ if(is1) b += n; else b -= n; } } else{ if(is3){ if(is1) k -= n; else k += n; } else{ if(is1) k += n; else k -= n; } } is1 = 1; is2 = 1; n = 0; mode = 0; } else if(mode == 2){ if(is2){ if(is3){ if(is1) b -= n; else b += n; } else{ if(is1) b += n; else b -= n; } } else{ if(is3){ if(is1) k -= n; else k += n; } else{ if(is1) k += n; else k -= n; } } is1 = 0; is2 = 1; n = 0; mode = 0; } else ; if(f[i] == '=') is3 = 1; } if(is2){ if(is3){ if(is1) b -= n; else b += n; } else{ if(is1) b += n; else b -= n; } } else{ if(is3){ if(is1) k -= n; else k += n; } else{ if(is1) k += n; else k -= n; } } double result=1.0*(-b)/k; if(result == 0) result = 0; //防止 result==0 时输出 -0.000 的情况(测试数据2) printf("%c=%.3lf", x, result); //输出 return 0; }
- 1
信息
- ID
- 101
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 7
- 标签
- 递交数
- 30
- 已通过
- 8
- 上传者