一道C语言题,求详细的思路和方法。。 。

最近小Y迷上了数学,总是在思考各种数学问题。有一天,他不小心把墨水洒在草稿纸上。他现在能看到的是“2?3?1?4”(?表示看不清的地方)。小Y的记忆力不错,他知道:1、每... 最近小Y迷上了数学,总是在思考各种数学问题。有一天,他不小心把墨水洒在草稿纸上。他现在能看到的是“2?3?1?4”(?表示看不清的地方)。小Y的记忆力不错,他知道:
1、每个?只会是“+”、“-”,“=”三个符号之一。
2、总共有且仅有一个“=”。
3、原式一定是一个等式。如“2+3-1=4”
现在他突然想知道,有多少种可能性,满足上面3个要求
展开
 我来答
sajiayixiao
2015-05-05
知道答主
回答量:14
采纳率:0%
帮助的人:11.1万
展开全部
穷举法即可。
首先,2、3、1、4位置是固定的。
那就可以针对是3个符号进行考虑。

其次,只有一个=号,那么就对=号的位置进行case。
case 第一个位置:
那么后面2个位置只有四种组合:+ + | + - | - +| - -
case 第二个位置:
其他两个位置按照四种组合计算。
case 第三个位置:
其他两个位置按照四种组合计算。

对其中等号两边的数据各自计算,存入A、B(也可能只有一个数字,那就直接赋值)
若A=B。就打印出来。
更多追问追答
追问
如果给定的数字较多,case太麻烦。然后如何用c语言实现+-的组合for循环感觉不行啊,我是新手请多讲一点,谢谢!
追答
用for循环的话,可能是需要多层了。因为+ - 符号是可能重复出现的。
char fuhao[2]={'+','-'};
int a=2,b=3,c=1,d=4;
case =号在第一个位置:
for(i=0;i<2;i++)
//2代表第二个位置有多少种情况。i=0时,第二个位置我们认为是+号,i=1时,第二个位置我们认为是-号。
{
for(j=0;j<2;j++)
//2代表第三个位置有多少种情况,j=0时,第三个位置我们认为是+号,j=1时,第三个位置我们认为是-号。
{

if(fuhao[i]==‘+’)

x=b+c;

else if(fuhao[i]=='-')

x=b-c;

if(fuhao[j]=='+')

y=x+d;

else if(fuhao[j]=='-')

y=x-d;

if (y==a)

{

printf("%d=%d%c%d%c%d",a,b,fuhao[i],c,fuhao[j],d);

}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式