看这个C语言程序。为什么输出的都是0

while(scanf("%c",&n)!=EOF){scanf("%d",&m);if(n=='B'){sum=0;for(i=0;i>=0;i++){r[i]=m%1... while(scanf("%c",&n)!=EOF)
{

scanf("%d",&m);
if(n=='B')
{sum=0;
for(i=0;i>=0;i++)
{
r[i]=m%10;

sum=sum+r[i]*pow(2,i);
m=m/10;
if(m/10==0)
break;
}
printf("%d",sum);
展开
 我来答
songcitc
2013-12-03 · TA获得超过397个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:199万
展开全部
第一句有问题,scanf你是无法读取到EOF的,End Of File,在电脑的术语缩写通常为 EOF,在作业系统决定资料源无更多的资料可读取。
for循环也有问题,判断循环结束用i>=0,会一直为真,循环无法结束。当然你的代码里面有跳出break,但这种写法比较奇特。
看你的程序,应该是把二进制转换成十进制的数,代码不全,不好给你查错。
百度网友d3c1d5aac
2013-12-03 · TA获得超过177个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:226万
展开全部
你这个程序写的很乱,首先各个变量没有定义类型,n,m,sum r[i], 其次pow要用到include<math.h>
算法也不清楚你到底想干什么,另外scanf("%c",&n)!=EOF) 这个是错误的。EOF只有在读文件的时候这么写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金色潜鸟
2013-12-03 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5525万
展开全部
是否漏了头文件 #include <math.h> ?
你的 pow(2,i); 需要 math.h
n 的变量类型 是否 用了 char ?
拍入 B 后 有没有 忘了 换行 就拍数字?
输入数据 是否 在你考虑 的范围 以内?
------------
#include<stdio.h>
#include <math.h>
main(){
char n;
int m,i;
int r[32],sum;
while(scanf("%c",&n) !=EOF)
{
scanf("%d",&m);
if(n=='B')
{sum=0;
for(i=0;i>=0;i++)
{
r[i]=m%10;
sum=sum+r[i] * (int) pow(2,i);
m=m/10;
if(m ==0)break; // 改了一下,不知是不是 要 这个意思
}
printf("%d\n",sum);
}
}}
===========
用 Ctrl-C 组合键 结束程序。
不清楚你要算什么,但不致于是0。
更多追问追答
追问
可是按你改的输入一个二进制的数有时候转化出来是负数为什么
追答
估计是你给的数值太大了。scanf("%d",&m);   这个 m 有极限大小,超界就成了负数。

例如 1111111111111111 作为2进制数,数值不大。
但 scanf("%d",&m); 读语句的 m
是按10进制数理解 输入 的,这是很大 的 10进制数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式