【问题标题】:C++: getting the front digit of a 2 digit numberC ++:获取2位数字的前一位
【发布时间】:2015-02-03 06:42:07
【问题描述】:

我目前正在处理直方图,而且我是 C++ 新手,所以我不知道是否有一种简单的方法可以做到这一点,有人可以帮忙吗?

数字始终介于 -1 和 99 之间。 我想返回第一个数字。 我知道可以使用 % 返回最后一个数字,但找不到返回第一个数字的方法。

Examples:
98 --> 9
87 --> 8
24 --> 2
10 --> 1
==For anything under 9 I would like to return a 0==
9  --> 0
5  --> 0
0  --> 0
-1 --> 0

【问题讨论】:

  • 看来“gimme teh codez”问题在 SO 上还是可以的……
  • @juanchopanza:关于特定编程问题的问题肯定一直没问题吗?还是应该将 SO 简化为“为什么我的 codez 坏了”或“请为我阅读 C++ 标准”?我会觉得这很无聊。
  • @MikeSeymour 我希望至少有一些关于如何做到这一点的推理,以及他们为什么失败/出了什么问题。这也适用于您提到的类别。

标签: c++ numbers histogram


【解决方案1】:

获取第二个数字的一​​般方法(即使数字可以大于 99)是

n / 10 % 10

请注意,对于 -11,它将返回 -1。如果你想要 1,然后做(n >= 0 ? n : -n) / 10 % 10

【讨论】:

    【解决方案2】:

    只需返回除以 10 的数字,即

    int get_digit_2nd(int number)
    {
        if(number <= 0)
            return 0; 
        return number / 10 ; // since your number is below 100. 
    }
    

    【讨论】:

    • 我的错误。进行了编辑。没有除以 0。:)
    • 谢谢!我没有想到这一点,我忘记了 int/int = int 并且从不浮动。
    • 请注意,这不适用于 >= 100 的数字。请参阅 Ishamael 的回答以了解一般方法。 :)
    【解决方案3】:

    由于数字总是小于 100,

    n/10;
    

    足够了。

    但是n 可能是-1,所以

    answer = n >= 0 ? n/10 : -1
    

    【讨论】:

    • -1 的期望答案是 0,而在 C++ (-1)/10 中恰好是 0,所以不需要特殊的大小写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多