C语言的问题~!急求解!!

来源:百度知道 编辑:UC知道 时间:2024/06/18 05:30:49
输入任意四个整数(0到10),运算符只有加减乘除,好友括号,每个数只能且只能用一次。要求判断这些达的结果中是否有24,如果有请输出计算表达式!例如:输入4,6,2,1 输出4*6*1*1=24(允许有括号)
各位哥哥姐姐!解决了,观世音都会保佑你一生平安发大财!!!!!
谢谢各位的关注
但那个程序有错啊!!
运行不出来
还望改进一下

下面是全部的代码,这个算法是首先把所有可能的组合都算一遍,然后找出结果为24的组合。还有如果没有输出,那表示没有那种组合。你输入其他数字试一试
#include "stdio.h"
int ys(int x,int y,int z);
int ys(int z);
void main(){ //主函数开始
int i,j,k,m,n,s,sum,r[4];
for(i=0;i<4;i++){ //输入四个数,给r[i]
scanf("%d",&r[i]);
}
for(i=0;i<4;i++){ //六重循环,选遍所有的组合
for(j=0;j<4;j++){
for(k=0;k<4;k++){if(k==i || (j==3 && r[k]==0))break;//消除被除数为0,和数字重复的组合
for(m=0;m<4;m++){
for(n=0;n<4;n++){if(n==i|| n==k ||(m==3 && r[n]==0))break; //消除被除数为0,和数字重复的组合
for(s=0;s<4;s++){if((s==3 && r[6-i-k-n]==0))break; //消除被除数为0,和数字重复的组合
sum==0; //以下四句为获得组合之后计算结果
sum+=ys(r[i],j,r[k]);
sum=ys(sum,m,r[n]);
sum=ys(sum,s,r[6-i-k-n]);
if(sum==24){ //判断结果是否为24,并输出表达式
printf("((%d",r[i]);fh(j);printf("%d)",r[k]);
fh(m);printf("%d)",r[n]);fh(s);
printf("%d)\n&quo