键盘输入一串字符,看作十六进制数,先将其转换为十进制整数输出 ,再转换为八进制形式输出。在main中输入数据时,要求做合法性检查,若输入的字符串不能构成十六进制数,重新输入
就差是否由数字和A-F组成,然后进行进制转换
#include <stdio.h>
int main()
{
char s[100];
int e[100];
int n=0,i,k=0;
long long data = 0;
char ch = getchar();
while(ch != '\n')
{
if((ch >='0' && ch<='9') || (ch>='A' && ch<='F') || (ch>='a' && ch<='f'))
s[n++] = ch;
else
printf("字符不是十六进制字符");
ch = getchar();
}
for(i=0;i<n;i++)
{
if(s[i]>='0' && s[i]<='9')
data = data*16 + s[i] - '0';
else if(s[i] >='A' && s[i] <='F')
data = data * 16 + s[i] - 'A'+10;
else if(s[i] >= 'a' && s[i] <= 'f')
data = data * 16 + s[i] - 'a'+10;
}
printf("十进制为:%d\n",data);
while(data > 0)
{
e[k++] = data%8;
data = data/8;
}
printf("八进制为:");
for(i=k-1;i>=0;i--)
printf("%d",e[i]);
return 0;
}