设计算法把一个十进制整数转换为二或八进制输出。请 1. (1)叙述算法基于的原理; 〈2)写出算法代码。
时间: 2024-04-16 09:28:01 浏览: 105
1. 算法基于的原理:
- 对于二进制转换,可以通过不断除以2取余数的方式,将十进制数转换为二进制数。
- 对于八进制转换,可以通过不断除以8取余数的方式,将十进制数转换为八进制数。
2. 算法代码:
```c
#include <stdio.h>
// 十进制转二进制
void decimalToBinary(int decimal) {
int binary[32];
int index = 0;
if (decimal == 0) {
printf("0\n");
return;
}
while (decimal != 0) {
binary[index] = decimal % 2;
decimal /= 2;
index++;
}
for (int i = index - 1; i >= 0; i--) {
printf("%d", binary[i]);
}
printf("\n");
}
// 十进制转八进制
void decimalToOctal(int decimal) {
int octal[32];
int index = 0;
if (decimal == 0) {
printf("0\n");
return;
}
while (decimal != 0) {
octal[index] = decimal % 8;
decimal /= 8;
index++;
}
for (int i = index - 1; i >= 0; i--) {
printf("%d", octal[i]);
}
printf("\n");
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Binary: ");
decimalToBinary(decimal);
printf("Octal: ");
decimalToOctal(decimal);
return 0;
}
```
这个程序首先定义了两个函数,`decimalToBinary`用于将十进制数转换为二进制数,`decimalToOctal`用于将十进制数转换为八进制数。
在每个函数中,我们使用一个数组来存储转换后的二进制或八进制数的每一位。我们从输入的十进制数开始,通过不断除以2或8取余数的方式,将余数存储在数组中,并将十进制数除以2或8,继续进行下一次的除法运算。最后,我们逆序打印数组中的每一位,即可得到转换后的二进制或八进制数。
在主函数中,我们首先读取用户输入的十进制数,然后分别调用`decimalToBinary`和`decimalToOctal`函数进行转换,并打印出结果。