各位大侠,这是我写的第一个程序,关于计算输入表达式的算法,有些错误不知从何小手,请各位大侠能够帮忙改一下,在此谢过了..
using System;
using System.Collections.Generic;
using System.Text;
namespace math
{
    class Program
    {
        public int i,j;
        static void Main(string[] args)
        {
             string str=Console .ReadLine ();
           
         
             
           // static string strmath(string str)
           
           // { 
                
                int len =str.Length;
               int on =1; 
              
                string[] str1 = new string[100];
              string s1;
            if (str.Substring (len-1,1)=="=")
            {
                for (int i=0;i<=len ;i++)
                {
                    s1 = str.Substring(0, 1);
            
                   if (s1=="*" || s1=="/" || s1=="%")
                      {
                       Console .WriteLine ("第一个字符只能是数字或者函数,请重新输入!");
                       Console .ReadLine ();
                       
                   }
                   if (s1=="+" || s1=="-" )
                   {
                       str[j++]=s1;
                   }
                   if (s1=="s" || s1=="c" || s1=="l" || s1=="t" || s1=="e" )
                   {
                      
                     str[j++]= sanjiao(str.Substring (i));
                  }
                 if(int.Parse (s1)<=9 && int.Parse (s1)>=0) 
               {
                  str[j++]= shuzi(str.Substring (i)); 
               }
                    if (s1=="(")
                    {
                       str[j++]=s1;
                        i++;
                        if (str.Substring (i,1)=="*" || str.Substring (i,1)=="/" || s1=="%")
                      {
                       Console .WriteLine ("第一个字符只能是数字或者函数,请重新输入!");
                       Console .ReadLine ();
                       
                   }
                   if (str.Substring (i,1)=="+" || str.Substring (i,1)=="-" )
                   {
                       str[j++]=str.Substring (i,1);
                   }
                   if (str.Substring (i,1)=="s" || str.Substring (i,1)=="c" || str.Substring (i,1)=="l" || str.Substring (i,1)=="t" || str.Substring (i,1)=="e" )
                   {
                      
                     str[j++]=sanjiao(str.Substring (i));
                  }
                 if(int.Parse (s1)<=9 &&int.Parse(s1)>=0) 
               {
                  str[j++]= shuzi(str.Substring (i)); 
                    }
            }
          }
          Console.WriteLine(exception (str[],j));
       }
    }
    static string shuzi()
{
               int p=1;
                for (i<=len;i++)
                {
                   
                    s1 = str.Substring(0, 1);
                    
                     if (on==1 && (s1=="*" || s1=="/" ||s1=="+" || s1 =="-" || s1=="%" ))
                       {
                         on--;
                         str[j++]=s1;;
                
                       }
                     if (on==0 && (str.Substring (0,1)=="s" || str.Substring (0,1)=="c" || str.Substring (0,1)=="l" || str.Substring (0,1)=="t" ))
                        { 
                         
                         Console .WriteLine ("输入格式有误,请重新输入!");
                         Console .ReadLine ();
                       }
                     if(on ==0 && (s1<=58 && s1>=48) )
                        {
                            p++;
                            str[j++]=str.Substring (0,p);
                      }
                    //str1[j]=str.Substring (0,i);
                    return  str.Substring (i);
}
}
        static string sanjiao(string str)
        {
            if (str.Substring(0, 3) == "sin" || str.Substring(0, 3) == "cos" || str.Substring(0, 3) == "ctg")
            {
                i = i + 2;
            }
            if (str.Substring(0, 4) == "sqrt")
            {
                i = i + 3;
            }
            if (str.Substring(0, 2) == "lg")
            {
                i = i + 1;
            }
            if (str.Substring(i + 1, 1) == "(")
            {
                int k = 1;
                for (int q = 0; q < len; q++)
                {
                    if (str.Substring(i, 1) == "(")
                    {
                        k = k + 1;
                    }
                    if (str.Substring(i, 1) == ")")
                    {
                        k = k - 1;
                    }
                    if (k == 0)
                    {
                        // str[j++]=str.Substring (0,q);
                        //break;
                    }
                }
                return str.Substring(i);
            }
        }
        static string exception(string[] str, int len1)
        {
            int k = 0;
            for (int t = 0;t< len1; t++)
            {
                if (str[i] == "(")
                {
                    k = k + 1;
                }
                if (str[i] == ")")
                {
                    k = k - 1;
                }
                if (k == 0)
                {
                   return exception(str, t);
                    for (int u = 0; u< t; u++)
                    {
                        if (str[u] == "*")
                        {
                            int.Parse(str[u - 1]) = int.Parse(str[u - 1]) * int.Parse(str[u]);
                        }
                        if (str[u] == "/")
                        {
                            int.Parse(str[u - 1]) = int.Parse(str[u - 1]) / int.Parse(str[u]);
                        }
                        if (str[u] == "%")
                        {
                            int.Parse(str[u - 1]) = int.Parse(str[u - 1]) % int.Parse(str[u]);
                        }
                    }
                        for (int y = 0; y< t;y++)
                        {
                            if (str[y] == "+")
                            {
                                int.Parse(str[y - 1]) = int.Parse(str[y - 1]) + int.Parse(str[y]);
                            }
                        if (str[y] == "-")
                        {
                            int.Parse(str[y - 1]) = int.Parse(str[y- 1]) - int.Parse(str[y]);
                        }
                    }
                    return Convert.ToString(str[j]);
}
            }
        }
    }
}
            
             



 
											





 
	    

 
	