/*按要求,输入输出都在子函数中进行*/
#include
void fun(void)
{
int a=0,i;
char str[6];
printf("输入十六进制数:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
a=a*16+str[i]-48;
else
if(str[i]>='a'&&str[i]<='z')
a=a*16+str[i]-'a'+10;
else
a=a*16+str[i]-'A'+10;
printf("对应的十进制数为:%d\n",a);
}
int main(void)
{
fun();
getchar();
}
反问你一个问题:如果你输入的是int型,那么怎么会有字符型的出来呢?
可以参考一下别人写的代码:
#include
#include
void main()
{
char array[100];
void fun(char*);
gets(array);
fun(array);
}
void fun(char array[100])
{
int sum=0,i;
for(i=0;i{
sum*=16;
if('0'<=array[i]&&array[i]<='9')
sum+=array[i]-'0';
if('a'<=array[i]&&array[i]<='z')
sum+=array[i]-'a'+10;
if('A'<=array[i]&&array[i]<='Z')
sum+=array[i]-'A'+10;
}
printf("%d",sum);
}
int
main()
{
char
a[32];
printf("输入一个十六进制:\n");
scanf("%s",a);
printf("相应的10进制是:%s\n",trans(a));
}
//朋友说下,你那个进制转换函数,要么输出十进制数的每一位,要么返回十进制啊
int lox_16,lox_10;
cin>>hex>>lox_16; //c中用(scanf())输入的是4位16进制数
//将16进制数转换为10进制数 注意lox_16已经为16进制数
lox_10=lox_16/1000*pow(10,3)+lox_16/100%10*pow(10,2)+lox_16%100/10*pow(10,1)+lox_16%10*pow(10,0); //lox_16 是4位的,不是4位,可以自己以这种形式编一个循环
#include
void main( void )
{
int i;
printf( "\n\nEnter an HEX number :\n");
scanf( "%x", &i );
printf( "The decimal number is: %d \n", i);
}
运行结果:
Enter an HEX number :
0xffff
The decimal number is: 65535
请按任意键继续. . .