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

C语言中如何将一个未定的多位数字的各个位上的数字单独提取出来呢?能否给出具体的语句?(以VisualC++6.0为平台)谢谢!!!... C语言中如何将一个未定的多位数字的各个位上的数字单独提取出来呢?能否给出具体的语句?(以 Visual C++ 6.0 为平台) 谢谢!!! 展开
 我来答
百度网友9f8ba65
2017-08-18 · TA获得超过1017个赞
知道小有建树答主
回答量:384
采纳率:86%
帮助的人:92.2万
展开全部

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

第一:数学方法,对于任意一个数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]);

结果和上面一样!

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

记忆e偶尔雨
高粉答主

2018-03-30 · 醉心答题,欢迎关注
知道大有可为答主
回答量:600
采纳率:89%
帮助的人:41.7万
展开全部

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;

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小黑哎啊
科技发烧友

2020-01-31 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1642
采纳率:74%
帮助的人:351万
展开全部

#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;

}

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxmatgz
2017-07-27 · TA获得超过899个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:79.4万
展开全部

假如有一个数为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;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
解决步骤如下:1.首先获取这个数字的位数大小2.循环位数大小次,在循环中每次除以10,取莫,就得到了这个为的值,也就是这个位上的数字。然后保存到你的数组中,或者输出。上述思路即可解决你的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式