写一个函数,输入一个十六进制数,输出相应的是进制数。
编程如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
void main()
{
char t[20],c;
long htoi(char []);
do
{
printf("/ninput a HEX number:");
gets(t);
printf("decimal number:%ld/n",htoi(t));
printf("continue or not?(y/n)");
scanf(" %c",&c);
}while(c=='y'||c=='Y');
getch();
}
long htoi(char a[])
{
int i;
long n=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]>='0'&&a[i]<='9')
n=n*16+a[i]-'0';
else if(a[i]>='a'&&a[i]<='f')
n=n*16+a[i]-'a'+10;
else if(a[i]>='A'&&a[i]<='F')
n=n*16+a[i]-'A'+10;
}
return(n);
}
运行:
input a HEX number:a11
decimal number:2577
continue or not?(y/n)y
input a HEX number:decimal number:0
continue or not?(y/n)
红色为输入,其他为程序自行输出。
将程序中接收输入的十六进制字符的语句gets(t);改为scanf("%s",t);后程序正常。
input a HEX number:a11
decimal number:2577
continue or not?(y/n)y
input a HEX number:10
decimal number:16
continue or not?(y/n)
不知道gets和scanf有什么区别。