一、运行截图
二转其他进制
八转其他进制
十转其他进制
十六转其他进制
二、函数功能介绍
1.char to num
/*将字符转换成数字*/ int char_to_num(char ch) { if (ch >= ‘0‘ && ch <= ‘9‘) return ch - ‘0‘; /*将数字字符转换成数字*/ else return ch - ‘A‘ + 10; /*将字母字符转换成数字*/ }
2.num to char
/*将数字转换成字符*/ char num_to_char(int num) { if (num >= 0 && num <= 9) return (char)(‘0‘ + num - 0); /*将0~9之间的数字转换成字符*/ else return (char)(‘A‘ + num - 10); /*将大于10的数字转换成字符*/ }
3.source to decimal
/*将数值转为十进制*/ long source_to_decimal(char temp[], int source) { long decimal_num = 0; /*存储展开之后的和*/ int length; int i; for (i = 0; temp[i] != ‘\0‘; i++); length = i; for (i = 0; i <= length - 1; i++) /*累加*/ decimal_num = (decimal_num * source) + char_to_num(temp[i]); return decimal_num; }
4.decimal to object
/*将十进制转为其他进制*/ int decimal_to_object(char temp[], long decimal_num, int object) { int i = 0; while (decimal_num) { temp[i] = num_to_char(decimal_num % object); /*求出余数并转换为字符*/ decimal_num = decimal_num / object; /*用十进制数除以基数*/ i++; } temp[i] = ‘\0‘; return i; }
5.output
/*倒着输出数组数值*/ void output(char temp[], int length) { int i; for (i = length - 1; i >= 0; i--) /*输出temp数组中的值*/ printf("%c", temp[i]); printf("\n"); }
三、展示main函数
int main() { int source; /*存储原数制*/ int object; /*存储目标数制*/ int length; /*存储转换成目标数制后字符数组的长度*/ long decimal_num; /*存储转换成的10进制数*/ char temp[MAXCHAR]; /*存储待转换的数值和转换后的数值*/ int flag = 1; /*存储是否退出程序的标志*/ while (flag) /*利用输入的flag值控制循环是否结束*/ { printf("请输入当前数制:"); scanf("%d", &source); printf("请输入数值:"); scanf("%s", temp); printf("请输入想要转换的进制:"); scanf("%d", &object); printf("转换后的数值:"); decimal_num = source_to_decimal(temp, source); length = decimal_to_object(temp, decimal_num, object); output(temp, length); printf("继续请输入1\n退出请输入0\n"); scanf("%d", &flag); } return 0; }
四、思维导图
五、过程中遇到的问题
1.刚开始比较呆板,没有思路,一个进制对应一个进制,需要12种函数,之后,询问同学,是先转为10进制,在转为其他进制,比较简易,十进制转其它进制只要除以基数,在倒着输出。
2.转为十进制,16进制需要将字母换算成对应的数值,通过网上搜索,得到了解决办法,将字符转为数字。
3.换算十进制比较繁琐,需要按权展开,利用到pow函数,运算比较麻烦,通过网上搜索,学会了,利用循环,提公因式,循环相加,比较精妙。
六、代码互评
他的代码比较有趣,加入了防沉迷和评价系统,增加了用户体验,设计精妙,评价内容不符合都有无效选项提示,我应该向他多多学习,不只是呆板的编译代码,应该加入人性化的设计。
七、总结
1.此次进制转换器,思考很多,比如简化代码,加入自己的设计等等。
2.通过请教同学和网络查询,解决了很多问题,补充了自己的不足。
3.需要学习和借鉴,才能写出更好更简易丰富的程序。
原文:https://www.cnblogs.com/hlq0710/p/11829161.html