字符串转换成十进制整数

输入一个以“#”结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果过滤后字符串的首字符为“-”,代表该

注意
感觉题意有点不清,“如果过滤后字符串的首字符为“-””有点模糊,迷迷糊糊就做了。。。。。下面的代码是按照第一个十六进制字符之前是否有“-”做的。

#include <stdio.h>
int main()
{
	char s[80],str[80];
	int k=0,m=0;
	int flag=1,mark;
	int num=0;
	while((s[k]=getchar())!='#')
	k++;
	s[k]='\0';
	for(int i=0;s[i]!='\0';i++)
	if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='f')||(s[i]>='A'&&s[i]<='F'))
		{  //找出第一个十六进制字符所在的位置
			mark=i;
			break;
		}
	for(int i=0;i<mark;i++)//看看第一个十六进制字符前面有没有负号
	if(s[i]=='-')
	{  
		flag=0;
		break;	
	}
	for(int i=0;s[i]!='\0';i++)  //提取所有十六进制字符
		if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='f')||(s[i]>='A'&&s[i]<='F'))
		{
			str[m]=s[i];
			m++;
		}
	str[m]='\0';
	for(int i=0;str[i]!='\0';i++)//将十六进制字符转换成十进制数
	{
		if(str[i]>='0'&&str[i]<='9')
		num=num*16+str[i]-'0';
		else if(str[i]>='a'&&str[i]<='f')
		num=num*16+str[i]-'a'+10;
		else if(str[i]>='A'&&str[i]<='F')
		num=num*16+str[i]-'A'+10;
	}
	if(flag==0)
	num=-num;
	printf("%d",num);

	return 0;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值