题目内容:
运用指针技术实现,将输入的十六进制数的字符串转换为对应的十进制整数并输出。``
输入格式:
以字符串形式输入一个16进制数
输出格式:
输出该16进制数转换后的十进制数
输入样例:
12AB3d
输出样例:
1223485
代码如下
#include<iostream>
using namespace std;
int main(){
char temp[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
char num[100];
cin.getline(num,100);
char*p=num;
int n=0;
int i;
while(*p){
if(*p>='a'&&*p<='f'){
*p=*p+'A'-'a';
}//全部转化为大写
p++;
}
p=num;
while(*p){
for(i=0;temp[i]!=*p;i++){
}
n=n*16+i;
p++;
}
cout<<n;
return 0;
}
注意指针递增的位置
while(*p){
if(*p>='a'&&*p<='f'){
*p=*p+'A'-'a';
}//全部转化为大写
p++;
}
这一段代码中,先在if块中将*p转化为大写后,在在if语句外面自增指针p,不要写到if内部了
while(*p){
for(i=0;temp[i]!=*p;i++){
}
n=n*16+i;
p++;
}
这一段通过一个没有操作的for循环找到*p对应的i,再后面求n的值以及对p的自增都在for循环外部
-
所以在循环中进行指针自增,要注意是否在循环内自增
-
巩固
while(*p)
的使用