• 表达式求值


    表达式求值

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描写叙述

    Dr.Kong设计的机器人卡多掌握了加减法运算以后,近期又学会了一些简单的函数求值,比方,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。

    如果表达式能够简单定义为:

    1. 一个正的十进制数 x 是一个表达式。

    2. 假设 和  表达式,则 函数min(x,y )也是表达式,其值为x,y 中的最小数。

    3. 假设 和  表达式,则 函数max(x,y )也是表达式,其值为x,y 中的最大数。

    4.假设 和  表达式,则 函数add(x,y )也是表达式,其值为x,y 之和。

    比如。 表达式 max(add(1,2),7) 的值为 7。

    请你编敲代码。对于给定的一组表达式,帮助 Dr.Kong 算出正确答案。以便校对卡多计算的正误

    输入
    第一行: 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
    
    
    AC代码
    #include<stdio.h>
    #include<string.h>
    int main(void)
    {
    	int len,zhi;
    	int N;
    	scanf("%d",&N);
    	while(N--)
    	{
    		int sum,i=0,j=0,k=0;
    		int num[200];
    	    int s[200];
    	    char a[300];
    		scanf("%s",a);
    	    len=strlen(a);
    	    while(i<len)
    		{
    			if(a[i]=='m')
    			{
    				if(a[i+1]=='i')
    					num[j++]=1;
    				if(a[i+1]=='a')
    					num[j++]=2;
    				    i=i+4;
    			}
    			else if(a[i]=='a')
    			{
    				num[j++]=3;
    				i=i+4;
    			}
    			else if(a[i]>='0'&&a[i]<='9')
    			{
    				sum=0;
    				while(a[i]>='0'&&a[i]<='9')
    				{
    					sum=sum*10+a[i]-'0';
    					i++;
    				}
    				s[k++]=sum;
    			}
    			else if(a[i]==')')
    			{
    				zhi=num[--j];
    				k--;
    				if(zhi==1)
    					s[k-1]=s[k]>s[k-1]?s[k-1]:s[k];
    				if(zhi==2)
    					s[k-1]=s[k]>s[k-1]?

    s[k]:s[k-1]; if(zhi==3) s[k-1]=s[k]+s[k-1];    i++; } else i++; } printf("%d ",s[0]); } return 0; }

  • 相关阅读:
    .net中实现运行时从字符串动态创建对象
    C# 用 VB.net 函數庫 實現全角與半角轉換
    實現.net 加載插件方式
    VS2008下載
    Lotus Notes Send EMail from VB or VBA
    用C#写vs插件中的一些Tip
    SQL2005中异常处理消息框可直接使用
    C#路径/文件/目录/I/O常见操作汇总
    利用.net反射动态调用指定程序集的中的方法
    说说今年的计划
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6850452.html
Copyright © 2020-2023  润新知