题目描述
Description
将m进制数n转化成一个十进制数 m<=16
题目保证转换后的十进制数<=100
输入描述
Input Description
共一行
n和m
输出描述
Output Description
共一个数
表示m进制的n化成十进制的数
样例输入
Sample Input
1010 2
样例输出
Sample Output
10
数据范围及提示
Data Size & Hint
乘权累加法
【1】求字符串长度
str L L.length()和L.size()都可以 头文件 string.h
char L[100] strlen(L) 头文件 string.h
【2】字符串和整形之间的转换 头文件#include <stdlib.h>
char L[100]
int number=12345
itoa(number,L,10);把12345按照十进制写入L;
number=atoi(L);把L转化为整形,存入number;
itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用 的基数。在上例中,转换基数为10。10:十进制;2:二进制
【3】字符char和整形直接的转化
char c;
int a;
a=int(c)-'0';
1.int/float to string/array:
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
2. string/array to int/float
C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
● atof():将字符串转换为双精度浮点型值。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
● itoa():将整型值转换为字符串。
● ltoa():将长整型值转换为字符串。
● ultoa():将无符号长整型值转换为字符串。
● gcvt():将浮点型数转换为字符串,取四舍五入。
● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。
● fcvt():指定位数为转换精度,其余同ecvt()。
2. string/array to int/float
C/C++语言提供了几个标准库函数,可以将字符串转换为任意类型(整型、长整型、浮点型等)。
● atoi():将字符串转换为整型值。
● atol():将字符串转换为长整型值。
● strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
● strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
● strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int m,l,ans=0;
char n[1000];
int a[100]={0};
cin>>n>>m;
int k=1;
l=strlen(n);
for(int j=0;j<=l-1;j++)
{
if(int(n[j])<=int('9')){a[j]=int(n[j])-'0';}
if(n[j]=='A'){a[j]=10;}
if(n[j]=='B'){a[j]=11;}
if(n[j]=='C'){a[j]=12;}
if(n[j]=='D'){a[j]=13;}
if(n[j]=='E'){a[j]=14;}
if(n[j]=='F'){a[j]=15;}
}
for(int j=l-1;j>=0;j--)
{
ans=ans+k*a[j];
k=k*m;
}
cout<<ans;
return 0;
}
其他应用
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int m,l,ans=0;
char n[1000];
m=47;
itoa(m,n,16);
l=strtol(n,NULL,16);//atoi只能进行10进制
cout<<"n="<<n<<endl;
cout<<"l="<<l;
return 0;
}
输出:n=2f l=47