1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 语言栈十进制转十六进制_十进制数转二进制 八进制 十六进制等任意进制_C语言「抄作

语言栈十进制转十六进制_十进制数转二进制 八进制 十六进制等任意进制_C语言「抄作

时间:2021-04-29 17:29:16

相关推荐

语言栈十进制转十六进制_十进制数转二进制 八进制 十六进制等任意进制_C语言「抄作

C语言「抄作业」系列之十进制数转二进制、八进制、十六进制等任意进制

PS: 写这篇时发现了潜藏多年的Bug。在修复时,无意间发现,本大仙当年的Bug代码竟然「流传甚广」……(别以为改了下变量名,就能骗过本大仙!)作业可以抄,但好歹测试一下呗!呵呵一下~~

#include <stdio.h>#include <stdlib.h> /* itoa() */#include <conio.h>#define ARR_LEN 255/* 10进制数转任意进制 *//* 除基数取余:10进制数不断除以进制基数直至为0,每次相除取得余数之逆序即为转换结果 *//* 参数说明 *//* int value : 10进制数 *//* char *string : 转换后的其他进制数,以字符串形式存储 *//* int radix : 转换目标进制 */char *decimal2Others (int value, char *string, int radix) {char index[] = "0123456789abcdefghijklmnopqrstuvwxyz"; /* 索引表 */unsigned uvalue; /* 无符号整型的中间变量,用于处理负数 */char temp;int i=0, j, k;/* 确定uvalue的值 */if (radix==10 && value<0) {/* 十进制负数 */uvalue = (unsigned)(value*-1);string[i++] = '-';}elseuvalue = (unsigned)value; /* (unsigned)value == 2^32 - value (4字节unsigned) *//* 除基数取余 *//* 计算结果存入string字符串,此时为最终转换结果的逆序 */do {string[i++] = index[uvalue % (unsigned)radix];uvalue /= (unsigned)radix;} while (uvalue);string[i] = '0'; /* string字符串末尾补'0' *//* 逆序处理 *//* string字符串首尾元素依次交换 */if (string[0]=='-') /* 十进制负数 */k = 1; /* 跳过负号 */elsek = 0;for (j=k; j<=(i-1)/2.0; j++) {temp = string[j];string[j] = string[i-1-j+k];string[i-1-j+k] = temp;}return string;}int main (void) {int radix, value;char result[ARR_LEN];/*printf ("Please input a decimal number: ");scanf ("%d", &value);putchar ('n');*/value = 255;//value = -255;//value = 0;printf ("The decimal number: %dn", value);putchar ('n');/* 二进制 bin */radix = 2;decimal2Others (value, result, radix);printf ("The binary numeric value: t");puts (result);itoa (value, result, radix); /* itoa() 函数验证 */ printf ("Calling the "itoa()" function: t");puts (result);putchar ('n');/* 八进制 oct */radix = 8;decimal2Others (value, result, radix);printf ("The octal numeric value: t");puts (result);itoa (value, result, radix); /* itoa() 函数验证 */ printf ("Calling the "itoa()" function: t");puts (result);putchar ('n');/* 十六进制 hex */radix = 16;decimal2Others (value, result, radix);printf ("The hexadecimal numeric value: t");puts (result);itoa (value, result, radix); /* itoa() 函数验证 */ printf ("Calling the "itoa()" function: t");puts (result);putchar ('n');/* 十进制 dec */radix = 10;decimal2Others (value, result, radix);printf ("The decimal numeric value: t");puts (result);itoa (value, result, radix); /* itoa() 函数验证 */ printf ("Calling the "itoa()" function: t");puts (result);putchar ('n');getch (); /*屏幕暂留*/return 0;}

运行结果:十进制正数

运行结果:十进制负数

运行结果:0

C语言抄作业系列,只有答案,没有讲解!

计算机科学专业毕业多年的一个啥也没学会而转行做了产品经理的家伙,从当年的各种作业里搬运来的一些乱七八糟的东西。

C语言「抄作业」​

语言栈十进制转十六进制_十进制数转二进制 八进制 十六进制等任意进制_C语言「抄作业」...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。