思路是把十六进制ABCD定义成一个数组,利用a[i]*16^ i算出每一个字母的十进制数存到ret中,用循环再加在sum里面。能不能实现
#include <stdio.h>
int main( )
{
int A=10; int B=11; int C=12; int D=13;int E=14;int F=15;
//i 0 1 2 3
char [4]={A,B,C,D}
// j 1 2 3 4
int i=0;
int j=4;
int sum;
int ret;
while(i<4,j<5)
{
ret=a[i]*16^j-1;
sum +=ret ;
i++;j--;
if(j == -1)
break;
}
printf("%d",sum);
return 0;
}
用%d和%x匹配符做岂不是更快
#include <stdio.h>
int main(void) {
int a = 0;
scanf("%x", &a);
printf("a = %d", a);
return 0;
}
修改如下,供参考:
#include <stdio.h>
#include <math.h> //修改
int main( )
{
int A=10; int B=11; int C=12; int D=13;int E=14;int F=15;
//i 0 1 2 3
char a[4]={'A','B','C','D'}; //修改
// j 1 2 3 4
int i=0;
int j=4;
int sum = 0 ;
int ret;
while(i<4 && j<5) //(i<4,j<5)//修改
{
ret=(a[i]-'A'+ 10)*pow(16,j-1); //16^j-1;//修改
sum +=ret ;
i++;j--;
//if(j == -1) //修改
//break; //修改
}
printf("%d",sum);
return 0;
}