C语言八进制转十进制怎么实现?

99ANYc3cd6
预计阅读时长 6 分钟
位置: 首页 C语言 正文

八进制转换为十进制的C语言实现

以下是一个将八进制数转换为十进制数的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;
}

程序说明

  1. 输入验证:程序首先检查输入字符串是否只包含0-7的数字,确保是有效的八进制数。

  2. 转换算法

    • 从左到右处理八进制数的每一位
    • 对于每一位,将其转换为对应的数字值
    • 使用公式 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
  3. 输出结果:程序最终显示转换后的十进制数

示例运行

请输入一个八进制数: 12
十进制等效值: 10
请输入一个八进制数: 77
十进制等效值: 63
请输入一个八进制数: 123
十进制等效值: 83

如果输入无效的八进制数(如包含8或9),程序会显示错误信息并退出。

八进制转换为十进制 c语言
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
数据结构与算法分析C语言版核心难点在哪?
« 上一篇 03-14
dede如何转换编码为gb2312?
下一篇 » 03-14

相关文章

取消
微信二维码
支付宝二维码

目录[+]