| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:自己练习时编的一个混合运算的小程序,运行时总是不对,各位帮忙看看
取消只看楼主 加入收藏
wangzhao8550
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:32
专家分:139
注 册:2011-4-17
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
自己练习时编的一个混合运算的小程序,运行时总是不对,各位帮忙看看
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Chenchu(int Int[],int Long,char symbol[],int Start)  ;//声明混合运算函数
void Jiajian(int Int[],int Long,char symbol[],int Start) ;

int main()
{
  int i,shu=0,yun=0,j,m,n,N,Int[5],Long,I,J,M,k,Go ;
  char Symbol[5] ;
  for(i=0;i<10;i++)
  {
     scanf("%d",&Int[i]) ;//输入整数

     scanf("%c",&Symbol[i]) ;//输入运算符

     if(Symbol[i]=='=')//直到输入“=”,输入结束

     {break ;}

                  

  }
  Long=strlen(Symbol);//计算运算符的长度


 

  Go=Chenchu(Int,Long,Symbol,0) ;//调用混合运算函数

  printf("%d",Go) ;//输出结果


 



  system("pause") ;  

}
int Chenchu(int Int[],int Long,char symbol[],int Start )

{
    

  for(int j=Start;j<Long-1;j++)//“*”,“/”运算符优先计算

  {
     if(symbol[j]=='*')   //首先检查“*”运算符

     {
       Int[j]=Int[j]*Int[j+1] ;//“*”运算符 对应位置的整数与其后一位的整数相乘 ,将整数数组当前位置的整数替换为计算结果计算结果,并且 

       printf("%d*\n",Int[j]) ;
       for(int m=j;m<Long-2;m++) //进行完乘法运算后,从检查出的“*”运算符位置和相对应的整数位置

       {
         

          Int[m+1]=Int[m+2] ;//将已经完成计算的整数从整数数组中删除

          symbol[m]=symbol[m+1] ;//将已经完成计算的运算符和从字符数组中删除

          Long=Long-1 ;//字符数组和整数数组长度自动缩减一位

         Chenchu(Int,Long,symbol,j) ;//从当前位置重新进行检查

                      

       }

 

                     

     } 

     else if(symbol[j]=='/')
     {
       Int[j]=Int[j]/Int[j+1] ;
       printf("%d/\n",Int[j]) ;
       for(int n=j;n<Long-2;n++)
       {
        

          Int[n+1]=Int[n+2] ;
          symbol[n]=symbol[n+1] ;
          Long=Long-1 ;

          Chenchu(Int,Long,symbol,j) ;
                   

       }

    

                  

     }                                

  }
  Jiajian(Int,Long,symbol,0) ;
  return Int[0] ;
}
void Jiajian(int Int[],int Long,char symbol[],int Start)
{

  for(int J=Start;J<Long-1;J++)
  {
     if(symbol[J]=='-')
     {
       Int[J]=Int[J]-Int[J+1] ;
       printf("%d-\n",Int[J]) ;
       for(int M=J;M<Long-2;M++)
       {
        

          Int[M+1]=Int[M+2] ;
          symbol[M]=symbol[M+1] ;
          Long=Long-1 ;

         Jiajian(Int,Long,symbol,J) ;
                        

       }

 

                  

     } 

     else if(symbol[J]=='+')
     {
       Int[J]=Int[J]+Int[J+1] ;
       printf("%d+\n",Int[J]) ;
       for(int N=J;N<Long-2;N++)
       {
       

          Int[N+1]=Int[N+2] ;
          symbol[N]=symbol[N+1] ;
          Long=Long-1 ;

          Jiajian(Int,Long,symbol,J) ;
                          

       }

     

     }                                

  }


}
2011-04-25 15:58
wangzhao8550
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:32
专家分:139
注 册:2011-4-17
收藏
得分:0 
可能我写的比较冗杂,谁能写个混合运算的小程序让小弟参考一下吗?
2011-04-25 16:08
快速回复:自己练习时编的一个混合运算的小程序,运行时总是不对,各位帮忙看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043400 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved