有人能帮我修改一下这个程序吗?C++。

2025-05-13 07:43:05
推荐回答(1个)
回答(1):

加个循环应该自己就会的啊

int num[5]={0};

char symbol[5];

int n=0;

int chaozuo2(int a[5],char zhan2[4]){

int i,j,k;

k=a[1];

for(i=1;i<=3;i++){

//最后一句是重点

switch(zhan2[i]){

case '+':k=k+a[i+1];break;

case '-':k=k-a[i+1];break;

case '*':k=k*a[i+1];break;

case '/':k=k/a[i+1];break;

}

}

if(k==24){

n++;

printf("((%d%c%d)%c%d)%c%d\n",a[1],zhan2[1],a[2],zhan2[2],a[3],zhan2[3],a[4]);

}

return 0;

}

int chaozuo1(int a[5]){

int i,j,t;

int b[9];

char zhan1[4];

for(i=1;i<=4;i++)

for(j=1;j<=4;j++){

for(t=1;t<=4;t++){

zhan1[1]=symbol[i];

zhan1[2]=symbol[j];

zhan1[3]=symbol[t];

chaozuo2(a,zhan1);

}

}

b[1]=(a[1]*a[2])+(a[3]*a[4]);

if(b[1]==24){n++;printf("(%d*%d)+(%d*%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]*a[2])-(a[3]*a[4]);

if(b[2]==24){n++;printf("(%d*%d)-(%d*%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]/a[2])+(a[3]/a[4]);

if(b[3]==24){n++;printf("(%d/%d)+(%d/%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]/a[2])-(a[3]/a[4]);

if(b[4]==24){n++;printf("(%d/%d)-(%d/%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]*a[2])+(a[3]/a[4]);

if(b[5]==24){n++;printf("(%d*%d)+(%d/%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]*a[2])-(a[3]/a[4]);

if(b[6]==24){n++;printf("(%d*%d)-(%d/%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]/a[2])+(a[3]*a[4]);

if(b[7]==24){n++;printf("(%d/%d)+(%d*%d)\n",a[1],a[2],a[3],a[4]);}

b[1]=(a[1]/a[2])-(a[3]*a[4]);

if(b[8]==24){n++;printf("(%d/%d)-(%d*%d)\n",a[1],a[2],a[3],a[4]);}

return 0;

}

int main(int argc, char *argv[])

{ int i,j,t,k;

int a[5];

symbol[1]='+';symbol[2]='-';

symbol[3]='*';symbol[4]='/';

for(i=1;i<=4;i++)

cin>>num[i];

for(i=1;i<=4;i++)

for(j=1;j<=4;j++){

if(j==i)

continue;

for(t=1;t<=4;t++){

if(t==i||t==j)

continue;

for(k=1;k<=4;k++){

if(k==i||k==j||k==t)

continue;

a[1]=num[i];

a[2]=num[j];

a[3]=num[t];

a[4]=num[k];

chaozuo1(a);

}

}

}

while(1);//////////////////////////这里

return 0;

}