主要思路:运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用ASCII码值 数字字符和大写字母 相差55的特性来解决
int main()
{int a[50];//把取模的值放到数组中1int i = 0;int num,k;printf("选择你要转换的进制\n");scanf("%d", &k);printf("请输入一个数字\n");scanf("%d", &num);//输入一个数字int prenum = num;if (num > 0){while (num != 0){a[i] = num % k;num = num / k;i++;}printf("%d的%d进制为", prenum, k);for (i -= 1; i >= 0; i--)//倒序输出数组中的数字{if (a[i] >= 0 && a[i] <= 9)//如果是正常数字 则输出printf("%d", a[i]);else//如果是大于9的则用字母ABCDEF来代替{printf("%c", a[i] + 55);}}}else{printf("%d的%d进制为0", prenum, k);}return 0;
}
int main()
{int i = 0;int m, k;int a[20];printf("请输入要转化的数字:");scanf("%d", &m);printf("请输入要转化的进制数:");scanf("%d", &k);if (m > 0){for (i = 0; m != 0; i++)//每次取模都放在数组中{a[i] = m % k;m = m / k;}int j = 0;for (j = i - 1; j >= 0; j--)//倒着取数组中的数 {switch (a[j])//十六进制处理{case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;default://小于十的数整除输出printf("%d", a[j]);}}}else{printf("0\n");}return 0;
}