怎样用c语言把八进制数转化为十进制数?? 5

尽可能简单一点,,,谢谢你们啦!!明天就是省二考试了!!... 尽可能简单一点,,,谢谢你们啦!!明天就是省二考试了!! 展开
 我来答
泽泽133
推荐于2017-05-23
知道答主
回答量:17
采纳率:0%
帮助的人:4.3万
展开全部
希望你的八进制数的类型是char
#include<stdio.h>
#include<string.h>
#include<math.h>

int main (void){
char x[10]={10000};//八进制的10000是十进制的4096.
int i,j;
double k=0,w=0;
j=strlen(x);//j用来判断用这个八进制数有多少位
for(i=0;i<strlen(x),i++)
{
k=(x[i]-48)*(pow(8,--j));
w+=k;
}
printf("%f\n",w);//显示十进制数
retrun 0 ;}
我是这个思路,希望对LZ有帮助。
来自:求助得到的回答
sdwffzlll
2012-12-26 · TA获得超过758个赞
知道小有建树答主
回答量:498
采纳率:85%
帮助的人:242万
展开全部
#include <stdio.h>
//获取字符串长度
int getLength(char a[])
{
int count=0;
while (a[count]) {
count++;
}
return count;
}
//反转字符串
void reverse(char a[])
{
char temp;
int length=getLength(a), i=0;

while (i<length/2) {
temp=a[i];
a[i]=a[length-i-1];
a[length-i-1]=temp;
i++;
}
}
//base的count次方
int intPow(int base,int count)
{
int index=0,result=1;
while (index<count) {
result=result*base;
index++;
}
return result;
}
//以base进制将数字转化为字符串,
//如10对应十进制{'1','0'}对应8进制{'1','2'}
void convertIntToChars(int a,int base,char result[])
{
int quotient=a,index=0;
while (quotient) {
result[index]=quotient%base+'0';
quotient=quotient/base;
index++;
}
result[index]=0;
reverse(result);
}
//将字符串以base进制转换为10进制
int atoi(char a[],int base)
{
int length=getLength(a),sum=0,index=0;
while(index<length)
{
sum+=(a[index]-'0')*intPow(base,length-1-index);
index++;
}
return sum;
}
//十进制转八进制,并以十进制形式表示,如8(十进制)对应10(八进制)
int decimalToOctal(int a)
{
char result[100];
convertIntToChars(a,8,result);
returnatoi(result,10);
}
//八进制转十进制,并以十进制形式表示
int octalToDecimal(int a)
{
char result[100];
convertIntToChars(a,10,result);
returnatoi(result,8);
}
int main(int argc, constchar * argv[])
{
int decimal=10;
printf("decimal %d's octal number is %d\n",decimal,decimalToOctal(decimal));
int octal=10;
printf("ocatal %d's decimal number is %d\n",octal,octalToDecimal(octal));

return0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2012-12-26 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
试一下以下程序段:
int a[32]={};
int x,i=-1;
scanf("%d",&x);
while (x>0)
{
a[++i]=x % 10;
x/=10;
}
int s=0;

while (i>=0)
{
s=s*10+a[i--];
}
printf("(%d)\n",s);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaorongxing
2012-12-26 · TA获得超过308个赞
知道小有建树答主
回答量:285
采纳率:100%
帮助的人:143万
展开全部
输出时直接用十进制输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
whoami2099
2012-12-26 · TA获得超过175个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:170万
展开全部
先把八进制转换字符串,然后从后面往前转换相加。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式