八进制转换为十进制的C语言实现
以下是一个将八进制数转换为十进制数的C语言程序:

(图片来源网络,侵删)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 函数声明
int octalToDecimal(const char *octalStr);
int main() {
char octalStr[100];
printf("请输入一个八进制数: ");
scanf("%s", octalStr);
// 验证输入是否为有效的八进制数
for (int i = 0; octalStr[i] != '\0'; i++) {
if (octalStr[i] < '0' || octalStr[i] > '7') {
printf("错误: 输入的不是有效的八进制数,\n");
return 1;
}
}
int decimal = octalToDecimal(octalStr);
printf("十进制等效值: %d\n", decimal);
return 0;
}
// 将八进制字符串转换为十进制整数
int octalToDecimal(const char *octalStr) {
int decimal = 0;
int length = strlen(octalStr);
for (int i = 0; i < length; i++) {
int digit = octalStr[i] - '0'; // 将字符转换为数字
decimal = decimal * 8 + digit; // 八进制转十进制的核心算法
}
return decimal;
}
程序说明
-
输入验证:程序首先检查输入字符串是否只包含0-7的数字,确保是有效的八进制数。
-
转换算法:
- 从左到右处理八进制数的每一位
- 对于每一位,将其转换为对应的数字值
- 使用公式
decimal = decimal * 8 + digit逐步计算十进制值 - 八进制"123"的转换过程:
- 初始: decimal = 0
- 第1位'1': decimal = 0*8 + 1 = 1
- 第2位'2': decimal = 1*8 + 2 = 10
- 第3位'3': decimal = 10*8 + 3 = 83
-
输出结果:程序最终显示转换后的十进制数
示例运行
请输入一个八进制数: 12
十进制等效值: 10
请输入一个八进制数: 77
十进制等效值: 63
请输入一个八进制数: 123
十进制等效值: 83
如果输入无效的八进制数(如包含8或9),程序会显示错误信息并退出。

(图片来源网络,侵删)
