输入
第一行: N 表示要计算的表达式个数 (1≤ N ≤ 10)
接下来有N行, 每行是一个字符串,表示待求值的表达式
(表达式中不会有多余的空格,每行不超过300个字符,表达式中出现的十进制数都不
超过1000。)
输出
输出有N行,每一行对应一个表达式的值。
样例输入
3
add(1,2)
max(1,999)
add(min(1,1000),add(100,99))
样例输出
3
999
200
%n是输入格式化控制字符,用在scanf或类似的sscanf、fscanf等函数中,意思是把刚刚接收的数据的“字符个数”赋给对应的变量。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std;
int start;
char s[305];
int val()
{
int n,v;
switch(s[start]) //对str字符串进行逐字符分析
{
case'm':start+=3;if(s[start-2]=='i') return min(val(),val());else return max(val(),val());
case'a':start+=3;return val()+val();
case'(':
case')':
case',':start++;return val();
default:sscanf(s+start,"%d%n",&v,&n); //从字符串读取格式化输入
start+=n;
return v;
}
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%s",&s);
start=0;
printf("%d\n",val());
}
return 0;
}