自己练习时编的一个混合运算的小程序,运行时总是不对,各位帮忙看看
程序代码:
#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) ; } } } }