鱼C论坛

 找回密码
 立即注册
查看: 1578|回复: 4

[已解决]这题怎么写(我用暴力算法写出来的)有没有啥简单的方法

[复制链接]
发表于 2021-11-21 17:52:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
加减乘除经常在一起共事,共事久了,难免会出现各种争执。一天,加减乘除又因为一个问题争论不休,因为谁也不能说服对方,自己就是最厉害的。
问题是这样的:给定2个非0整数,然后对这2个非0整数进行加法、或减法、或乘法、或整除运算,谁(即某种运算)得到的结果最大,谁就是独一无二的霸主。
输入
输入2个非零整数。
输出
输出运算结果最大的所有运算式。
如果运算结果最大的运算式有多个,每行输出一个运算式,且按照"加法、减法、乘法、除法"的优先顺序逐行输出。
最佳答案
2021-11-21 20:42:13
牵风 发表于 2021-11-21 19:31
主要还要这样
样例输入 Copy
2 2
  1. #include <stdio.h>

  2. int max(int a, int b){
  3.     return a > b ? a : b;
  4. }
  5. int min(int a, int b){
  6.     return a < b ? a : b;
  7. }

  8. int main()
  9. {
  10.     int a, b, res[4];
  11.     scanf("%d%d", &a, &b);
  12.     res[0] = a+b;
  13.     res[1] = max(a, b) - min(a, b);
  14.     res[2] = a*b;
  15.     if(!(max(a, b)%min(a, b))){
  16.         res[3] = max(a, b)/min(a, b);
  17.         int temp = -32767;
  18.         for(int i = 0; i < 4; i++) temp = max(temp, res[i]);
  19.         for(int i = 0; i < 4; i++){
  20.             if(res[i] == temp){
  21.                 switch(i){
  22.                     case 0:
  23.                         printf("%d + %d = %d\n", a, b, a+b);
  24.                         break;
  25.                     case 1:
  26.                         printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
  27.                         break;
  28.                     case 2:
  29.                         printf("%d * %d = %d\n", a, b, a*b);
  30.                         break;
  31.                     case 3:
  32.                         printf("%d / %d = %d\n", a, b, a/b);
  33.                         break;
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     else{
  39.         int temp = -32767;
  40.         for(int i = 0; i < 3; i++) temp = max(temp, res[i]);
  41.         for(int i = 0; i < 3; i++){
  42.             if(res[i] == temp){
  43.                 switch(i){
  44.                     case 0:
  45.                         printf("%d + %d = %d\n", a, b, a+b);
  46.                         break;
  47.                     case 1:
  48.                         printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
  49.                         break;
  50.                     case 2:
  51.                         printf("%d * %d = %d\n", a, b, a*b);
  52.                         break;
  53.                 }
  54.             }
  55.         }
  56.     }
  57.     return 0;
  58. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 18:29:43 | 显示全部楼层
只有相乘和相减才会变成最大值不是吗?

相乘 > 相加(适用于 2 个正整数或 2 个负整数)
相减 > 相除(适用于 1 个正整数以及 1 个负整数)

代码:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int a, b;
  5.     scanf("%d%d", &a, &b);
  6.     if((a > 0 && b > 0) || (a < 0 && b < 0)){
  7.         printf("%d 乘 %d 等于 %d 为最大值", a, b, a*b);
  8.     }
  9.     else{
  10.         int x = a > b ? a : b;
  11.         int y = a < b ? a : b;
  12.         printf("%d 减 (%d) 等于 %d 为最大值", x, y, x-y);
  13.     }
  14.     return 0;
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-21 19:31:47 | 显示全部楼层
傻眼貓咪 发表于 2021-11-21 18:29
只有相乘和相减才会变成最大值不是吗?

相乘 > 相加(适用于 2 个正整数或 2 个负整数)

主要还要这样
样例输入 Copy
2 2
样例输出 Copy
2+2=4
2*2=4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-21 20:42:13 | 显示全部楼层    本楼为最佳答案   
牵风 发表于 2021-11-21 19:31
主要还要这样
样例输入 Copy
2 2
  1. #include <stdio.h>

  2. int max(int a, int b){
  3.     return a > b ? a : b;
  4. }
  5. int min(int a, int b){
  6.     return a < b ? a : b;
  7. }

  8. int main()
  9. {
  10.     int a, b, res[4];
  11.     scanf("%d%d", &a, &b);
  12.     res[0] = a+b;
  13.     res[1] = max(a, b) - min(a, b);
  14.     res[2] = a*b;
  15.     if(!(max(a, b)%min(a, b))){
  16.         res[3] = max(a, b)/min(a, b);
  17.         int temp = -32767;
  18.         for(int i = 0; i < 4; i++) temp = max(temp, res[i]);
  19.         for(int i = 0; i < 4; i++){
  20.             if(res[i] == temp){
  21.                 switch(i){
  22.                     case 0:
  23.                         printf("%d + %d = %d\n", a, b, a+b);
  24.                         break;
  25.                     case 1:
  26.                         printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
  27.                         break;
  28.                     case 2:
  29.                         printf("%d * %d = %d\n", a, b, a*b);
  30.                         break;
  31.                     case 3:
  32.                         printf("%d / %d = %d\n", a, b, a/b);
  33.                         break;
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     else{
  39.         int temp = -32767;
  40.         for(int i = 0; i < 3; i++) temp = max(temp, res[i]);
  41.         for(int i = 0; i < 3; i++){
  42.             if(res[i] == temp){
  43.                 switch(i){
  44.                     case 0:
  45.                         printf("%d + %d = %d\n", a, b, a+b);
  46.                         break;
  47.                     case 1:
  48.                         printf("%d - %d = %d\n", max(a, b), min(a, b), max(a, b)-min(a, b));
  49.                         break;
  50.                     case 2:
  51.                         printf("%d * %d = %d\n", a, b, a*b);
  52.                         break;
  53.                 }
  54.             }
  55.         }
  56.     }
  57.     return 0;
  58. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2021-11-28 19:59:53 | 显示全部楼层
#include<stdio.h>
int main()
{
    int a,b,c,d,e,f;
    scanf("%d %d",&a,&b);
    c=a+b;
    d=a-b;
    e=a*b;
    f=a/b;
    if(c>=d&&c>=e&&c>=f){
    printf("%d+%d=%d\n",a,b,c);
}
    if(d>=c&&d>=e&&d>=f){
    printf("%d-%d=%d\n",a,b,d);
}
    if(e>=d&&e>=c&&e>=f){
    printf("%d*%d=%d\n",a,b,e);
}
    if(f>=d&&f>=e&&f>=c){
    printf("%d/%d=%d\n",a,b,f);
}
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 13:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表