| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7204 人关注过本帖
标题:输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须 ...
只看楼主 加入收藏
wzymmzs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须用一次。要求判断这些表达的结果中是否有24。如果有,输出计算表达式:如输入4,6,1
输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且必须用一次。要求判断这些表达的结果中是否有24。如果有,输出计算表达式:如输入4,6,1,1 输出 4*6*1*1 =24 (允许有括号)。
#include<stdio.h>
#define n 4
#define m 4
double sumation(double a1, double a2, int o);
int main()
{double sum2,sum3,sum4;
 int i1,i2,i3,i4,j1,j2,j3,a[n];                                 //a[]为输入的整数
 char op[m]={'+','-','*','/'};                            //op[]为运算符号
 printf("4 integers (0-10):  ");
 scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);
 printf("\n");
 for(i1=0;i1<n;i1++)
    {for(i2=0;i2<n;i2++)
        if(i2!=i1)
          {for(j1=0;j1<m;j1++)
              {sum2=sumation(a[i1],a[i2],j1);
               for(i3=0;i3<n;i3++)
                  if(i3!=i1&&i3!=i2)
                    {for(j2=0;j2<m;j2++)
                        {sum3=sumation(sum2,a[i3],j2);
                         for(i4=0;i4<n;i4++)
                            if(i4!=i1&&i4!=i2&&i4!=i3)
                              {for(j3=0;j3<m;j3++)
                                  {sum4=sumation(sum3,a[i4],j3);
                                   if(sum4==24.0)
                                   {if((op[j1]=='+'||op[j1]=='-')&&(op[j2]=='*'||op[j2]=='/'))
                                        printf("(%d %c %d) %c %d %c %d = 24\n",a[i1],op[j1],a[i2],op[j2],a[i3],op[j3],a[i4]);
                                      else
                                      if((op[j2]=='+'||op[j2]=='-')&&(op[j3]=='*'||op[j3]=='/'))
                                          printf("(%d %c %d %c %d) %c %d = 24\n",a[i1],op[j1],a[i2],op[j2],a[i3],op[j3],a[i4]);
                                        else
                                          printf("%d %c %d %c %d %c %d = 24\n",a[i1],op[j1],a[i2],op[j2],a[i3],op[j3],a[i4]);
                                   }
                                  }
                              }
                         }
                    }
               }
           }
    }
    return 0;
}
double sumation(double a1, double a2, int o)
{double sum;
 if(o==0)
   sum=a1+a2;
 else
   if(o==1)
     sum=a1-a2;
   else
     if(o==2)
       sum=a1*a2;
     else
       {if(a2==0.0)                                 //如果除以零,设置结果为一大数
          sum=100000.0;
        else
          sum=a1/a2;
       }
 return sum;
}
这是网上看到的答案,然后试了一下答案很完整,但是重复性太厉害,请问大神们怎么改?
搜索更多相关主题的帖子: double include 表达式 
2012-11-28 15:31
wzymmzs
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-28
收藏
得分:0 
怎么没有人啊!
2012-11-28 15:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
路过  貌似24点要用二啥树的来做

DO IT YOURSELF !
2012-11-28 16:05
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:7 
只能说太强大了....

I have not failed completely
2012-12-01 21:48
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
看了半天终于看懂了
个人认为这已经相当巧妙了,想要简化难度不小啊
本人等级还没过6,没觉醒开,对我来说简化基本不可能...

I have not failed completely
2012-12-01 22:29
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:7 
太强大了

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-12-02 08:34
快速回复:输入任意四个整数(0到10),运算符只有加减乘除,还有括号.每个数只能且 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028257 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved