NOIP 2000 计算器的改良 解题报告
简单的模拟吧,大家都尝试尝试~~不太难,代码:
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> char str[101]; char c; char *getval(char *str, int *i) { int t = 0, m = 0; if(str[0] == '-'){ m = 1; str++; }else if(str[0] == '+'){ str++; } while(isdigit(*str)){ t *= 10; t += *str - '0'; str++; } if(m){ t *= -1; } *i = t; return str; } void srch(char *str, int *n, int *x, int l) { int i; do{ str = getval(str, &i); if(isalpha(str[0])){ c = str[0]; str++; *x += l * i; }else{ *n += l * i; } }while(*str != '\0'); } int main(int argc, char **argv) { int n = 0, x = 0; char *p; scanf("%s", str); p = strchr(str, '='); *p = '\0'; srch(str, &n, &x, 1); srch(p + 1, &n, &x, -1); printf("%c=%.3lf\n", c, (double)-n/x); return 0; }