C语言中如何将一个数字的各个位上的数分别提取?

C语言中如何将一个未定的多位数字的各个位上的数字单独提取出来呢?能否给出具体的语句?(以 Visual C++ 6.0 为平台) 谢谢!!!

两种方案,直接用数学方法计算和转为为字符串。

第一:数学方法,对于任意一个数n,要计算第site位的数,都可以用

n/10^(site-1)%10

计算出来。比如计算123各位数:

int data=123;
printf("%d\n",data/100%10);
printf("%d\n",data/10%10);
printf("%d\n",data/1%10);

结果是:

第二:转化为字符串,这里要用到一个函数itoa。同样是计算123各个位数。

代码:

int data = 123;
char array[100];
itoa(data, array, 10);    //转化为字符串
printf("%c\n", array[0]);
printf("%c\n", array[1]);
printf("%c\n", array[2]);

结果和上面一样!

两种方式都能计算出,但是第一种方式计算未知位数的数时很麻烦,要首先计算出数的位数,相比较第二种就没那问题,只要定义足够大的数组就不存在这个问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-30

1、方法一:

我的做法是先将整型转为字符串,再将转后的字符串取需要的字符转为整型,过程说起来复杂,但是写起来只要两行代码就行了~

#include   <stdlib.h>     

#include   <stdio.h>       

int   main(void)     

{     

int   number   =   12345;     

char   string[25];     

itoa(number,   string,   10);     

printf("integer   =   %d   string   =   %s\n",   number,   string);  //将整型转换为字符创 

printf("%d",(int)string[0]-48);   //将字符串转为整型      

return   0;     

}

  

2、方法二:

int a[100];

int i;

假设x为INPUT的数

a[100]用来存放各个数位(0用来存放一共有几位,1用来存放个位,,依次)

i=0;

{a[++i]=x % 10;

x/=10;}while (x);

a[0]=i;

本回答被网友采纳
第2个回答  2020-01-31

#include<stdio.h>

int main()

{

int a;

int b[111]={0};//这里数组必须赋于初值,不然系统会随机赋值,将输出错误!赋值任何数              

scanf("%d",&a);//都行!

int i=0;

while(a!=0)

{

b[i]=a%10;            //将各个位的数赋值于数组b[i] ; 

a/=10;           //现在数组b[i]记录的是各个位上的数的反序; 

i++;            //i记录这个数是几位数 ; 

}

for(int j=i-1;j>=0;j--)

{

printf("%d ",b[j]) ;        //最后反序输出数组b[j]; 

}

return 0;

}

有不理解的地方,欢迎追问。望采纳!

第3个回答  2017-07-27

假如有一个数为n,n<65535;

万位上的数值:(n/10000)%10;

千位上的数值:(n/1000)%10;

百位上的数值:(n/100)%10;

十位上的数值:(n/10)%10;

个位上的数值:n%10;

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num=0,a[5];
    printf("input num(<=65535):");
    scanf("%d",&num);
    if(num<=65535)
    {
        printf("万:%d\n",num/10000%10);
        printf("千:%d\n",num/1000%10);
        printf("百:%d\n",num/100%10);
        printf("十:%d\n",num/10%10);
        printf("个:%d\n",num%10);
    }
    return 0;
}

第4个回答  2013-07-25
解决步骤如下:1.首先获取这个数字的位数大小2.循环位数大小次,在循环中每次除以10,取莫,就得到了这个为的值,也就是这个位上的数字。然后保存到你的数组中,或者输出。上述思路即可解决你的问题。
相似回答