语言栈十进制转十六进制_C语言实现十进制转216进制、十六进制转十进制

1、十进制转216进制

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

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

源程序:

#include 

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

#include

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;

}

e79db2c90e777fbbfd05d8369f2e7c12.png

bf2bb94b968eaa8f6fa7a16838c4e85c.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值