C语言实现十进制转任意进制的代码详解
作者:ConFig.
这篇文章主要介绍了C语言实现十进制转任意进制,运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用ASCII码值 数字字符和大写字母 相差55的特性来解决,文中有详细代码示例,需要的朋友可以参考下
主要思路:运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用ASCII码值 数字字符和大写字母 相差55的特性来解决
int main() { int a[50];//把取模的值放到数组中1 int 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; }
拓展:
十进制转换为二进制
运行图:
源代码:
#include <stdio.h> /*10进制转换为2进制*/ void conversion(int a) { int chu, yu; chu=a/2; yu=a%2; if(chu==0) { printf("%d",yu); } else { conversion(chu); printf("%d",yu); } } int main(void) { int x; printf("请输入10进制数:"); scanf("%d",&x); printf("转化后的2进制为:"); conversion(x); return 0; }
十进制转换为八进制
运行图:
源代码:
#include <stdio.h> /*10进制转换为8进制*/ void conversion(int a) { int chu, yu; chu=a/8; yu=a%8; if(chu==0) { printf("%d",yu); } else { conversion(chu); printf("%d",yu); } } int main(void) { int x; printf("请输入10进制数:"); scanf("%d",&x); printf("转化后的8进制为:"); conversion(x); return 0; }
十进制转换为十六进制
运行图:
源代码:
#include <stdio.h> /*10进制转换为16进制*/ int sum(unsigned a,char buf[]) { int chu, yu; chu=a/16; yu=a%16; if(chu==0) { printf("%c",buf[yu]); } else { sum(chu,buf); printf("%c",buf[yu]); } } int main(void) { int a; char buf[16]="0123456789ABCDEF"; printf("请输入10进制数:"); scanf("%d",&a); printf("转化后的16制数为:"); sum(a,buf); return 0; }
到此这篇关于C语言实现十进制转任意进制的代码详解的文章就介绍到这了,更多相关C语言十进制转任意进制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!