|
10鱼币
本帖最后由 yexing 于 2020-12-13 00:27 编辑
原题:
我的代码:
- #include<cstdio>
- int main()
- {
- int a, b, c, d, m;
- int temp, count = 0;
-
- scanf("%d %d %d %d %d", &a, &b, &c, &d, &m);
-
- for(int i = 0; i < 4; i++)
- {
- for(int j = 0; j < 4; j++)
- {
- for(int k = 0; k < 4; k++)
- {
- temp = 0;
- switch(i)
- {
- case 0: temp = a+b; break;
- case 1: temp = a-b; break;
- case 2: temp = a*b; break;
- case 3: temp = a/b; break;
- }
- switch(j)
- {
- case 0: temp += c; break;
- case 1: temp -= c; break;
- case 2: temp *= c; break;
- case 3: temp /= c; break;
- }
- switch(k)
- {
- case 0: temp += d; break;
- case 1: temp -= d; break;
- case 2: temp *= d; break;
- case 3: temp /= d; break;
- }
- if(temp == m)
- {
- count++;
- }
- }
- }
- }
- printf("%d", count);
-
- return 0;
- }
复制代码
输出:
问题:
输出结果不对,请问我的代码有什么问题?
本帖最后由 风过无痕1989 于 2020-12-13 10:14 编辑
这个程序用不着弄得这么复杂,如果 a、b、c、d 四个数可以自由移动,才需要循环,并可以得出32种完成算式方案;如果 a、b、c、d 四个数不可以自由移动,就只要将 +、-、* 三个运算移动到不同的位置即可得出两种方案。程序如下:
- // 在 a, b, c, d 四个数中加上运算符 +、-、* 之一,使算式结果等于 m
- #include<stdio.h>
- int main()
- {
- int a, b, c, d, m;
- int count = 0;
- scanf("%d%d%d%d%d", &a, &b, &c, &d, &m); // 控制符中间不要留空格,输入时用空格隔开就行了
- if (m == a + b - c * d)
- count++;
- if (m == a + b * c - d)
- count++;
- if (m == a * b + c - d)
- count++;
- if (m == a * b - c + d)
- count++;
- if (m == a - b + c * d)
- count++;
- if (m == a - b * c + d)
- count++;
- if (count != 0)
- printf("有 %d 种完成算式的方案\n", count);
- else
- printf("不能完成算式");
- return 0;
- }
复制代码
|
最佳答案
查看完整内容
这个程序用不着弄得这么复杂,如果 a、b、c、d 四个数可以自由移动,才需要循环,并可以得出32种完成算式方案;如果 a、b、c、d 四个数不可以自由移动,就只要将 +、-、* 三个运算移动到不同的位置即可得出两种方案。程序如下:
|