C++ 如何将一个数的各位数赋值给一个数组

源数位数未知,所以可能要用动态数组,怎么用?或者向量?

#include <iostream>
using namespace std ;

//求一个数有多少位
int GetDigitCount(int n)
{
int c = 0 ;
while (n)
{
n /= 10 ;
++c ;
}
return c ;
}

int main(void)
{
int num = 12345 ;

//取得数字的位数
int c = GetDigitCount(num) ;

//动态分配数组
int* a = new int[c] ;

//用数字各位填充数组,注意倒着填充
for (int i = c - 1; i >= 0; --i)
{
a[i] = num % 10 ;
num /= 10 ;
}

//输出数组中的数据
for (int i = 0; i < c; ++i)
{
cout << a[i] ;
}
cout << endl ;

delete a ;
a = NULL ;

system("pause") ;
return 0 ;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-09
可以定义一个字符串,然后用
sprintf(s,"%d",i);
可以将一个整数i,转变成字符串s。
然后用strlen(s),可求得字符串s,也就是整数i的长度。
第2个回答  2010-05-09
#include <iostream>

int main()
{
int count=0,x,n;

int *p=new int[count];

cout<<"input a number:"<<" ";
cin>>x;

while(x)
{ p[count]=x%10;
x/=10;
count++;
}

for(n=count-1;n>=0;--n)
cout<<" "<<p[n];

delete[] p;
return 0;
}
第3个回答  2010-05-09
可以用itoa函数,楼主可以在百度百科一下这个函数,当然也可以自己写一个函数实现这个功能

C++中怎样实现输入一个整数,将整数的每一位分别依次赋予一个数组
定义一个整数num,键盘输入并赋值给num,依次对10取余并除10求各位上的数,赋值到数组中;例如:\/\/参考代码如下:\/\/做到前后标签匹配 #include "iostream"#include "stdlib.h"#define N 20using namespace std;int main(){ int num,a[N],len;\/\/定义整数 char ch[N];\/\/字符数组,把整数转...

c++ 如何把一个数组的值赋到另一个数组?
1、 通过数组遍历,逐个赋值。定义循环变量int i;for(i = 0; i < 4; i ++)b[i] = a[i];该程序功能为遍历数组a,逐个赋值到数组b对应元素中。2、 借助内存复制函数memcpy,整体赋值。void *memcpy(void *dst, void *src, size_t size);这个函数的功能为将src上,大小为size字节的数据...

C++中如何将一串二进制数字中的每一个数字单独赋值给数组?
第一,一个int有32位,不止7位。第二,可以用位操作运算符。取第n位(最低位为第0位)的方法为 (i & (1 << n)) >> n.其中<<表示左移,1<<n表示1左移n位,比如1<<3就变成二进制的1000。&表示按位与,比如二进制的 1001 & 1000 就得到 1000 (第0位跟第0位与,第1位跟第1位...

c++中如何将一串数字赋给一个数组
c++中,输入整数时,一定会以空白字符(空格,TAB,回车)结束,而这个空白符号,不会被丢弃,直到有命令去读取。因此,可以,在输入一个数据后,加一个读字符操作,以判断是不是输入结束:读到的字符是回车,则结束读数据,否则,继续读下一个数据。参考代码:include <iostream>using namespace std ;v...

C++中,怎样将一个int数组的所有值付给另一个int数组
有,memcpy函数,void *memcpy(void *dest, const void *src, size_t n);需要头文件 include <string.h> #include <memory.h> 具体用法如下:int a[10];int b[10];memcpy(a,b,10*sizeof(int));\/\/将b数组内长度为10*sizeof(int)的内容赋给a 忘了说一句,注意目的数组不要比要复制的...

请教C++ ,如何将一个二维数组的一行数字赋值给一个一维数组并输出
printf("%d\\n",temp)这里print的始终是temp的首地址 你应该是这样:printf("%d\\n",temp[i][j])这样才对 最后友情提示: 希望下次发问题的时候请注意缩进..看得好辛苦: )

C++中如何实现一组数组赋值给另一组
1、同类型数组 例如对于 int a[N],b[M];\/\/ 假定数组b[]已赋值,将其复制到a[]时 如果M <= N,则有 memcopy(a,b,sizeof(int) * M);,完全复制 如果M > N,则有 memcopy(a,b,sizeof(int) * N);,部分复制 其他类型(double,float等)类同 2、不同类型数组 只能逐个进行转换后...

C++中如何把一个数组赋值给一个字符串变量问题,(考考你哦),。_百度知 ...
用指针赋值,直接给那个要赋值的字符串类型的数组要赋值的指针,只要类型兼容就可以操作。

C语言中如何把一个数组的值赋给另一个数组 急!!!
第一个问题,用FOR循环吧第一个数组的值 给第二个,第二个问题,可以,完全可以,第一个矩阵刚好是第二个的转制矩阵,当然可以了。

C++如何实现输入数组的个数,然后建立这个数量的数组?
代码如下:include <iostream>using namespace std;int main(){ int n; cout << "请输入数组元素个数"; cin >> n; \/\/ 建立数组 int *arr = new int[n]; \/\/ 赋值 for (int i = 0; i < n; i++) arr[i] = i; \/\/ 输出 for (int i = 0; ...

相似回答