写一个函数,输入两位数的八进制数,输出相应的十进制数
请求各位大神帮帮忙
[此贴子已经被作者于2017-12-12 16:06编辑过]
#include<stdio.h> int OctToDec(int _n) { int a = 0; char str[32] = {NULL}; sprintf(str, "0%d", _n); sscanf(str, "%o", &a); return a; } int main() { int a = 0; //example1, in:55,out:45 printf("请输入一个数字(八进制):"); scanf("%o", &a); //八进制输入 in printf("%d\n", a); //十进制输出 out fflush(stdin); //清空输入缓冲区 //example2, in:55,out:45 printf("请输入一个数字(十进制):"); scanf("%d", &a); //十进制输入 in a = OctToDec(a); //视为逻辑八进制数强制转换 printf("%d\n", a); //十进制输出 out return 0; }
[此贴子已经被作者于2017-12-12 17:10编辑过]
#include <stdio.h> #include<math.h> int strLen(char *s) { int i = -1; while ( s[++i] != '\0'); return i; } void eightToTen(){ char s[20]; printf("输入一个八进制数:"); scanf("%s",s); fflush(stdin); int len = strLen(s); int index = len;//没有小数点则小数点在最末尾 double value = 0; for(int i=0;i<len;i++){ if(s[i] == '.'){ index = i; break; }else{ continue; } } int j=0; for(;j<len;j++){ if(j!=index){//跳过小数点 int k = (j<index+1)?index-j-1:index-j; value += (s[j]-48)*pow(8,k); } } printf("%s[8]-->%f[10]",s,value); }