| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1598 人关注过本帖
标题:各位大神 请问一下 这个为什么尾部会多一个0 啊?
取消只看楼主 加入收藏
hisia_
Rank: 2
等 级:论坛游民
帖 子:45
专家分:26
注 册:2016-1-24
结帖率:72.73%
收藏
已结贴  问题点数:10 回复次数:1 
各位大神 请问一下 这个为什么尾部会多一个0 啊?
十进制转二进制  为什么会多出一个0呀?运行第一个数的时候。。
题目:
Problem G: 十进制整数转二进制

Time Limit: 1 Sec  Memory Limit: 2 MB
Submit: 7814  Solved: 4472
[Submit][Status][Web Board]
Description

给出一个十进制的非负整数x,x<=216,把它转换成二进制数输出。

Input

输入为多行,每行一个整数x,至读入EOF结束。

Output

每行输出x对应的二进制数值。

Sample Input

0
1
3
33
65535
Sample Output

0
1
11
100001
1111111111111111
HINT

本题有多种解法:可以用循环迭代对2的除法和取余操作,不过处理的顺序与输出顺序相反,需要利用数组存储;用取对数或从大到小减去2的整数次幂的方法计算与输出顺序是相同的;也可以用printf()把十进制的数值处理成十六进制,然后1位十六进制转4位二进制;也可以用位运算处理。

代码:
#include <stdio.h>
#define N 65536
int main()
{
  int n,i,a[N],m,l=0;
  while(scanf("%d",&n)!=EOF)
  {
    if(n<0||n>65536)  break;
    else{
    while(n!=0)
    {
      a[l]=n%2;
      n=n/2;
      l++;
    }
    for(i=l;i>=0;i--)
    {
      printf("%d",a[l-1]);
      l--;
    }

    printf("\n");}
  }
  return 0;
}


请各位大神指教一下啊,,这个运行第一个数尾部会多出一个0是为什么?
搜索更多相关主题的帖子: 尾部 十进制 整数 输出 顺序 
2017-11-23 21:47
hisia_
Rank: 2
等 级:论坛游民
帖 子:45
专家分:26
注 册:2016-1-24
收藏
得分:0 
知道了。。那不应该等于0,等于0   后面就会多出一个0?但为什么只在第一个测试数上多一个0呢?各位大神  请指教一下 为什么啊??
2017-11-23 21:52
快速回复:各位大神 请问一下 这个为什么尾部会多一个0 啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018343 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved