十六进制字符转为十进制数
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例如:输入"JKL1A#BPF%...
输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,
组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例如:
输入"JKL1A#BPF%”,则先转化成"1ABF",然后再转化成十进制数6847。
我这个编程哪里错了?
main()
{
char a[80], b[80];
int i, j=0, k=0, x;
gets(a);
for(i=0; i<80; i++)
{
if (a[i]>='0' && a[i]<='9' || a[i]>='A' && a[i]<='F')
{
b[j]=a[i];
j++;
}
}
b[j]='\0';
while(b[k]!='\0')
{
if(b[k]>='0' && b[k]<='9')
x = x*16 + b[k] - '0';
else
x = x*16 + b[k] - 'A' + 10;
k++;
}
printf("%d", x);
} 展开
组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例如:
输入"JKL1A#BPF%”,则先转化成"1ABF",然后再转化成十进制数6847。
我这个编程哪里错了?
main()
{
char a[80], b[80];
int i, j=0, k=0, x;
gets(a);
for(i=0; i<80; i++)
{
if (a[i]>='0' && a[i]<='9' || a[i]>='A' && a[i]<='F')
{
b[j]=a[i];
j++;
}
}
b[j]='\0';
while(b[k]!='\0')
{
if(b[k]>='0' && b[k]<='9')
x = x*16 + b[k] - '0';
else
x = x*16 + b[k] - 'A' + 10;
k++;
}
printf("%d", x);
} 展开
4个回答
展开全部
#include<stdio.h>
#define MAX 1000
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i<MAX&&flag1)
{
if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("contiune or not?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
(此程序已上机测试过,没错误。)
#define MAX 1000
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i<MAX&&flag1)
{
if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("contiune or not?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
(此程序已上机测试过,没错误。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include"stdio.h"
void main()
{
char a[80], b[80];
int i, j=0, k=0, x=0;
gets(a);
for(i=0; i<80; i++)
{
if (a[i]>='0' && a[i]<='9' || a[i]>='A' && a[i]<='F')
{
b[j]=a[i];
j++;
}
}
b[j]='\0';
while(b[k]!='\0')
{
if(b[k]>='0' && b[k]<='9')
x = x*16 + b[k] - '0';
else
x = x*16 + b[k] - 'A' + 10;
k++;
}
printf("%d", x);
}
//这样就好了,你的x没有赋初值,所以出错,初值x=0就行了
void main()
{
char a[80], b[80];
int i, j=0, k=0, x=0;
gets(a);
for(i=0; i<80; i++)
{
if (a[i]>='0' && a[i]<='9' || a[i]>='A' && a[i]<='F')
{
b[j]=a[i];
j++;
}
}
b[j]='\0';
while(b[k]!='\0')
{
if(b[k]>='0' && b[k]<='9')
x = x*16 + b[k] - '0';
else
x = x*16 + b[k] - 'A' + 10;
k++;
}
printf("%d", x);
}
//这样就好了,你的x没有赋初值,所以出错,初值x=0就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#define MAX 1000
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i<MAX&&flag1)
{
if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("contiune or not?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
#define MAX 1000
void main()
{
int htoi(char s[]);
int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
printf("\ninput a HEX number:");
while((c=getchar())!='\0'&&i<MAX&&flag1)
{
if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{
flag=1;
t[i++]=c;
}
else if(flag)
{
t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("contiune or not?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{
flag=0;
i=0;
printf("\ninput a HEX number:");
}
}
}
}
int htoi(char s[])
{
int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<= '9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x没有赋初值0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询