使用工具:visual c++ 6.0 程序目的:输入一个十进制整数,使得能够输出对应的二进制数。 思想:把二进制数按照数组的元素形式输出出来(比如输入12,那么二进制数应该是1100,则创建一个数组,此数组有四个元素)。输入这个数后,通过取余和取模运算,计算出需要多大的数组存储二进制数的位。 以下是程序: #include<stdio.h> #include<stdlib.h>
int main() { int i=0,j=0,decimal,fake_decimal; //i的目的是创建动态数组用,j的目的是转换算法用 int *binary; printf("请输入一个十进制数:"); scanf("%d",&decimal); fake_decimal = decimal; //给二进制数分配个数组 while((fake_decimal/2) != 0) { fake_decimal /= 2; i++; } i++; binary = (int *) malloc(i*sizeof(int)); //开始十进制转化为二进制算法 while((decimal/2) != 0) { if((decimal%2) == 0) *(binary+j) = 0; if((decimal%2) == 1) *(binary+j) = 1; j++; decimal /= 2; } j++; *(binary+j) = 1;
//输出二进制数 while(j >= 0) { printf("%d",*(binary+j)); j--; } printf("\n");
return 0; } 假如输入12,则输出结果是1-842150451100(后四位的1100应该是输出啊!!)假如输入4,则输出结果是1-84215045100(后三位的100应该是输出啊!!) 为什么会出现这样的情况呢??怎么也想不明白,所以向众高手求救,多谢了!
[此贴子已经被作者于2005-10-11 16:53:00编辑过]