#include<stdio.h>
#include<math.h>
int main()
{
int x;
int n=0,k,s=0;
scanf("%i",&x);
for(;x>=(pow(10,n));n++);
for(;n>=0;n--)
{
k=x/(pow(10,n));
x=x-k*(pow(8,n));
s=s+k*(pow(8,n));
}
printf("%i",s);
}
错在哪??哦运行之后输出的都是原数据。
如输入 77
输出的还是77
这是我写的可以讲任意进制数转化为十进制的
#include <iostream>
using namespace std;
int Multiply(int a,int b)
{
int aa=a;
if(b== 1) return 1;
else if(b== 2) return a;
for(int i=0;i<(b-2);++i)
{
a*=aa;
}
return a;
}
int main(int argc,char **argv)
{
while(1)
{
cout<<"请输入数字:";
char szInput[128];
cin>>szInput;
cout<<"数字的进制数:";
int i;
cin>>i;
int sum=0;
int k=0;
for(int j=strlen(szInput);j>0,k<strlen(szInput);--j,++k)
{
int dwInputbit=0;
memcpy(&dwInputbit,&(szInput[k]),1);
dwInputbit-=48;
sum+=(Multiply(i,j)*dwInputbit);
}
cout<<"对应的十进制数为:"<<sum<<endl;
}
return 0;
}
运行
追问大神,作为一个初学者我只想知道自己哪里错了啊。。。。而且你写的里面好多我们都还没学啊
追答你的pow函数哪里来的?
追问从我们c语言书里找的啊??咋了
追答。。。这个是库函数吗?如果是自己写的逻辑,你必须把定义写出来
?
不是啊 我输入77 在n=2后,77<10^2.循环结束啊,而且如果是无限循环那我再运行时系统应该报错啊,但他有输出数据啊
还是 我给你写个简单的把
public static void main(String[] args) {
int n = 545743532;
String s = String.valueOf(n);
int len = s.length();
long val = 0 ;
int temp = 0;
for(int i=0;i<len;i++)
{
String c = s.charAt(i)+"";
temp = Integer.valueOf(c).intValue();
//取出每一位 的值 * 8 的 len-1 次方
val += temp*Math.pow(8, len-i);
}
System.out.println(val);
}