标题:关于:二进制与十进制转换,scanf,&a
取消只看楼主
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
 问题点数:0 回复次数:6 
关于:二进制与十进制转换,scanf,&a
下面这段代码是二进制转换为十进制的计算,通过输入二进制,输出十进制数。运行无误。请大家先看代码,问题在下面
#include"math.h"
main()
{
int a,i,k=-1,y=0;
printf("\n 请输入一个正确的二进制数:");
scanf("%d",&a);
printf("\n%d十进制为:",a);
while(a!=0)
{
i=a%10;
k++;
y+=i*pow(2,k);
a=a/10;
}
printf("%d\n",y);
}

问题是 如果将以上代码中的
printf("\n 请输入一个正确的二进制数:");
scanf("%d",&a);
printf("\n%d十进制为:",a);
三行去掉 直接a=0000111;这样就会出错, 实际应用中的a恰恰是赋值的不是输入的,请问高手上面的程序该怎么改
搜索更多相关主题的帖子: 十进制 scanf 二进制 
2009-10-15 12:43
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
UserYuH 你好  改了 还是错啊
2009-10-15 13:17
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
我也知道啊 如果是a=111的话就正常了  可是实际应用中我收到的a是十六位的二进制数 就是说 不能保证最高位是1   有可能是0000 1111 0000 1111   也可能是1111 0000 1111 0000    我该怎么将这种十六位二进制数转化为十进制数呢
2009-10-15 13:25
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
考虑过用数组  可是因为 数据时一位一位收过来的 ch=ch<<1   这样ch就是一串数 而不是数组  我不知道怎么用数组表示ch
2009-10-15 13:30
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
UserYuH 太谢谢你了  还麻烦你写了一个程序  可是 还是有问题  
问题是  如开始所说  我不能再程序中用 printf 和 scanf  因为 我的数据不是用键盘输入的 而是通过I/O口接收的   大概就如同下面这段程序
for(i = 0; i < 16; i ++)
 {
  one_data = one_data << 1;
 
  SCLK = 0;
  _nop_();
  SCLK = 1;
  _nop_();  /////时钟上升沿接收数据
  if(MISO = 1)  ////MISO为接收端口
       {
   one_data = one_data | 0x01;
  }
 }
这样接收-》移位-》接收——》移位  得到十六位二进制数   

你知道该怎么修改程序吗???
2009-10-15 13:52
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
UserYuH   我的意思是 直接给a赋值 a=0000 1111 0000 1111  而不是通过scanf 给a 赋值
2009-10-15 14:29
mrwtc
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-11-9
得分:0 
UserYuH    看来你也是。。。。。。。
2009-10-15 15:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-288627-1-1.html




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

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