将十六进制数转化为十进制的c语言,这段代码哪里有问题?

2024-11-16 04:38:27
推荐回答(2个)
回答(1):

#include
char
num[100];
int
main()
{
char
flag;
int
sign=0;
printf("请输入一个十六进制数");
gets(num);
//int
transform();//将这一句删除
printf("转换后的数为:%d",transform());
while(sign!=1)
{printf("continueor
not
?");
scanf("%c",&flag);
if(flag=='n'||flag=='n')
sign=1;
if(flag=='y'||flag=='y')
{
printf("请输入一个十六进制数");
gets(num);
printf("转换后的数为:%d",transform());}
return
0;
}
}
int
transform()
{
int
i,n=0;
for(i=0,num[i]!='\0';i<10;i++)
{
if(num[i]>'0'
&&
num[i]<'9'
)
n=n*16+num[i]-'0';
if(
num[i]>'a'
&&
num[i]<'f'
)
n=n*16+num[i]-'a'+10;
if(
num[i]>'a'
&&
num[i]<'f'
)
n=n*16+num[i]-'a'+10;
}
return(n);
}

回答(2):

#include

char
num[100];
int
main()
{
char
flag;
int
sign=0;
printf("请输入一个十六进制数");
gets(num);
//int
transform();//将这一句删除
printf("转换后的数为:%d",transform());
while(sign!=1)
{printf("continueor
not
?");
scanf("%c",&flag);
if(flag=='n'||flag=='N')
sign=1;
if(flag=='y'||flag=='Y')
{
printf("请输入一个十六进制数");
gets(num);
printf("转换后的数为:%d",transform());}
return
0;
}
}
int
transform()
{
int
i,n=0;
for(i=0,num[i]!='\0';i<10;i++)
{
if(num[i]>'0'
&&
num[i]<'9'
)
n=n*16+num[i]-'0';
if(
num[i]>'a'
&&
num[i]<'f'
)
n=n*16+num[i]-'a'+10;
if(
num[i]>'A'
&&
num[i]<'F'
)
n=n*16+num[i]-'A'+10;
}
return(n);
}