| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3730 人关注过本帖, 1 人收藏
标题:8 个 8 的运算
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
结帖率:94.74%
收藏(1)
已结贴  问题点数:100 回复次数:30 
8 个 8 的运算
    过年了,散散分.有 8 个 8 相运算,如果运算才能使其结果为 1000 ? 用 C 语言编.

    散分 100 .

    最好是运算数和运算数的个数及结果是用输入来控制的,那样更好.

    事先声明,这不是作业题,只是过年了,和大家一起娱乐一下.

    祝大家新年快乐,学 C 愉快.



PS:运算符号及括号是利用程序自己添加上去的,而不是只输出一个算式.也就是说,这个算式是程序自己搜索、运算得到的,而不是我们自己算过后利用程序输出一下的。

[ 本帖最后由 广陵绝唱 于 2010-2-18 14:14 编辑 ]
搜索更多相关主题的帖子: 运算 
2010-02-17 11:04
dydsdyds
Rank: 6Rank: 6
来 自:Java
等 级:侠之大者
帖 子:217
专家分:457
注 册:2010-2-14
收藏
得分:0 
看了看,好难。等会做了,再编辑帖子修改。
先看看别人的思路……


这样算吗?
程序代码:
#include<stdio.h>
main()
{
    printf("(8*8+8*8)*8-(8+8+8)=1000");
}




[ 本帖最后由 dydsdyds 于 2010-2-17 13:25 编辑 ]

c语言刚开一学期,就换开VB...
2010-02-17 13:23
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
(8888-888)/8 = 1000
2010-02-17 14:01
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
看来就算手工解这个也颇有意思~~
2010-02-17 21:16
小治
Rank: 2
来 自:安徽
等 级:论坛游民
帖 子:30
专家分:20
注 册:2010-2-18
收藏
得分:0 
这个题确实有点难度,不知道楼主你是想得到什么样的过程?
我这个也是利用基本运算得到的结果不知是否符合你的答案,多有不全还望各位多多指点!
#include<stdio.h>
main()
{
    int a;
    a=(((8+8)*8)-((8+8+8)/8))*8;
    printf("%d",a);
   
}
我还要多多努力!
2010-02-18 09:06
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
    运算符号及括号是利用程序自己添加上去的,而不是只输出一个算式.也就是说,这个算式是程序自己搜索、运算得到的,而不是我们自己算过后利用程序输出一下的。
2010-02-18 14:14
hzz063
Rank: 3Rank: 3
来 自:横县百合
等 级:论坛游侠
帖 子:80
专家分:114
注 册:2010-1-27
收藏
得分:50 
#include "stdio.h"
double plus(double a,double b,int logo)//函数 plus
{
double sum;
switch(logo)
{
case 0:sum=a+b;break;
case 1:sum=a-b;break;
case 2:sum=a*b;break;
case 3:sum=a/b;break;
}
return sum;
}
char f1(int logo)//函数f1
{
char c;
switch(logo)
{
case 0:c='+';break;
case 1:c='-';break;
case 2:c='*';break;
case 3:c='/';break;
}
return c;
}
main()
{
int j1,j2,j3,j4,j5,j6,j7,flag=0,n;
double s;
for(n=8;n<=888888;n=n*10+8)
{for(j1=0;j1<4;j1++)
{
if(flag==1)
break;
for(j2=0;j2<4;j2++)
{
if(flag==1)
break;
for(j3=0;j3<4;j3++)
{
if(flag==1)
break;
for(j4=0;j4<4;j4++)
{
if(flag==1)
break;
for(j5=0;j5<4;j5++)
{
if(flag==1)
break;
for(j6=0;j6<4;j6++)
{
if(flag==1)
break;
for(j7=0;j7<4;j7++)
{
s=plus(8,8,j1);
s=plus(s,8,j2);
if(n<888888)s=plus(s,n,j3);
if(n<88888)s=plus(s,8,j4);
if(n<8888)s=plus(s,8,j5);
if(n<888)s=plus(s,8,j6);
if(n<88)s=plus(s,8,j7);

if(s==1000)
{
flag=1;
printf("\n8%c8%c8%c%d",f1(j1),f1(j2),f1(j3),n);
if(n<88888)printf("%c8",f1(j4));
if(n<8888)printf("%c8",f1(j5));
if(n<888)printf("%c8",f1(j6));
if(n<88)printf("%c8",f1(j7));
printf("=%0.0lf",s);
break;
}
}
}
}
}
}
}
}
}
}
--------------------------------------------------
得出的结果只能从左往右算,如8+8*8+888-8-8=1000
不能先算乘。呵呵。不是很到位,高手指点一下,谢谢了!

一切只因为喜欢。
2010-02-18 14:59
gtl75008810
Rank: 2
等 级:论坛游民
帖 子:29
专家分:71
注 册:2010-2-2
收藏
得分:0 
请教楼上,思路能不能具体说下?
for(n=8;n<=888888;n=n*10+8)
{for(j1=0;j1<4;j1++)。。
这里让我有点没明白哦~~貌似也没到达通用性的要求。

我的思路是用栈来记录运算过程,递归的方法,但是具体实现上还有点困惑的地方。欢迎高手指教!
2010-02-18 20:18
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
我承认我是来接分的

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-02-19 12:13
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
呵呵,我也是来接分的。
反正这题我不太会做,那天我编了一会。只让程序帮我找了用8个8(就是没有 88,888 之类的数)与+-*/组起来的式子里有没有1000,因为用了逆波兰表达式(后缀表达式)所以称了加括号的工作。不过那个程序看来找的不怎么全,连楼上几位大哥用手找出来的结果都没找出来。唉……
2010-02-19 16:23
快速回复:8 个 8 的运算
数据加载中...
 
   



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

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