1.循环应该从高位开始,因为高位应该乘16的次数多。
2.strlen从1开始计数
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
char a[10];
scanf("%s",&a);
printf("%s\n",a);
printf("%c\n",a[0]);
int len=strlen(a);
printf("%d\n",len);
printf("%c",a[len-1]);
}
输入:
abc
输出:
abc
a
3
c
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
char a[10];
scanf("%s",&a);
long long sum=0;
int length=strlen(a);
for(int i=0;i<length;i++){
sum*=16;
if(a[i]>='A'&&a[i]<='F'){
sum+=a[i]-'A'+10;
}
else if(a[i]>='0'&&a[i]<='9'){
sum+=a[i]-'0';
}
}
printf("%I64d",sum);
return 0;
}