看这个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); 展开
{
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); 展开
3个回答
展开全部
你这个程序写的很乱,首先各个变量没有定义类型,n,m,sum r[i], 其次pow要用到include<math.h>
算法也不清楚你到底想干什么,另外scanf("%c",&n)!=EOF) 这个是错误的。EOF只有在读文件的时候这么写。
算法也不清楚你到底想干什么,另外scanf("%c",&n)!=EOF) 这个是错误的。EOF只有在读文件的时候这么写。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是否漏了头文件 #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。
你的 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进制数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询