C++ 如何使用动态内存分配将十进制转换为八进制?
我写了两段代码。 这一个不起作用,因为它向后写代码C++ 如何使用动态内存分配将十进制转换为八进制?,c++,decimal,octal,C++,Decimal,Octal,我写了两段代码。 这一个不起作用,因为它向后写代码 void convertNum1(long a) { while (a!=0) { long remainder = 0; remainder = a % 8; a /= 8; cout << remainder; } cout << endl; } void convertNum2(long a) { long *poi
void convertNum1(long a) {
while (a!=0) {
long remainder = 0;
remainder = a % 8;
a /= 8;
cout << remainder;
}
cout << endl;
}
void convertNum2(long a) {
long *pointer = NULL;
int k = 1;
long c = a;
while (c != 0) {
c/= 8;
k++;
}
pointer = new long[k];
int rem;
for (int j = 0;j<k;j++) {
rem = a / 8;
*(pointer + j) = rem;
}
for (int j = k; j > 0;j--) {
cout << *(pointer + j);
}
delete []pointer;
}
void convertNum1(长a){
while(a!=0){
长余数=0;
余数=a%8;
a/=8;
cout我建议使用堆栈
。将八进制数字推到堆栈上,然后将其弹出(它们的顺序正确)
顺便说一句,你总是可以欺骗和使用
std::字符串Dec_到Oct(无符号长数字)
{
静态常量字符八进制字符数字[]=“01234567”;
标准:堆栈八进制数;
同时(数量>0U)
{
八进制数字=数字%8;
常量字符d=八进制字符数字[八进制数字];
八进制数推(d);
数字=数字/8;
}
std::字符串八进制文本;
而(!octal_number.empty())
{
const char d=八进制数.top();
八进制文本+=d;
八进制数.pop();
}
返回八进制文本;
}
我建议使用堆栈
。将八进制数字推到堆栈上,然后将其弹出(顺序正确)
顺便说一句,你总是可以欺骗和使用
std::字符串Dec_到Oct(无符号长数字)
{
静态常量字符八进制字符数字[]=“01234567”;
标准:堆栈八进制数;
同时(数量>0U)
{
八进制数字=数字%8;
常量字符d=八进制字符数字[八进制数字];
八进制数推(d);
数字=数字/8;
}
std::字符串八进制文本;
而(!octal_number.empty())
{
const char d=八进制数.top();
八进制文本+=d;
八进制数.pop();
}
返回八进制文本;
}
请直接查看并发布您的代码,而不是链接到托管代码的地方。您也可以将文本放入C样式的注释块中,这是不必要的。由于您是新手,请查看。顺便说一句,八进制、十进制和十六进制仅以文本格式或常量出现。因此,除非您将八进制存储为文本,否则没有p点存储为整数。另外,使用%
符号表示余数。/
符号表示除法。在第二个代码中,您永远不会更改a
。因此,数组的每个元素都将获得相同的a/8
值。请直接查看并发布代码,而不是链接到托管代码的某个地方。您还可以将文本放在C样式的注释块中,这是不必要的。因为您是新手,请查看.BTW、八进制、十进制和十六进制仅以文本格式或常量出现。因此,除非您将八进制存储为文本,否则将其存储为整数没有意义。此外,对于余数,请使用%
符号bol表示除法。在第二个代码中,您永远不会更改a
。因此,数组的每个元素都将获得相同的a/8
。
std::string Dec_To_Oct(unsigned long number)
{
static const char octal_char_digits[] = "01234567";
std::stack<char> octal_number;
while (number > 0U)
{
octal_digit = number % 8;
const char d = octal_char_digits[octal_digit];
octal_number.push(d);
number = number / 8;
}
std::string octal_text;
while (!octal_number.empty())
{
const char d = octal_number.top();
octal_text += d;
octal_number.pop();
}
return octal_text;
}