如何实现把一个数字的每一位存储到一个数组中?

如题,谢谢各位高手了
不能除以10吧,可能是小数呢,比如3245.1234,把这个数的每一位放进一个数组。让a[1]=3,a[2]=2,a[3]=4。。。。这样

用字符串方式读入
用sscanf 转为 整型 存入 int a[100];
小数点位在n1中,位子 从左端起算,第一个位置为0
没有 小数点 时 n1=200。
程序如下。
例如
输入: 1234567891234567.890123456789
输入:.1234
输入:0.1234 等都可以

#include <stdio.h>
void main(void)
{
char str[100];
int a[100];
int i,len,n1=200,n2;

printf("please enter the number\n");
fgets(str,99,stdin);
len = strlen(str);
len =len-1;
str[len] = '\0';

for (i=0;i<len;i++){
if (str[i] == '.') { n1 = i; continue; }
if (n1 == 200) {sscanf(&str[0]+i,"%1d",&a[i]); } else
{sscanf(&str[0]+i,"%1d",&a[i-1]);
};
};

if (n1 != 200) printf("\ndot at location %d\n",n1);

if (n1 != 200) len--;
for (i=0;i<len;i++){
if (i == n1) printf(".");
printf("%1d",a[i]);
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-19
ls的ls,难道不知道小数不能取模。。。

char buffer[100];
int a[100],i=0;
fgets(stdin, "%s", buffer);
while( *chp )
{
if( *chp >= '0' && *chp <= '9' )
{
a[ i++ ] = *chp - '0';
}
++chp;
}

简而言之,就是如ls所说当字符串输入,再转化为整数。
第2个回答  2008-06-19
直接用_stprintf_s这样的函数就可以了

#include <tchar.h>
#include <string>
using std::string ;

int main()
{

float Test = (float)12.33333 ;

const int BufferSize = 30 ;
char Buffer[BufferSize] ;
_stprintf_s( Buffer , BufferSize , "%f" , Test ) ;

return 0 ;
}
第3个回答  2008-06-19
除十取余
i=0;
while(a!=0)
{
b[i]=a%10;
i++;
a/=10;
}
第4个回答  2008-06-19
转换成字符串String,然后用substring截取每一位数字
相似回答