跪求7进制转化10进制C++程序

来源:百度知道 编辑:UC知道 时间:2024/05/26 21:28:33
不能递归和用字符串。用函数

#include<iostream>
using namespace std;
int to10(int num)
{
int a,b,c,i,j;
int sum=0;
a=num/10;
b=num%10;
c=1;
while(a)
{
for(i=0,j=1;i<c;i++)
j*=7;
if(a<10)
{
sum+=a*j+b*j/7;
}
else
{
sum+=b*j/7;
}
c++;
b=a%10;
a=a/10;
}
return sum;
}
int main()
{
printf("%d",to10(1000));

}

int to10(char * s)
{
int i = 0;
int total = 0;
while(s[i]>='0'&&s[i]<=6)
{
total+ =7*( s[i]-'0');
}
return total;
}

纯数学算法
int decimal2septenary(int d)
{
// 位数
int n = floor(log(d)/log(7)) + 1;
int sep(0);
for(int i=0;i<n;i++)
{
int digit = d % 7;
d -= digit;
d /= 7;
sep += digit * 10 ^ i;
}

return sep;
}