收藏文章 楼主

c 语言进制数 转换 10 16 2

版块:C/C++语言开发   类型:普通   作者:小绿叶技术博客   查看:1881   回复:1   获赞:4   时间:2023-05-05 15:15:30


#include <stdio.h>
#include <string.h>
#include <math.h>

int s10z16()
{
    int x;
    printf("请输入10进制数,转为 16 进制:  ");

    scanf("%d", &x);
    char arr[100] = { 0 };     //因为十六进制中会出现A\B\C\D\E\F等字符,所以保存余数的数组类型应定义为char
    int i = 0, j = 0;
    while (x)
    {
        arr[i++] = x % 16;
        x /= 16;
    }
    for (j = 0; j < i; j++)
    {
        //将取出的余数转换为对应的字符
        switch (arr[j])
        {
        case 10:arr[j] = 'A'; break;
        case 11:arr[j] = 'B'; break;
        case 12:arr[j] = 'C'; break;
        case 13:arr[j] = 'D'; break;
        case 14:arr[j] = 'E'; break;
        case 15:arr[j] = 'F'; break;
        default:arr[j] += 48;
        }
    }
    for (j = i - 1; j >= 0; j--)
    {
        printf("%c", arr[j]);//逆序打印
    }
    printf("\n");
    return 0;
}

void s16z10()
{
    int a=0;
    int i=0;

    printf("请输入16进制数: ");
    scanf("%x",&a);
    printf("%d",a);

}

void s10z2()
{
    int num;int temp;int i=0;
    int arr[999];
    printf("请输入一个十进制数:");
    scanf("%d", &num);
     do
    {
    temp=num%2;
    num=num/2;
    arr[i++]=temp; 
    }
    while (num!=0);
    for (int j = i-1; j>=0; j--)
   printf("%d",arr[j]);
   printf("\n");
}

int main()
{


    int grade;
    printf("请选择需要被转换的进制类型 1. 10转2进制; 2. 16转10进制; 3. 10转2进制  :  ");
    scanf("%d", &grade);
    printf("当前输入的值为: %d \n",grade);
   /* 局部变量定义 */

 
   switch(grade)
   {
   case 1 :
      printf("当前是十转十六进制\n" );
      s10z16();
      break;
   case 2 :
      printf("十六转十进制\n" );
      s16z10();
      break;
   case 3 :
      printf("十转二进制\n" );
      s10z2();
      break;
   default :
      printf("输入错误,请重新输入...\n" );
   }
   
   return 0;

}





提供企业建站服务,免费网防系统,提交信息登录 http://yundun.ddoss.cn 邮箱: proposal@ddoss.cn 
回复列表
默认   热门   正序   倒序

回复:c 语言进制数 转换 10 16 2

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息