所谓的每个未知数有一个系数,就是像这样吧a+2b+3c+4d+5e之类的吧,因此程序应该只要实现乘法和加法既可。下面程序就可以实现任意数目的加法和乘法混合运算,应该合你的题意。以下程序没有对错误的输入做判断,因此输入时要严格按照格式来输入,该程序可以测试任意多位,和在111位数之间的+和乘,当然还要做更大的计算,可以把数组改得更大既可,比如你可以输入1+2*2*2+2+3+2*3*4*5+2*2来测试结果是否正确。而且本程序可以计算任意位数长的加法和乘法计算,比如你可以使用1+1*1*1*1*1*1*1*1*2+3,来测试计算结果void main(){int a[111]={0},m[111]={0};//a用于接收输入的数字,m用于计算*之后的结果char b[111]; //用于接收+和*字符。int i=0,j=0,k=0;//三个计数器int s=0;//计算结果存于此数。 while(1) //此循环用于接收输入的数字和字符。{scanf("%d",&a[i++]);//数组a接收数字,因为整型数组a不接收字符,所以把字符留给后面的字符数组b来接收。scanf("%c",&b[j++]);//数组b接收字符if(b[j-1]=='\n') break;//如果数组b接收到回车字符,则表示输入完毕}int n=0;//好像没有用到这个变量。for(int j=0;j<i;j++)//此循环用于做乘法和连乘运算{if(b[j]=='*'){m[k]=a[j]*a[j+1];a[j]=0;a[j+1]=0;k++;//如果b[j]为乘法,则先计算乘法,也就是乘法的两个数是a[j]和a[j+1]while(1){ //以下循环用于做连乘if(b[j+1]=='*'){--k;m[k]=m[k]*a[j+2]; a[j+2]=0;k++;j++;}//这个计算比较复杂,自已想想,是用于计算连乘的。else break;}}else if(b[j+1]=='\n')break;}for(int j=0;j<i;j++)//此运算用于做加法s=s+a[j]+m[j];printf("%d\n",s);system("pause");}
|