C++:简单实现提取一个数字的每一位

最近在洛谷OJ学习简单算法,在遇到模板化可复用的一些思路时,就将代码简单总结于此。还有更多可以在“交个朋友”页面访问我的洛谷博客,看看最近解题的一些动态。

在提取一个数字的每一位时,可以运用取余的简单思路。假设一个数字为最高为万位,可以如此提取这个数字的每一位。

uint number;
uint a,b,c,d,e;
a=number % 10; //提取个位
b=number / 10 % 10; //十位
c=number / 100 % 10; //百位
d=number / 1000 % 10; //千位
e=number / 10000; //万位

在实操时,数字的位数往往不确定,可以如此设计一个循环来提取一个数字的每一位。

uint number;
uint numext;
for(int i = 1;i <= number;i = i * 10)
{
numext = number / i % 10;
}

运行后每次循环numext将输出这个数字的从个位起的每一位数。

点赞
  1. Himself65说道:

    南辕北辙了,把输入当成string来解决就没这事了…

    1. 排长说道:

      这种简单问题解法很多,这里只介绍了常用常见的通用思路

      1. himself65说道:

        如果光考虑纯粹数学运算,那么也是有点赘余的意味。
        ``` C++
        int num = 0x7f7f7f7f;
        while(num)
        {
        cout << num % 10 << " ";
        num /= 10;
        }
        ```
        再把这个变成内联函数,就不再需要更多额外变量。
        而且你那个循环,加入输入的数字在10位以上,或者更多,int已经溢出了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注