5-9 字符串转换成十进制整数 (15分)
2017-07-06 20:46
309 查看
5-9 字符串转换成十进制整数 (15分)
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入格式:
输入在一行中给出一个以#结束的非空字符串。输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。输入样例:
+-P-xf4+-1!#
输出样例:
-3905
这个题非常值得借鉴。要注意R进制转换成十进制的方法,sum=sum*R+a[i],i从0开始的,非常好。。
还要注意他的处理方法。。
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; int main() { string s; int b[10010]; getline(cin,s); int p=1,flag=0,j=0; for(int i=0;i<s.size();i++) { if(s[i]=='-'&&flag==0) { p=-1; } if(s[i]<'g'&&s[i]>='a') b[j++]=s[i]-'a'+10,flag=1; else if(s[i]<'G'&&s[i]>='A') b[j++]=s[i]-'A'+10,flag=1; else if(s[i]>='0'&&s[i]<='9') b[j++]=s[i]-'0',flag=1; } int sum=0; for(int i=0;i<j;i++) { sum=sum*16+b[i]; } printf("%d\n",p*sum); }
相关文章推荐
- 字符串转换成十进制整数 (15分)
- 5-1 字符串转换成十进制整数 (15分)
- 5-1 字符串转换成十进制整数 (15分) (这是补上的7月6号)
- PTA-字符串转换成十进制整数
- 8.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数
- 数组-08. 字符串转换成十进制整数(15)
- pta中 字符串转换成十进制整数
- 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, 然后打印出这个十进制整数对应的二进制形式。
- 字符串转换成十进制整数
- 字符串转换成十进制整数
- 数组-08. 字符串转换成十进制整数(15)
- 数组-08. 字符串转换成十进制整数(15)
- 7-39 字符串转换成十进制整数(15 分)
- 字符串转换成十进制整数 十六进制转换十进制
- 数组-08. 字符串转换成十进制整数(15)
- 数组-08. 字符串转换成十进制整数(15)
- 十六进制字符串转换成十进制整数 天梯赛模拟题重现一
- 数组-08. 字符串转换成十进制整数
- 数组-08. 字符串转换成十进制整数(15)
- 数组-08. 字符串转换成十进制整数(15)