写一个函数,输入十六进制数,输出相应的十进制数

那个可否用自定义函数

方法一:

#include<stdio.h>

#include<math.h>

#include<string.h>

void xtod(char s[]);//定义转制函数

int main()

{

char str[10];

printf("Please enter Hex number:");//输入一个字符串

scanf("%s",str);

xtod(str);//调用转制函数

return 0;

}

//转制函数

void xtod(char s[])

{

int i,j,n=strlen(s);

double num[10],sum;

//以下是判断输入的数是否是合法的十六进制数,不是就报错并重新输入

for(i=0;i<n;i++)

if(s<i><'0'||

(s<i>>'9'&&s<i><'A')||s<i>>'f'||

(s<i>>'F'&&s<i><'a')||n>10){

printf("Error!\nPlease enter Hex number:");

scanf("%s",s);

}

//以下将输入的字符转换为十进制数字

for(i=0;i<n;i++){

if(s<i>>='0'&&s<i><='9')

num<i>=s<i>-'0';

if(s<i>>='a'&&s<i><='f')

num<i>=(int)s<i>-87;

if(s<i>>='A'&&s<i><='F')

num<i>=(int)s<i>-55;

}

//将数字转为十进制

for(i=0,j=n-1,sum=0.0;i<n;

sum+=num<i>*pow(16,j),i++,j--);

printf("Decimal number:%.0f\n",sum);

}

方法二、

#include<stdio.h>

void xtod(int x);//定义转制函数

int main()

{

int i;

scanf("%x",&i);//输入一个十六进制数

xtod(i);//调用转制函数

return 0;

}

//转制函数

void xtod(int x)

{

printf("%d\n",x);

}

扩展资料:

①printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。

格式输出,它是c语言中产生格式化输出的函数(在stdio.h中定义)。用于向终端(显示器、控制台等)输出字符。格式控制由要输出的文字和数据格式说明组成。

要输出的文字除了可以使用字母、数字、空格和一些数字符号以外,还可以使用一些转义字符表示特殊的含义。

简单点理解就是,在一段程序中你正确使用该函数,可以在该程序运行的时候输出你所需要的内容。

②printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。

格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。

如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%C”表示按字符型输出等。

非格式字符串在输出时原样照印,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

参考资料:

百度百科——printf

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27
#include <stdio.h>
void main()
{
int n;
printf("请输入一个十六进制整数\n");
scanf("%X",&n);
printf("转换为十进制的数是:%d\n",n);
}

楼上写的那个程序有点问题,就是有半个双引号是中文状态下的

本回答被网友采纳
第2个回答  2012-12-14
你还是有编程基础的,我帮你写个思路,你照着编一定能成的。
STR为输入的字符串。
取得STR字符长度=LEN,也就是16的多少次方。
循环:变量i =0到LEN-1
依次计算STR将的每一位,并累加。ASCII值在48-57之间的 减48就是数字;在65-70之间的减55;在97-102之间减87。(ASCII数值不在上述范围的,报错误信息)
再根据所在位乘16的 i 次方。
循环结束。
累加的结果就是十进制了。
第3个回答  2013-05-04
最简单的程序;
# include <stdio.h>
void main()
{int n;
printf("请输入一个十六进制整数“);
scanf("%X",&n);
printf("%d",n);
}
第4个回答  2013-05-05
#include "stdio.h"
#include <string.h>

int fun(char s[])
{
int i,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);
}

void main()
{
char a[10];

printf("输入一个十六进制数:\n");
scanf("%s",a);
printf("%d\n",fun(a));
}
相似回答