首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言實例練習

C語言練習實例82:八進制轉十進制實現

     編輯:C 語言實例練習

C語言練習實例82:八進制轉十進制實現

本實例讀取一個八進制字符串,通過逐字符處理將其轉換為十進制整數輸出。

程序分析

  • 利用霍納法則:n = n * 8 + (s[i] - '0') 累加。
  • 假設輸入合法八進制字符串(無前綴,無非法字符)。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>

int main() {
    int n = 0, i = 0;
    char s[20];

    printf("請輸入一個8進制數:\n");
    gets(s);

    while (s[i] != '\0') {
        n = n * 8 + s[i] - '0';
        i++;
    }

    printf("剛輸入的8進制數轉化為十進制為\n%d\n", n);
    return 0;
}

運行示例

請輸入一個8進制數:
16
剛輸入的8進制數轉化為十進制為
14

改進建議

  • 替換 gets() 為 fgets()。
  • 增加輸入合法性檢查(字符是否在 '0'-'7' 之間)。
  • 可使用標準庫函數 strtol(s, NULL, 8) 直接轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved