鱼C论坛

 找回密码
 立即注册
查看: 4257|回复: 8

关于十进制转换成二进制

[复制链接]
发表于 2012-10-5 12:25:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main()
{
int num, i;
int bit[10] = {0};
//提示输入一个数
printf("\n请输入一个十进制数: ");
scanf("%d", &num);

//循环取余, 当num等于一时停下来
for(i = 0; num > 0; ++i)
{
  bit[i] = num % 2; //用bit来存放取余后的数据, 存在数组中
  num = num / 2; //因为是整型变量, 会自动去掉小数部分
}


printf("\n转换为二进制是: \n");
for(i = 10; i >= 0; --i)
{
  printf("%d  ", bit[i]);
}
printf("\n");
   
return 0;
}

//关于算法, 用十进制除以2取余再反向排序








这是我写的一个程序, 为什么运行时, 在c-free 4.0中的结果是这样:

请输入一个十进制数: 12
转换为二进制是:
37814124  0  0  0  0  0  0  1  1  0  0
请按任意键继续. . .

为什么前面会出现37814124这些数字?!是不是我代码哪里出错了? 谁帮我看看......



补充内容 (2012-10-5 12:28):
我定义了一个数组bit[10]用来存放取余后的数, 请问, 这个数组, 我应定义多大才适合? 或者有没有其他更好的定义方法?!  求指救
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-5 14:41:33 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int num, i;
  5. int bit[10] = {0};

  6. printf("\n请输入一个十进制数: ");
  7. scanf("%d", &num);


  8. for(i = 0; num > 0; ++i)
  9. {
  10.   bit[i] = num % 2;                //这里是bit[i],不是bit.
  11.   num = num / 2;
  12. }

  13. //i--;                                                       
  14. printf("\n转换为二进制是: \n");
  15. for(i = 9; i >= 0; --i)                //把i=10改成i = 9,因为数组的最大下标为9,
  16.                                                         //或者可以把i = 9去掉,这样输出后格式更加美观一些,这时候要在for循环之前加一个i--;
  17. {                                                        //因为之前i多加了一次,减1之后i代表二进制的最高位的下标值。
  18.   printf("%d  ", bit[i]);        //这里也是bit[i],不是bit;
  19. }       
  20. printf("\n");
  21.    
  22. return 0;
  23. }
复制代码
另外这个数组的大小定义100一般足够了,不嫌麻烦的话还可以动态分配,不知道你学到这没有。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-5 20:59:53 | 显示全部楼层
大家一起来看看 学习学习 提高提高
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-10-5 23:30:12 | 显示全部楼层

对于动态分配内存, 能不能给一个例子
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-5 23:58:26 | 显示全部楼层
C_linux记事 发表于 2012-10-5 23:30
对于动态分配内存, 能不能给一个例子

这个。。。你查下malloc()这个函数的用法就知道了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-7 11:36:16 | 显示全部楼层
for(i = 10; i >= 0; --i)
这句导致数组越界
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-7 11:38:07 | 显示全部楼层
整形,32位够了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-16 03:02:53 | 显示全部楼层
还是鱼C好,我在网上找大半天,都是一堆代码的。。。看到都蛋碎了!这个例子,我用的while循环实现,但是少了一个二进制位。貌是是最后一个取余的二进制位没有存进数组里面,我也不知道怎么弄了。:(,
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-5-16 15:12:56 | 显示全部楼层
学习一下了!!!!!!!!!!!!!!!{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-10 03:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表