C语言---(少于80 个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转

(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。【输入形式】输入一个以回车结束的字符串【输入... (少于80 个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
【输入形式】
输入一个以回车结束的字符串
【输入输出样例1】(下划线部分表示输入)
Input a string: 10
Hex=16

#include<stdio.h>
int main()
{
int i=0,j=0,end=0;
char a[79],b[79];
printf("Input a string: ");
while((a[i]=getchar( ))!='\n')
i++;
a[i]='\0';
for(i=0;i<=79;i++){
if ((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='F')||(a[i]>='a'&&a[i]<='f'))
{
b[j]=a[i];
j++;
}
}
b[j]='\0';

for(j=0;j!='\0';j++){
if (b[j]>='0'&&b[j]<='9')
end=end*16+b[j]-'0';
else if(b[j]>='A'&&b[j]<='F')
end=end*16+b[i]-'A'+10;
else
end=end*16+b[i]-'a'+10;
printf("Hex=%d",end);
}
return 0;
}

为什么没有输出值?
展开
 我来答
a652570001
推荐于2018-04-24 · TA获得超过129个赞
知道答主
回答量:153
采纳率:0%
帮助的人:172万
展开全部
#include<stdio.h>
#include <string.h>
int main()
{
int i=0,j=0,end=0;
char a[79],b[79];
printf("Input a string: ");
while((a[i]=getchar( ))!='\n')
i++;
a[i]='\0';
for(i=0;i<=strlen(a);i++){
if ((a[i]>='0'&&a[i]<='9')||(a[i]>='A'&&a[i]<='F')||(a[i]>='a'&&a[i]<='f'))
{
b[j]=a[i];
j++;
}
}
b[j]='\0';

for(j=0;b[j]!='\0';j++){
if (b[j]>='0'&&b[j]<='9')
end=end*16+b[j]-'0';
else if(b[j]>='A'&&b[j]<='F')
end=end*16+b[i]-'A'+10;
else
end=end*16+b[i]-'a'+10;
}
printf("Hex=%d",end);

return 0;
}
更多追问追答
追问
看不出来哪里改了... = =
追答
for(i=0;i<=strlen(a);i++){
你的数组越界了,有可能没有输入那么多数
蓝天白245
2012-05-05
知道答主
回答量:18
采纳率:0%
帮助的人:15.3万
展开全部
其实你在最后一个for语句里缺东西。for(j=0;j!='\0';j++)中应该这样for(j=0;b[j]!='\0';j++)
别的就不给你改了哈。你这样写的话相当于没有b数组什么事,是不对的。
按我说的改一下会有输出的,至于输出什么是你自己的事了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
slxb
2012-05-05 · 超过21用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:63.4万
展开全部
输入不对getchar,用gets()直接读取字符串;
追问
书上用的就是getchar输入的矩阵啊...这个应该没问题吧...不是很理解你说的....
追答
你这个是字符串不是矩阵。
#include
int main()
{
int i=0,j=0,end=0;
char a[79],b[79];
printf("Input a string: ");
while((a[i]=getchar( ))!='\n')
i++;
这些改成
#include
int main()
{
int i=0,j=0,end=0;
char a[79],b[79];
printf("Input a string: ");
gets(a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式