读书人

数值拆分,该如何解决

发布时间: 2012-02-23 22:01:35 作者: rapoo

数值拆分
现在有一若干位的数据,(如:3745)要把它分解出来分别保存在整形变量中.
如: int a = 3745;要分拆成
int i = 3
int j = 7
int m = 4
int n = 5

有什么方法可以做到准确无误的实现,请大家出出主意,指教一番.

[解决办法]
ls好像没仔细看题
int a = 3745;要分拆成
int i = a % 10
a /= 10;
int j = a % 10
a /= 10;
int m = a % 10
a /= 10;
int n = a
[解决办法]
unsigned x = 1234567890; /* 一律用unsigned,避免符号问题 */

unsigned digit[20] = {0}; /* 2^64至多也只要20位数 */
unsigned ndig = 0;

for (ndig = 0; x != 0; ++ndig) {
digit[ndig] = x % 10;
x /= 10;
}
[解决办法]
int a[10],i=0;
do{
a[i++]=data%10;
}while((a/=10)!=0);
[解决办法]
我刚刚在这里写的一个小程序可以参考下
-------------------
输入一个整数,将整数的各位数字,逆序组成一个新整数!如果个数数,成为最高位数
#include <stdio.h>
int main()
{
int out=0,in,temp;
printf( "input the number:\n ");
scanf( "%d ",&in);
while(in/10||in%10)
{
temp=in%10;
in=in/10;
out=out*10+temp;
}
printf( "%d ",out);
return 0;
}
————————————————————————————————
gcc下运行成功
提醒注意while中的判断条件和顺序

[解决办法]
int main()
{
int nBuffer[11];
int num,i=0;

scanf( "%d ",&num);

while(num)
{
nBuffer[i] = num % 10;
num = num / 10;
i++;
}
nBuffer[10] = i;

for(i=nBuffer[10]-1;i> =0;i--)
printf( "%d\t ",nBuffer[i]);

printf( "\n ");

system( "pause ");
return 0;
}
这里需要知道的就是我们的整数(无符号 unsigned)最大是 4294967295(0xFFFFFFFF)。
是10位,由于有一个用来表示数字的位数 nBuffer[10]

读书人网 >C语言

热点推荐