C语言,将一个八进制数转换为十进制数(含延伸)
设计思路,将八进制数用字符串的形式输入储存,然后按照每一位对应的8的指数级与该位相乘,再把每一位的结果相加,得到需要转换的十进制数。
#include<studio.h>
void main(){
int i=0,n=0;
char a[20];//一般20就够用了
printf("请输入一个八进制数:\n");
gets(a);
//运算部分
while(a[i]!='\0'){//此处判断不能为‘null,否则会判定错误
n=n*8+a[i]-'0';
i++;
}
printf("该八进制数转化为十进制数应为:%d\n",n);
}
运行结果如下:
那如果是A进制数转换为10进制数呢?
同样的思路,我们在先前的代码上做一些简单的参数改动即可。大于10的数另作方法,因为设计字母与数的转化。
#include<studio.h>
void main(){
int i=0,n=0;
int b;
char a[20];//一般20就够用了
printf("请输入一个数:\n");
gets(a);//不能先于字符串输入整型
printf("请确定输入的数为几进制数:(如:2,3,4……不大于10)");
scanf("%d",&b);
//运算部分
if(b<11||b!=0){
while(a[i]!='\0'){//此处判断不能为‘null,否则会判定错误
n=n*b+a[i]-'0';
i++;
}
printf("该%d进制数转化为十进制数应为:%d\n",b,n);
}
else {
printf("不符合规范”);
exit 0;
}
}
运行结果如图: