用c语言编程实现十进制整数和八进制整数之间的转换(即将10进制数转换为 8进制数,或将8进制数转换为10进制数)。输入输出格式参见样张:
时间: 2024-10-25 13:12:39 浏览: 18
在C语言中,我们可以利用取模运算(%)和除法运算(/)来实现十进制到八进制的转换,因为每次将数字除以8并记录余数,最后再把所有的余数倒序排列就是八进制表示。同样,对于八进制转十进制,可以逐位相加每个八进制位的值乘以对应的权值。
以下是一个简单的函数示例,分别用于十进制转八进制和八进制转十进制:
```c
#include <stdio.h>
#include <string.h>
// 十进制转八进制
void decimal_to_octal(int decimal_num) {
char octal[100]; // 存储结果
int i = 0;
while (decimal_num > 0) {
octal[i++] = decimal_num % 8 + '0'; // '0' 加上是为了转换成字符形式
decimal_num /= 8;
}
octal[i] = '\0'; // 结束字符串
printf("十进制 %d 转换为八进制为 %s\n", decimal_num, octal);
}
// 八进制转十进制
int octal_to_decimal(char* octal_num) {
int decimal_num = 0;
int power = 0;
for (int i = strlen(octal_num) - 1; i >= 0; i--) {
if (octal_num[i] >= '0' && octal_num[i] <= '7') { // 检查是否为有效八进制字符
decimal_num += (octal_num[i] - '0') * pow(8, power); // 累加每一位的值
power++;
} else {
printf("无效的八进制数: %s\n", octal_num);
return -1;
}
}
return decimal_num;
}
int main() {
int dec_input;
char oct_input[100];
printf("请输入十进制数: ");
scanf("%d", &dec_input);
decimal_to_octal(dec_input);
printf("请输入八进制数: ");
fgets(oct_input, sizeof(octal_input), stdin); // 防止换行符
oct_input[strcspn(oct_input, "\n")] = '\0'; // 移除换行符
int dec_result = octal_to_decimal(oct_input);
if (dec_result != -1)
printf("八进制 %s 转换为十进制为 %d\n", oct_input, dec_result);
return 0;
}
```
运行这个程序,你可以按照提示输入十进制数或八进制数,它会为你进行相应的转换。
阅读全文