c语言题目:编写一函数,输入一个十六进制数,输出一个对应的十进制数.将输入的数用字符串的形式表达

2024-11-07 19:22:17
推荐回答(2个)
回答(1):

编写一函数!
请注意是一个函数,虽然
#include
void main()
{
int a=0;

printf("please input your number:\n");
scanf("%x",&a);
printf("the result is %d",a);
getch();
}
也可以,但这绝不是题目要求。

#include "stdio.h"
#include "string.h"

long DEC( char *HEX );
int Ture( char *HEX );

void main( void )
{
char HEX[30];
int ture;
clrscr();

do
{
printf("\nPlease input a HEX number blow : \n");
gets( HEX );
if( ture=Ture(HEX) )
printf("\nWrong ! Try Again !");
}while( ture );

printf("\nThe Result is :");
printf(" HEX (%s) = DEC (%ld) ",HEX,DEC(HEX));

}

long DEC( char *HEX )
{
long decvalue=0;
int i=0;

for( i=0 ; i{
if(*(HEX+i)>='A'&&*(HEX+i)<='F')
{
decvalue*=16;
decvalue+=*(HEX+i)-'A'+10;
}
if(*(HEX+i)>='0'&&*(HEX+i)<='9')
{
decvalue*=16;
decvalue+=*(HEX+i)-'0';
}
}

return decvalue;
}

int Ture( char *HEX )
{
int i;
int flag=0;

for( i=0 ; i{
if((*(HEX+i)>='a')&&(*(HEX+i)<='f'))
{
*(HEX+i)+='A'-'a';
flag++;
}
else if((*(HEX+i)>='A')&&(*(HEX+i)<='F'))
{
flag++;
}
else if((*(HEX+i)>='0')&&(*(HEX+i)<='9'))
{
flag++;
}
else
{
flag--;
}
}

return(strlen(HEX)-flag);
}

你也可以把Ture和DEC合在一块

也可以不要Ture

回答(2):

#include "stdio.h"
int main( )
{ int i, number=0;
char num[80];
gets(num);
for(i=0;num[i]!='\0';i++){
if(num[i]<='9'&&num[i]>='0')
number=number*16+num[i]-'0';
else if(num[i]>='A'&&num[i]<='F')
number=number*16+(num[i]-'A'+10);
else if(num[i]>='a'&&num[i]<='f')
number=number*16+(num[i]-'a'+10);}
printf("%d\n",number);
}
可以了