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

1) 用递归法将一个整数n转换成字符串,例如,输入483应输出字符串"483",n的位数不确定,可以是任意位
的整数
2) 输出年,月,日,计算该日是该年的第几天。
用C语言遍

#include<stdio.h>

#include<math.h>

#include<string.h>

int main()

{

char a[10];

void convert(char a[]);

printf("请输入十六进制数:");

gets(a);//输入十六进制数

convert(a);

return 0;

}

void convert(char a[])

{

int n,i,num=0;

n=strlen(a);

for(i=n-1;i>=0;i--)

{

if(a<i>&gt;='0'&&a<i>&lt;='9')

num+=(a<i>-'0')*pow(16,n-1-i);

else if(a<i>&gt;='A'&&a<i>&lt;='Z')

num+=(10+(a<i>-'A'))*pow(16,n-1-i);

else if(a<i>&gt;='a'&&a<i>&lt;='z')

num+=(10+(a<i>-'a'))*pow(16,n-1-i);

}

printf("转换十进制为:");

printf("%d",num);

}

扩展资料:

gets()的用法:

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束;但回车符不属于这个字符串。其调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)函数输入字符串时存在一个问题,就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到回车为止。

示例:

#include&lt;stdio.h&gt;

int main()

{

char s[20];

printf("What's your name?\n");

gets(s);

printf("%s\n",s);

return 0;

}

当输入a bde回车的时候,会输出a bde。

温馨提示:内容为网友见解,仅供参考
第1个回答  2006-05-29
#include "stdio.h"

main()

{int i; long dec,htod(char d[]);

char d[10],loop='y',c;

for(;loop=='y'||loop=='Y';)

{i=0;

while((c=getchar())!='\n')

{if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f')

{d[i]=c; i++; /* 若输入的字符是十六进制允许的字符,存入d数组 */

if(i>=9)break; /* 最多九位 */

}

d[i]='\0'; /* 数组最后一个元素赋’\0’ */

dec=htod(d); /* 调用转换函数 */

}

printf("The decimal number is %ld\n",dec);

printf("continue? Y/N");

scanf("%2c",&loop);

}

}

long htod(char de[])

{ char c;

int i; long dec=0; for(i=0;(c=de[i])!='\0';i++)

/* 循环将de数组的各元素拼成十进制数 */

if(c>='0'&&c<='9')dec=dec*16+c-'0';

else if(c>='a'&&c<='f')dec=dec*16+c-'a'+10;

else if(c>='A'&&c<='F')dec=dec*16+c-'A'+10;

return dec;

}本回答被网友采纳
第2个回答  2020-02-29
flag,flag1是标志变量,主要用于控制循环,比如说
if(flag)a=100;
flag=1,条件为真,继续执行内的语句,在执行a=100;
flag=0,条件为假,不执行{}内的语句,直接执行a=100;
a[i]表示0,1,...,E(e),F(f)的ACSII码,a[i]='A(a)',a[i]-'A(a)'的意思是将char转变为int,举个例子:
a[i]=‘A’,字符A的ACSII码是65,那么a[i]-‘A’+10=10(int);
a[i]=‘B’,字符B的ACSII码是66,那么a[i]-‘A’+10=11(int);
...
a[i]=‘0’,那么a[i]-'0'=0(int);
a[i]='1',那么a[i]-'0'=1(int);
...
if((a[i]>='0')&&(a[i]<='9'))
n=n*16+a[i]-'0';
if((a[i]>='a')&&(a[i]<='f'))
n=n*16+a[i]-'a'+10;
if((a[i]>='A')&&(a[i]<='F'))
n=n*16+a[i]-'A'+10;
这就是十六转十的一种方法,你记住就行了,不用过多的追究。
第3个回答  2019-05-05
#include<stdio.h>
void
main(){
int
i=0;
int
value=0;
char
ch[10];
printf("请输入一个16进制数:");
gets(ch);
while
(ch[i])
{
if(ch[i]>='A'&&ch[i]<='F')
value=(ch[i]-55)+16*value;
else
if(ch[i]>='a'&&ch[i]<='f')
value=(ch[i]-87)+16*value;
else
if(ch[i]>='0'&&ch[i]<='9')
value=(ch[i]-48)+16*value;
else
{
printf("输入有误\n");
break;
}
i++;
}
printf("十进制数为%d\n",value);
}
第4个回答  2019-11-03
#include<stdio.h>
void
main(){
int
i=0;
int
value=0;
char
ch[10];
printf("请输入一个16进制数:");
gets(ch);
while
(ch[i])
{
if(ch[i]>='A'&&ch[i]<='F')
value=(ch[i]-55)+16*value;
else
if(ch[i]>='a'&&ch[i]<='f')
value=(ch[i]-87)+16*value;
else
if(ch[i]>='0'&&ch[i]<='9')
value=(ch[i]-48)+16*value;
else
{
printf("输入有误\n");
break;
}
i++;
}
printf("十进制数为%d\n",value);
}

写一个函数,输入一个十六进制数,输出相应的十进制数
include<string.h> int main(){ char a[10];void convert(char a[]);printf("请输入十六进制数:");gets(a);\/\/输入十六进制数 convert(a);return 0;} void convert(char a[]){ int n,i,num=0;n=strlen(a);for(i=n-1;i>=0;i--){ if(a>='0'&&a<='9')num+=(a-'0')...

c语言写一个函数,输入一个十六进制数,输出相应的十进制数
long hex2dec(char *p){ long x=0;for(;*p;p++){ if(*p>='0'&&*p<='9')x=x*16+*p-'0';else if(*p>='A'&&*p<='F')x=x*16+*p-'A'+10;else if(*p>='a'&&*p<='f')x=x*16+*p-'A'+10;else { printf("Data error!\\n");return -1;} } return x;} int main...

C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。
include<string.h> define N 1000 char str[N];int a[N],b[N];int main(void){ void zsh();long ycl();int i,n;do{ printf("请输入一个十六进制数:\\n");scanf("%s",str);for(i=0,n=0;str[i]!='\\0';i++)if(str[i]<'0'||(str[i]>'9'&&str[i]<'A')||(str[...

写一个函数,输入十六进制数,输出相应的十进制数
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++...

有C语言编写一函数,输入一十六进制数,输出相应的十进制数
\/*按要求,输入输出都在子函数中进行*\/ 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')...

C语言 写一个函数 输入一个十六进制数 输出相应的十进制
include<math.h> \/ 函数:convert 功能:十六进制转十进制 \/ void conver(char arr[]){ int i,j=0,k=0,sum=0,n=strlen(arr);int num[100];for(i=0;i<n;i++){ switch(arr){ case'A':num[j++]=10;break;case'B':num[j++]=11;break;case'C':num[j++]=12;break;case'D'...

用c语言写一个函数,输入16进制,输出相对应的10进制
y;}void main(){ char a[N]; puts("输入一个十六进制数(只能含有0-9,a-f,A-F):"); scanf("%s", a); int b = change(a, strlen(a)); printf("其对应的十进制数为: %d\\n", b); getchar(); getchar();}2 运行结果希望对你有帮助~...

...在主函数中输入十六进制数,输出相应的十进制数。
HEX_DEC(num\/N,N);} printf("%d",num%N);} void main(){ int num;printf("输入一个十六进制的数\\n");scanf("%x",&num);printf("直接用%%d输出:%d\\n",num);printf("用函数输出:");HEX_DEC(num,10);\/\/转换成几进制就把第二个参数换成几 printf("\\n");system("pause");} ...

写一个自定义函数,将输入的十六进制数转换成十进制数并输出?
int hex2dec(char *s){ int n;for(n=0;*s;s++){ if(*s>='0'&&*s<='9')n=n*16+*s-'0';else if(*s>='a'&&*s<='f')n=n*16+*s-'a'+10;else if(*s>='A'&&*s<='F')n=n*16+*s-'F'+10;} return n;} int main(){ char s[10];scanf("%s",s);printf...

用c语言编写一函数,输出相应的十进制数,输入一十六进制数
include<math.h> int change(char *);void main(){ char x[20];int y;scanf("%s",x);y=change(x);printf("%d",y);} int change(char *p){ int s=strlen(p),sum=0;for(int i=0;i='A'&&p[i]<='E')sum+=(p[i]-'A'+10)*pow(16,s-i-1);else if(p[i]>='a'&&...

相似回答