当前位置:   article > 正文

备考蓝桥杯每日一题——C++分支结构“ABC”

备考蓝桥杯每日一题——C++分支结构“ABC”

今天在洛谷上遇到了一道很有意思的题

题目:

【题目描述】

三个整数分别为 A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。

【输入格式】

第一行包含三个正整数A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 A、B 和 C(它们之间没有空格)表示所需的顺序。

【输出格式】

在一行中输出 A,B 和 C,用一个 (空格)隔开。

意思很简单:给你三个数分别代表ABC,但并不是第一个数就是A,第二个数是B这样的,而 A是最小的B是第二小的,而C是最大的。再给你一行字母,让你按照字母的顺序将数字输出。

题解:

所谓ABC,就是这三个数的max,mid和max,所以我们只需要将这三个数算出来就可以了。

max和min相信大家都会算,而mid则就需要一些取巧的办法了。

很简单,因为只有三个数,如果a!=max&&a!=min,那么a就是mid了,同理bc一样

需要注意的一点是:最开始的时候我将Mid函数写成了a<=max&&a>=min,导致的最直接的后果就是如果a就是最大值或最小值的话那就不会进行比较,函数直接返回a,导致结果错误。

最后上代码

  1. #include <iostream>
  2. using namespace std;
  3. int Max(int a, int b, int c)
  4. {
  5. int d = a > b ? a : b;
  6. return c > d ? c : d;
  7. }
  8. int Min(int a, int b, int c)
  9. {
  10. int d = a < b ? a : b;
  11. return c < d ? c : d;
  12. }
  13. int Mid(int a, int b, int c)
  14. {
  15. int max = Max(a, b, c);
  16. int min = Min(a, b, c);
  17. if (a != min && a != max)
  18. {
  19. return a;
  20. }
  21. if (b != min && b != max)
  22. {
  23. return b;
  24. }
  25. if (c != min && c != max)
  26. {
  27. return c;
  28. }
  29. }
  30. int main()
  31. {
  32. int a, b, c;
  33. cin >> a >> b >> c;
  34. int max = Max(a, b, c);
  35. int min = Min(a, b, c);
  36. int mid = Mid(a, b, c);
  37. char ch[3];
  38. for (int i = 0; i < 3; i++)
  39. {
  40. cin >> ch[i];
  41. }
  42. for (int i = 0; i < 3; i++)
  43. {
  44. if (ch[i] == 'A')
  45. {
  46. cout << min<<" ";
  47. }
  48. if (ch[i] == 'B')
  49. {
  50. cout << mid << " ";
  51. }
  52. if (ch[i] == 'C')
  53. {
  54. cout << max << " ";
  55. }
  56. }
  57. return 0;
  58. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/程序代码艺术家/article/detail/60562
推荐阅读
相关标签
  

闽ICP备14008679号