问题描述 :
编写一个程序,将一个2~20以内任意进制数转换成十进制。这些数据由数字0-9,大写字母A-J组成,其中A=10,B=11……J=19。例如16进制数5A转换为十进制数90(90=516+101)。
输入说明 :
程序需要输入多组数据,每组数据一行,每行有两个数,用空格隔开,分别表示当前进制数和被转换的数据。输入数据十进制数大小不会超过10000,例如:16 5A 表示将16进制数5A转换成10进制数。
输出说明 :
对于每行输入数据需输出一个结果。每个结果为一个十进制的数。例如:16 5A需输出结果90。
输入范例:
16 5A
2 1111111
输出范例:
90
127
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(){
char str[101];
int i,len,sum,temp,n,a;
while(scanf("%d %s",&n,str)!=EOF){
len=strlen(str);
sum=0;
a=1;
for(i=len-1;i>=0;i--){
if(isupper(str[i]))
temp=(str[i]-'A')+10;
else
temp=str[i]-'0';
sum+=temp*a;
a*=n;
}
printf("%d\n",sum);
}
return 0;
}
37 十进制转换成其它进制`
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void trans(int a,int b,char res[]){
int i,temp;
i=0;
if(a>0){
while(a>0){
temp=a%b;
if(temp>9){
res[i++]=temp-10+'A';
}
else{
res[i++]=temp+'0';
}
a/=b;
}
res[i]='\0';
strrev(res);
puts(res);
}
else //如果整数位0的特殊情况
printf("0\n");
}
int main(){
char str[101];
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
trans(n,m,str);
}
return 0;
}
38,39 没啥意思 直接跳过去