问题标题: 谁能告诉我怎样进行循环取位数

0
0

2
已采纳
褚俊皓
褚俊皓
新手天翼
新手天翼
循环取位数
引言
       我们知道对于一个正整数n,n%10可以求出n的个位数。
       但如果想要求n的十位数,百位数,千位数,…… 该怎么办?


一、 提取个位数
对于一个n而言,模10可以用来提取个位数
1) 123/10=12…3 得到的余数是3
2) 这个余数即是个位数。

二、 三位数提取各个位数
1) 提取个位 a%10
2) 提取十位 a/10%10
3) 提取百位 a/100

三、 任意位提取各位数
原理:
就是把数字变到个位上再进行求余。

1) 即提取个位就除以1,提取十位就除以10,提取百位就除以100,提取千位就除以1000…
2) 然后求余10

四、 循环提取正整数n的每一位
原理:每次都提取n的最后一位(n%10),然后将n的最后一位除掉(n/=10),重复这个过程,就能把n的每一位都取出来。

代码实现:
int n,a[100],cnt=0;
cin>>n;
while(n){
    a[++cnt]=n%10;
    n/=10;
}
//a数组存储了n中从低位到高位的每一位数字
``

希望对你有帮助

0
被禁言 高乐彤
高乐彤
修练者
修练者
int a,n[20],i=1;
    cin>>a;
    while(1){
        if(a>=10){
            n[i]=a%10;
            a/=10;
            i++;
        }if(a<10){
            n[i]=a;
            break;
        } 
    }

 

0
0
包涵宇
包涵宇
中级天翼
中级天翼

代码:

//假设输入的数是a
int l=0;
int b[105];
while(a!=0){
    l++;
    b[l]=a%10;
    a/=10;
}
//注意,这时数组中存储的是反向的!

 

0
杨坤泽
杨坤泽
新手守护
新手守护

if(一个数<=100){

    if(一个数/10==0 || 一个数%10==0){

        执行对应的操作;

    }else{

        ……我不知道了

    }

}

杨坤泽在2021-05-13 17:24:26追加了内容

0
汪宇航
汪宇航
新手启示者
新手启示者

string a;

cin>>a;

for(int i=0;i<a.size();i++){

.....................................................................

}

||

int a;

cin>>a;

while(a){

b[cnt++]=a%10;

a/=10;

}

我要回答