如何用C语言拆分整数?

比如输入987,输出三个整数9 、8 、7。
用除法可以得到吗?
我是这样想的。
987/100=9
87/10=8
7/1=7
然后再输出,但我不知道用C语言该如何表示,我这样的想法正确吗?
谢谢大家,但是如果我要输出567891呢,是不是刚开始567891除以100000呀。要是输入任意数应该如何转换呢
12:40
1楼的,你说的那函数好像不是C语言里的吧
2-3楼的和代码是正确的,但他只能求出三位数的,如果是输入任意数,那么这个程序应该怎么改呀。。。。
4楼的朋友,结果是对的,但是调试不成功.好像还是算法有问题.
你再帮看看吧.

将一个整数的各个位分离出来的最简单方法就是模10,取个位数,直到该变为0。

参考代码:

#include <stdio.h>
void main()
{
    int n=0;
    scanf("%d", &n );
    do {
        printf("%d\n", n%10 ); //每次输出个位
        n/=10 ; //缩小10倍,去除原来的个位。
    }while(n);
}

但这整拆分的特点是从后向前输出每一位数。

如果仅是为了输出,还想正向输出每一位数,则可用递归函数来解决。(也可以实现逆向输出)

参考代码:

#include <stdio.h>
void split_int( int n )
{
if ( n>0 )
{
    //printf("%d\n", n%10 );//逆向输出,放开这里,关闭下面的printf().即:先输出当前个位,再去高位的数
split_int( n/10 );//先去输出高位的数
printf("%d\n", n%10 ); //再输出当前的个位数
}
}
void main()
{
int n;
scanf("%d", &n);
split_int(n);
}

如果想把分离开的数据存储到数组中,则最简单的方法是将整数用sprintf()存储到字符数组中,然后,遍历数组,逐位取出。

参考代码:

#include <stdio.h>
void main()
{
int n,i;
char str[20];
scanf("%d", &n);
sprintf(str,"%d", n);
for( i=0;str[i];i++ ) //正向输出
printf("%c\n", str[i] );
for( i--;i>=0;i-- ) //逆向输出
printf("%c\n", str[i] );
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23
直接使用函数将其转换成字符串,然后拆分,函数可能是itoa我记不清了

不用C久了,还好没有记错
函数名: itoa
功 能: 把一整数转换为字符串
用 法: char *itoa(int value, char *string, int radix);
程序例:

#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);
return 0;
}

如果你确实要手写的话,使用log10可以知道位数
如果你不想用系统函数的话,从个位数开始向前算直到剩下的那个数为0,举例如下:
a%10 是个位数,a=a/10就是少了个位的那个数了,循环一下直到a=0,就从低位开始全部取出来了
如果你一定要从高到低排的,将上面的结果翻过来就行了本回答被提问者采纳
第2个回答  2008-08-10
#include <string.h>
main()
{
int a,i;
char str[10];
printf("please input a number:");
scanf("%d",&a);
sprintf(str,"%d",a);
for(i=0;i<strlen(str);i++)
printf("%c,",str[i]);
}

用sprintf将整型转化为字符型,在一位一位输出。
注意:a不能太大[0,32767],因为a是有符号的整型变量,所以数值部分是15位二进制数,最大只能是7FFF,即32767!用其他的方法可能会更好,但是这种方法简单。
我用TC调试好象没问题啊!
第3个回答  2008-08-08
前提是无符号长整数数据则,最大位数为10,可设定以下通用程序;
main()
{
int i;
char c[10]
long n;

for(i=0;i<10;i++) c[i]='';

scanf("%ld",&n);

i=0;
while(n)
{
c[i++]='0'+n%10;
n=n/10;
}

printf("\n");
for(i=9;i>=0;i--)
if(c[i]!='') printf("%c",c[i]);

}
第4个回答  2008-07-29
#include <stdio.h>
void main()
{ int bai_wei,shi_wei,ge_wei;
bai_wei=987/10/10;
shi_wei=987/10%10;
ge_wei=987%10;
printf("%d %d %d",bai_wei,shi_wei,ge_wei);
}

我调试过了,没问题的。