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;
}
浙公网安备 33010602011771号