黄金视力眼贴真的假的:写一个函数,输入一个十六进制数,输出相应的十进制数

来源:百度文库 编辑:高考问答 时间:2024/05/09 13:11:46
1) 用递归法将一个整数n转换成字符串,例如,输入483应输出字符串"483",n的位数不确定,可以是任意位
的整数
2) 输出年,月,日,计算该日是该年的第几天。
用C语言遍

#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;

}