博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【程序练习】——十进制的转换
阅读量:4452 次
发布时间:2019-06-07

本文共 4061 字,大约阅读时间需要 13 分钟。

十进制转换八进制,二进制,十六进制:

1 #include
2 #include
3 #include
4 5 #define MAX 20 6 7 int bin_val[MAX]; //存放十进制转换成二进制的结果 8 9 int get_int() 10 { 11 int in; 12 while(scanf("%d",&in) == -1){ 13 printf("please input a num\n"); 14 while(getchar() != '\n') ; 15 } 16 17 while(getchar() != '\n') ; 18 return in; 19 } 20 21 int menue() 22 { 23 int item; 24 printf("**********************************\n"); 25 printf("1.decimal converted into a binary;\n"); 26 printf("2.decimal converted to a hexadecimal;\n"); 27 printf("3.decimal converted into octal;\n"); 28 printf("4.exit the system;\n"); 29 printf("**********************************\n"); 30 31 printf("please input a number you want to do\n"); 32 33 while(item = get_int(),item < 1 || item > 4){ //逗号表达式 34 printf("please input [1-4]\n"); 35 } 36 return item; 37 } 38 39 int com_conver_binary() //转换成二进制的通用函数,为了十进制转换成十六进制做准备 40 { 41 int value; //需要转换的值 42 43 int mod; //余数 44 int i = 0; //记录二进制的位数 45 printf("please input a num you want to conver :\n"); 46 value = get_int(); 47 48 while((mod = value % 2), (value /= 2) != 0){ //十进制转换二进制 49 bin_val[i++] = mod; 50 } 51 bin_val[i++] = mod; //当value等于零的时候循环已经终止,但是余数还未加到结果中,so...... 52 53 return i; 54 } 55 56 /*****转换八进制和二进制的函数可以通用的,*****/ 57 void conver_octal() //转换成八进制 58 { 59 int value; //需要转换的值 60 61 int mod; //余数 62 int i = 0; //记录八进制的位数 63 printf("please input a num you want to conver :\n"); 64 value = get_int(); 65 66 while((mod = value % 8), (value /= 8) != 0){ //十进制转换八进制 67 bin_val[i++] = mod; 68 } 69 bin_val[i++] = mod; //当value等于零的时候循环已经终止,但是余数还未加到结果中,so...... 70 71 while(i--) 72 printf("%d",bin_val[i]); 73 74 puts("\n"); 75 } 76 77 void conver_binary() //转换成二进制 78 { 79 int i; 80 i = com_conver_binary(); 81 82 while(i--) 83 printf("%d",bin_val[i]); 84 85 puts("\n"); 86 } 87 88 char hex_ch(int value) 89 { 90 char ch; 91 switch(value){ 92 case 0: 93 case 1: 94 case 2: 95 case 3: 96 case 4: 97 case 5: 98 case 6: 99 case 7:100 case 8:101 case 9: ch = value + '0'; break;102 case 10: ch = 'A'; break;103 case 11: ch = 'B'; break;104 case 12: ch = 'C'; break;105 case 13: ch = 'D'; break;106 case 14: ch = 'E'; break;107 case 15: ch = 'F'; break;108 }109 return ch;110 }111 112 void conver_hex() //转换成十六进制113 {114 char hex_val[MAX]; //由于十六进制中有字母,所以要用char型115 int bin_bit; //十进制转换成二进制的位数116 int hex_bit = 0; //十六进制的结果位数117 int i;118 119 int sum = 0; //四位的二进制的十进制和120 bin_bit = com_conver_binary(); //十进制先转换成二进制121 122 for(i = 0; i < bin_bit; i++){ //二进制转换成十六进制123 switch(i % 4){124 case 0: sum += (bin_val[i] * 1); break;125 case 1: sum += (bin_val[i] * 2); break;126 case 2: sum += (bin_val[i] * 4); break;127 case 3: sum += (bin_val[i] * 8); break;128 }129 if(i % 4 == 3){130 hex_val[hex_bit++] = hex_ch(sum);131 sum = 0;132 }133 }134 if(bin_bit % 4 != 0)135 hex_val[hex_bit++] = hex_ch(sum); //一定不能忘记,如果二进制的位数不是四的倍数,就需要此部分136 137 while(hex_bit--)138 printf("%c",hex_val[hex_bit]);139 140 puts("\n");141 }142 143 int main()144 {145 while(1){146 switch(menue()){147 case 1:conver_binary(); break;148 case 2:conver_hex(); break;149 case 3:conver_octal(); break;150 case 4:exit(0); break;151 }152 }153 }

 

转载于:https://www.cnblogs.com/ngnetboy/p/3339610.html

你可能感兴趣的文章
hashlib、pickle、hmac、logging模块使用
查看>>
javascript常用知识点总结
查看>>
2019秋招复习笔记--数据库基本操作
查看>>
2019秋招复习笔试--手写代码
查看>>
2019秋招复习笔记--智力题
查看>>
MySQL学习笔记
查看>>
2019秋招面试复习 项目重点提问
查看>>
面试题
查看>>
DS博客作业08-课程总结
查看>>
利用Python爬虫刷店铺微博等访问量最简单有效教程
查看>>
浅谈软件测试与墨菲定律
查看>>
文件安全复制之 FastCopy
查看>>
强烈推荐美文之《从此刻起,我要》
查看>>
MYSQL中数据类型介绍
查看>>
评估软件上线标准
查看>>
敏捷开发流程
查看>>
APP兼容性测试(三)测试方案设计
查看>>
leetcode 412. Fizz Buzz
查看>>
对Netflix Ribbon的Loadbalancer类源码设计合理性的一点质疑
查看>>
关于日历的算法
查看>>