c语言写一个函数,输入一个十六进制数,输出相应的十进制数
/*写一个函数,输入一个十六进制数,输出相应的十进制数*/#include<stdio.h>intmain(){intshiliu(inta);inta,b;printf...
/*写一个函数,输入一个十六进制数,输出相应的十进制数*/
#include<stdio.h>
int main()
{ int shiliu(int a);
int a,b;
printf("please input a 16 figure\n");
scanf("%x",&a);
b=shiliu(int (a));
printf("%d\n",b);
return 0;
}
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')n=n*16+x-'0';
if(x>='a'&&x<='f')n=n*16+x-'a'+10;
if(x>='A'&&x<='F')n=n*16+x-'A'+10;
return (n);
} 展开
#include<stdio.h>
int main()
{ int shiliu(int a);
int a,b;
printf("please input a 16 figure\n");
scanf("%x",&a);
b=shiliu(int (a));
printf("%d\n",b);
return 0;
}
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')n=n*16+x-'0';
if(x>='a'&&x<='f')n=n*16+x-'a'+10;
if(x>='A'&&x<='F')n=n*16+x-'A'+10;
return (n);
} 展开
6个回答
展开全部
/*按要求,输入输出都在子函数中进行*/
#include <stdio.h>
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();
}
#include <stdio.h>
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<stdio.h>
#include<string.h>
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<strlen(array);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);
}
追问
我改成void了还是不行,能不能指点一下(逃~
追答
#include<stdio.h>
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')
n=n*16+x-'0';
else if(x>='a'&&x<='f')
n=n*16+x-'a'+10;
else if(x>='A'&&x<='F')
n=n*16+x-'A'+10;
return (n);
}
int main()
{
int b;
char a;
printf("please input a 16 figure\n");
scanf("%c",&a);
b=shiliu((int)a);
printf("%d\n",b);
return 0;
}
这是拿你的程序改的(因为纯手打,所以我就懒得多写一句声明了,于是就把两个函数换了一下位子)
(额……你改追问啦……不是VOID的问题,我只是想提醒你一下你原来的程序没有检测十六进制里面10到15的那些个字母的问题)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int
main()
{
char
a[32];
printf("输入一个十六进制:\n");
scanf("%s",a);
printf("相应的10进制是:%s\n",trans(a));
}
//朋友说下,你那个进制转换函数,要么输出十进制数的每一位,要么返回十进制啊
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位,可以自己以这种形式编一个循环
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 <stdio.h>
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
请按任意键继续. . .
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
请按任意键继续. . .
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询