#include<iostream>
#include<cstdio>
using namespace std;
int main(){
char c;
int i;
int j = 0,l = 0;
int a[1000]={0};//开个1000的整数数组用来存数
for(i = 0;;i++){
c=getchar();//接受输入的字符
if(c == '#')break;//当接收到#退出循环
if(c == '-'&&j == 0&&l == 0){//当无整数存入数组a中并且得到- j自加
j++;
}
switch(c){//根据字符给数组赋值
case'0':
a[l]=0;
l++;
break;
case'1':
a[l]=1;
l++;
break;
case'2':
a[l]=2;
l++;
break;
case'3':
a[l]=3;
l++;
break;
case'4':
a[l]=4;
l++;
break;
case'5':
a[l]=5;
l++;
break;
case'6':
a[l]=6;
l++;
break;
case'7':
a[l]=7;
l++;
break;
case'8':
a[l]=8;
l++;
break;
case'9':
a[l]=9;
l++;
break;
case'A':
a[l]=10;
l++;
break;
case'a':
a[l]=10;
l++;
break;
case'B':
a[l]=11;
l++;
break;
case'b':
a[l]=11;
l++;
break;
case'C':
a[l]=12;
l++;
break;
case'c':
a[l]=12;
l++;
break;
case'D':
a[l]=13;
l++;
break;
case'd':
a[l]=13;
l++;
break;
case'E':
a[l]=14;
l++;
break;
case'e':
a[l]=14;
l++;
break;
case'F':
a[l]=15;
l++;
break;
case'f':
a[l]=15;
l++;
break;
}
}
int sum = 0;
l=l-1;//因为得到最后一个整数时,l做了自加运算,所以l需要减1
int p = 1;
for(;l >= 0; l--){//从后往前遍历数组
sum+=p*a[l];
p=p*16;
}
if(j == 0)printf("%d",sum);//无负号
if(j != 0 && sum != 0)//有负号并且加和不等于0
printf("-%d",sum);
if(j != 0&&sum == 0)printf("0");有负号并且加和等于0
return 0;
}
PTA6-26 字符串转换成十进制整数 (15分)
最新推荐文章于 2024-03-20 23:01:07 发布