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;
}
为什么没有输出值? 展开
【输入形式】
输入一个以回车结束的字符串
【输入输出样例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;
}
为什么没有输出值? 展开
3个回答
展开全部
#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;
}
#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++){
你的数组越界了,有可能没有输入那么多数
展开全部
其实你在最后一个for语句里缺东西。for(j=0;j!='\0';j++)中应该这样for(j=0;b[j]!='\0';j++)
别的就不给你改了哈。你这样写的话相当于没有b数组什么事,是不对的。
按我说的改一下会有输出的,至于输出什么是你自己的事了。
别的就不给你改了哈。你这样写的话相当于没有b数组什么事,是不对的。
按我说的改一下会有输出的,至于输出什么是你自己的事了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入不对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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询