| 
 | 
 
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 四个数不可以自由移动,就只要将 +、-、* 三个运算移动到不同的位置即可得出两种方案。程序如下: 
 
 
 
 
 
 
 |