#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; }