求大神 把下面的一点C++代码改成C 好像麻烦好多啊
#include <iostream>#include <string>
using namespace std;
int number=0;
string sss[5000];
float cal(float a,float b,int p)
{
switch(p)
{
case 1:return a+b;
case 2:return a-b;
case 3:return a*b;
case 4:return a/b;
case 5:return b-a;
case 6:return b/a;
}
}
string link(string a,string b,int p)
{
string st=a;
switch(p)
{
case 1:st+=("+"+b);break;
case 2:st+=("-"+b);break;
case 3:st+=("*"+b);break;
case 4:st+=("/"+b);break;
case 5:st=b+"-"+st;break;
case 6:st=b+"/"+st;break;
}
st="("+st+")";
return st;
}
void putout1(string c[],int p[])
{
string st;
st=link(c[1],c[2],p[1]);
st=link(st,c[3],p[2]);
st=link(st,c[4],p[3]);
st=st.erase(0,1);
st=st.erase(st.length()-1,1);
number++;
sss[number]=st;
}
void putout2(string c[],int p[])
{
string st1,st2,st;
st1=link(c[1],c[2],p[1]);
st2=link(c[3],c[4],p[3]);
st=link(st1,st2,p[2]);
st=st.erase(0,1);
st=st.erase(st.length()-1,1);
number++;
sss[number]=st;
}
void suan(float a[],string c[])
{
int p[4];int i;float sum,sum1,sum2;
for(p[1]=1;p[1]<=6;p[1]++)
for(p[2]=1;p[2]<=6;p[2]++)
for(p[3]=1;p[3]<=6;p[3]++)
{
sum=cal(a[1],a[2],p[1]);
sum=cal(sum,a[3],p[2]);
sum=cal(sum,a[4],p[3]);
if((sum-24>=0&&sum-24<1e-5)||(sum-24<=0&&sum-24>-1e-5)) putout1(c,p);
sum1=cal(a[1],a[2],p[1]);
sum2=cal(a[3],a[4],p[3]);
sum=cal(sum1,sum2,p[2]);
if((sum-24>=0&&sum-24<1e-5)||(sum-24<=0&&sum-24>-1e-5)) putout2(c,p);
}
}
void disorder(float a[],string c[])
{
float b[5];
string d[5];
int i,j,k,l;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
{
if(j==i)continue;
for(k=1;k<=4;k++)
{
if(k==i||k==j)continue;
for(l=1;l<=4;l++)
{
if(l==i||l==j||l==k)continue;
b[1]=a[i];b[2]=a[j];b[3]=a[k];b[4]=a[l];
d[1]=c[i];d[2]=c[j];d[3]=c[k];d[4]=c[l];
suan(b,d);
}
}
}
}
int main()
{
cout<<"请输入四个数字";
float a[5];
int i,j;
string c[5];
for(i=1;i<=4;i++){cin>>a[i];if(a[i]==10)c[i]="10" ;else c[i]=int(a[i])+'0';}
disorder(a,c);
int v=1,u=0;
for(i=1;i<=number;i++)
{v=1;for(j=1;j<i;j++)if(sss[i]==sss[j])v=0;
if(v==1){cout<<sss[i]<<endl;u=1;}}
if(u==0)cout<<"无解"<<endl;
system("pause");
return 0;
}