int Conversion(int n) //二进制转换 { Stack s=CreateStack(50); ElementType x; //这里就不是填空题了,根据刚才分析的思路写完 }
时间: 2024-06-01 20:11:32 浏览: 7
int Conversion(int n) {
Stack s = CreateStack(50);
ElementType x;
while (n > 0) {
x = n % 2;
Push(s, x);
n /= 2;
}
int result = 0;
while (!IsEmpty(s)) {
x = Top(s);
result = result * 10 + x;
Pop(s);
}
return result;
}
相关问题
将以下java代码转换为C++代码:public class { public static void main(String[] args) { int j=0; for (int i=1;i<10000000;i++){ if (BaseConversion(i)){ j++; if (j==2023){ System.out.println(i);//215040 break; } } } } public static boolean BaseConversion(int n){ //十进制 int sum=0; int x=n; while (x!=0){ sum+=(x%10); x/=10; } if (n%sum!=0) return false; //二进制 sum=0; x=n; while (x!=0){ sum+=(x%2); x/=2; } if (n%sum!=0) return false; //八进制 sum=0; x=n; while (x!=0){ sum+=(x%8); x/=8; } if (n%sum!=0) return false; //十六进制 int[] arr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; sum=0; x=n; while (x!=0){ sum+=(arr[x%16]); x/=16; } if (n%sum!=0) return false; return true; } }
以下是将给定的 Java 代码转换为 C++ 代码的版本:
```cpp
#include <iostream>
bool BaseConversion(int n) {
// 十进制
int sum = 0;
int x = n;
while (x != 0) {
sum += (x % 10);
x /= 10;
}
if (n % sum != 0)
return false;
// 二进制
sum = 0;
x = n;
while (x != 0) {
sum += (x % 2);
x /= 2;
}
if (n % sum != 0)
return false;
// 八进制
sum = 0;
x = n;
while (x != 0) {
sum += (x % 8);
x /= 8;
}
if (n % sum != 0)
return false;
// 十六进制
int arr[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
sum = 0;
x = n;
while (x != 0) {
sum += (arr[x % 16]);
x /= 16;
}
if (n % sum != 0)
return false;
return true;
}
int main() {
int j = 0;
for (int i = 1; i < 10000000; i++) {
if (BaseConversion(i)) {
j++;
if (j == 2023) {
std::cout << i << std::endl; // 215040
break;
}
}
}
return 0;
}
```
希望这可以帮助到你!
void main() { int n,N;//要转换为八进制的十进制整数 printf("请输入你要转换的十进制整数:\n"); scanf("%d",&N);//输入要转换的十进制整数 conversion(N); //调用十进制转换为八进制的函数 }
### 回答1:
这段代码的功能是让用户输入一个十进制整数,然后调用一个名为 `conversion` 的函数将这个整数转换为八进制数。代码中定义了两个变量 `n` 和 `N`,但是在调用 `conversion` 函数时却传入了参数 `N`。这段代码的正确性还取决于 `conversion` 函数的实现,如果这个函数有问题,那么整个程序的输出也可能不正确。
### 回答2:
&n); N = n; printf("转换为八进制为:"); while (N != 0) { printf("%d", N % 8); N = N / 8; } printf("\n"); return 0; }
这段代码是一个将十进制整数转换为八进制的程序。程序中的变量n和N分别表示要转换的十进制整数和转换后的八进制整数。用户需要输入一个十进制整数,然后程序将该整数转换为八进制并输出。
首先,程序会打印出提示信息,要求用户输入一个十进制整数。用户输入的整数会被保存在变量n中。然后,将n的值赋给变量N,以便在转换过程中使用。
程序使用一个while循环来进行转换。循环的条件为N不等于0,即仍然有余数可供转换。在循环中,使用N%8得到N除以8的余数,并将余数输出,用来表示八进制的一个数位。然后将N除以8,更新N的值。
循环结束后,程序会输出一个换行符,以便输出结果与提示信息分开。然后通过return 0语句结束main函数。
总结起来,这段代码是一个简单的将十进制整数转换为八进制的程序,可以通过输入一个十进制整数,得到对应的八进制整数。
### 回答3:
&n); printf("%d的八进制表示为:%o\n",n,n);}
以上代码是一个用C语言编写的程序,目的是将一个十进制整数转换为八进制表示。
程序中的变量n和N都是整型变量。变量n用来存储用户输入的要转换的十进制整数值。变量N没有被使用,可忽略。
程序首先使用printf函数输出提示信息,让用户输入要转换的十进制整数。
然后使用scanf函数读取用户输入的十进制整数,并将其存储到变量n中。
最后,使用printf函数将变量n的八进制表示输出到屏幕上。
程序运行完毕后,即可看到用户输入的十进制整数对应的八进制表示。