使用数组,编写一个任意进制正整数转换为十进制的转换工具。

来源:互联网 发布:ak47军刺多少钱淘宝 编辑:程序博客网 时间:2024/05/16 23:59
使用数组,编写一个任意进制正整数转换为十进制的转换工具。(以2,10进制互转为例,其
他请举一反三:

二进制数1101转十进制:1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=13)


解题分析:

对于这道题目来说,自己想的复杂了,其实就是一个基本的数学公式考察,

还有一点注意的是,你想一下当你存储1101的时候输出这个字符数组里对应的数字的时候的时候

是否还是原来的1101,答案并不是这样的,当你把数字存入到字符数组当中的时候,在输出,所输出的是相应数字对应的ASCII码,因此需要转换

例如:
str[str[i] - '0']

这样就可以正确的输出你要输出的数字了。


代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#define MAXN 10000
using namespace std;
int main()
{
int n, ans = 0, sum = 1;
char str[MAXN];
scanf("%d %s", &n, str);
for(int i = strlen(str); i > 0; i--)
{
ans = ans + (str[i - 1] - '0') * sum;
sum *= n;
}
printf("%d\n", ans);
}


0 0
原创粉丝点击