C++滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。

输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。输入输出示例:括号内为说明输入:... 输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10
+A
输出:
Dec = 16
Dec = 10

#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;

scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;

k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);

/*---------*/
printf("Dec = %ld\n",number);
}
return 0;
}

我哪里写错了呀!!!!
急求高手帮忙啊~~~~~~~!!!!!!
恩,定义部分应该没问题,这是个程序填空,定义的地方是题目给出的。。。。
k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else
number=number*16+(num[k]-'A'+10);

这段是我自己写的。。。
展开
 我来答
希望村村民
2010-01-15 · TA获得超过1589个赞
知道小有建树答主
回答量:1187
采纳率:100%
帮助的人:981万
展开全部
i表示字符串长度
for(i=0;str[i]!=0;i++)
写成for(k=0;k<i;k++)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xingruliushui
推荐于2016-03-25
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
#include "string.h"
#define MAXLEN 80
int main(void)
{
char ch;
char str[MAXLEN], num[MAXLEN];
int i, k;
int repeat, ri;
long number;

scanf("%d", &repeat);
getchar();
for(ri = 1; ri <= repeat; ri++){
i = 0;
while((ch = getchar()) != '\n'){
str[i]=ch;
i++;
}
str[i] = 0;

k=0;number=0;
for(i=0;str[i]!=0;i++)
if(str[i]>='0'&&str[i]<='9'||str[i]>='A'&&str[i]<='F'||str[i]>='a'&&str[i]<='f'){
num[k]=str[i];
k++;
}
num[k]=0;
for(k=0;num[k]!=0;k++)
if(num[k]>='0'&&num[k]<='9')
number=number*16+(num[k]-'0');
else if(num[k]>='A'&&num[k]<='F')
number=number*16+(num[k]-'A'+10);
else
number=number*16+(num[k]-'a'+10);
printf("Dec = %ld\n",number);
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式