您的位置 首页 java

C语言实现十进制转2~16进制、十六进制转十进制

1 、十进制转 2 16 进制

【问题描述】 从键盘输入十进制整数num及转换的进制数base,将整数num转换为base进制(base取值范围为 2~16)。

方法为: 十进制数除base取余法,即十进制数除以base,余数为权位上的数,得到的商值继续除以base,依此步骤继续向下运算直到商为0为止。

源程序:

#include<stdio.h>

void trans(int data, int base)

{

int x[64],k,i=0;

while(data)

{

x[i]=data%base;

data/=base;

i++;

}

for(k=i-1;k>=0;k–)

if(x[k]<10)

printf (“%d”, x[k]);

else if(x[k]<=16)

printf(“%c”, ‘A’+x[k]-10);

}

int main( void )

{

int num,base;

scanf (“%d%d”, &num, &base);

if(base<=0||base>16)

{

printf(“data error\n”);

return;

}

printf(” number =%d base=%d\n”,num,base);

trans(num,base);

printf(“\n”);

return 0;

}

2 、十六进制转十进制

【问题描述】 输入一个 字符串 ,取出该字符串中的十六进制字符(不分大小写)组成一个新的表示十六进制数的字符串,输出该字符串并将其转换成十进制数后输出。

方法为: 十六进制数由数字0~9、字母A~F(或a~f)组成。把十六进制数按权展开、相加即得十进制数。

源程序:

#include<stdio.h>

#include<string.h>

int main(void)

{

char s[20],hex[20];

int i,j,num;

gets (s);

/* 取出字符串中的十六进制字符 */

for(i=0,j=0;s[i]!=’\0′;i++)

{

if(s[i]>=’0’&&s[i]<=’9’||s[i]>=’A’&&s[i]<=’F’||s[i]>=’a’&&s[i]<=’f’)

{

hex[j]=s[i];

j++;

}

}

hex[j]=’\0′;

printf(“Hexadecimal String: “);

puts (hex);

/* 十六进制转十进制 */

num=0;

for(i=0;hex[i]!=’\0′;i++)

{

if(hex[i]>=’0’&&hex[i]<=’9′)

num=num*16+hex[i]-‘0’;

else if(hex[i]>=’A’&&hex[i]<=’F’)

num=num*16+hex[i]-‘A’+10;

else if(hex[i]>=’a’&&hex[i]<=’f’)

num=num*16+hex[i]-‘a’+10;

}

printf(“Decimal number=%d\n”,num);

return 0;

}

文章来源:智云一二三科技

文章标题:C语言实现十进制转2~16进制、十六进制转十进制

文章地址:https://www.zhihuclub.com/195957.shtml

关于作者: 智云科技

热门文章

网站地图