| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:十进制转换二进制的问题
只看楼主 加入收藏
zhengyaoniu
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2012-7-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
十进制转换二进制的问题
int main()
  4 {
  5    printf("请输入一个整数:");
  6    int ej;
  7    int z[32]={0};//定义一个数组存放
  8    scanf("%d",&ej);//输入一个整数ej
  9    int i;
 10    for(i=0;ej<2;i++){
 11       z[i]=ej%2;//*1E+i;//ej对2取余 乘以10的i次方,相应的数位
 12       ej=ej/2;//ej对2取整,用来下一个循环的计算
 13    }  
 14   
 15    for(;i>=0;i--){
 16            printf("%d",z[i]);
 17   
 18    }
 19    return 0;
 20 }
我知道错在第一个for ej<2 应该写成ej!=0,但是如果就是按如上写,为什么输出零?还请有经验的朋友们帮忙解答
搜索更多相关主题的帖子: return 二进制 十进制 
2012-07-06 00:04
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:5 
ej!=0

然后下面输出的for(i-=1;i>=0;i--)就可以了
2012-07-06 00:46
…简式…
Rank: 2
等 级:论坛游民
帖 子:17
专家分:31
注 册:2012-7-4
收藏
得分:5 
#include<stdio.h>
int main()
  {
      int ej;
      int i;
      int z[32]={0};//定义一个数组存放
      printf("请输入一个整数:");
      scanf("%d",&ej);//输入一个整数ej
      for(i=0;ej!=0;i++)
      {
       z[i]=ej%2;//*1E+i;//ej对2取余 乘以10的i次方,相应的数位
       ej=ej/2;//ej对2取整,用来下一个循环的计算
      }
       for(;i>=0;i--)
       {            
          printf("%d",z[i]);
        }
       printf("\n");
}
我也没怎么改,出来了。。。不知道是不是你想要的结果。。
2012-07-06 09:52
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
收藏
得分:5 
在循环语句编程中,要特别注意边界值的问题。

对楼主的程序做了小小一点补充:
int main()
  4 {
  5    printf("请输入一个整数:");
  6    int ej;
  7    int z[32]={0};//定义一个数组存放
  8    scanf("%d",&ej);//输入一个整数ej
  9    int i;
10    for(i=0;ej!=0;i++){
11       z[i]=ej%2;//*1E+i;//ej对2取余 乘以10的i次方,相应的数位
12       ej=ej/2;//ej对2取整,用来下一个循环的计算
13    }  
14   
15    for(--i;i>=0;i--){
16            printf("%d",z[i]);
17   
18    }
19    return 0;
20 }

原因:在第10行的for循环执行完后,i的值多了1,所以在显示时,起始位置要先减1。



做自己喜欢的事!
2012-07-08 00:36
long0042
Rank: 2
等 级:论坛游民
帖 子:38
专家分:50
注 册:2008-3-5
收藏
得分:5 
程序代码:
#include <stdio.h>

int main()
{
    int ret, ej, i;
    int result[80];

    scanf("%d", &ej);

    for (i = 0; ;i++)
    {
        result[i] = ej%2;
        ej = ej>>1;

        if (ej == 0)
            break;
    }

    for (; i>=0; i--)
    {
        printf("%d", result[i]);
    }
    putchar('\n');    

    return 0;
}
2012-07-09 10:24
快速回复:十进制转换二进制的问题
数据加载中...
 
   



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

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