C 练习实例82
题目:八进制转换为十进制
程序分析:无。
实例
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>
#include <math.h>
#include <string.h>
// 函数声明
int octalToDecimal(const char *octalNumber);
int main() {
char octalNumber[100];
// 输入八进制数
printf("请输入一个八进制数: ");
scanf("%s", octalNumber);
// 转换为十进制
int decimalNumber = octalToDecimal(octalNumber);
// 输出结果
printf("八进制数 %s 转换为十进制数是: %d\n", octalNumber, decimalNumber);
return 0;
}
// 八进制转换为十进制的函数
int octalToDecimal(const char *octalNumber) {
int decimalNumber = 0;
int length = strlen(octalNumber);
for(int i = 0; i < length; i++) {
int digit = octalNumber[i] - '0'; // 将字符转换为数字
decimalNumber += digit * pow(8, length - i - 1);
}
return decimalNumber;
}
以上实例运行输出结果为:
请输入一个八进制数: 16 八进制数 16 转换为十进制数是: 14
代码解析:
- 头文件: 包含必要的头文件
stdio.h(用于输入输出)、math.h(用于数学计算)和string.h(用于字符串操作)。 - 函数声明:
int octalToDecimal(const char *octalNumber);声明了一个将八进制数转换为十进制数的函数。 - 主函数:
- 定义一个字符数组
octalNumber来存储用户输入的八进制数。 - 使用
scanf函数获取用户输入的八进制数。 - 调用
octalToDecimal函数将八进制数转换为十进制数。 - 使用
printf函数输出转换后的十进制数。
- 定义一个字符数组
- 八进制转换为十进制的函数:
octalToDecimal函数接收一个八进制数的字符串表示形式,并将其转换为十进制数。- 使用
strlen获取八进制字符串的长度。 - 遍历八进制字符串,每一位字符转换为对应的数字,并计算其对应的十进制值累加到
decimalNumber。
C 语言经典100例
德林恩宝零零
319***5092@qq.com
参考方法:
#include<stdio.h> #include<string.h> int main() { int n,i,len,sum=0; char str[20]; printf("请输入一个8进制数:\n"); scanf("%s",str); len=strlen(str); for(i=0;i<=len-1;i++) { sum=sum*8+str[i]-'0'; } printf("刚输入的8进制数转化为十进制为\n%d\n",sum); return 0; }德林恩宝零零
319***5092@qq.com
HIT_CCC
117***2963@qq.com
采用模块化编程更好:
#include<stdio.h> #include<math.h> int OtoD(int n) { int sum = 0; int i = 0; while(n) { sum += (n%10)*pow(8,i++); n /= 10; } return sum; } int main(void) { int n; printf("请输入一个8进制数:\n"); scanf("%d",&n); printf("刚输入的8进制数转化为十进制为\n"); printf("%d",OtoD(n)); }HIT_CCC
117***2963@qq.com