
C语言2进制转换为10进制出错怎么解决?
我写的程序中,输入的二进制数不超过32位结果都是正确的,超过32位结果就是-1,为什么?谁能给我解决下,我的程序如下:#include<stdio.h>#include<...
我写的程序中,输入的二进制数不超过32位结果都是正确的,超过32位结果就是-1,为什么?谁能给我解决下,我的程序如下:
#include <stdio.h>
#include <string.h>
int main()
{
char s[121];
int k;
long long b;
while (gets(s))
int i=0,j=0,n=0;
long long a=0,b=0;
n=strlen(s);
for(i=0,j=n,a=1;i<n;i++)
{
if(s[i]=='1')
{
for(k=0;k<j-1;k++)
{
a=a*2;
}
j--;
b=a+b;
a=1;
}
}
printf("%ld\n",b);
}
return 0;
} 展开
#include <stdio.h>
#include <string.h>
int main()
{
char s[121];
int k;
long long b;
while (gets(s))
int i=0,j=0,n=0;
long long a=0,b=0;
n=strlen(s);
for(i=0,j=n,a=1;i<n;i++)
{
if(s[i]=='1')
{
for(k=0;k<j-1;k++)
{
a=a*2;
}
j--;
b=a+b;
a=1;
}
}
printf("%ld\n",b);
}
return 0;
} 展开
展开全部
while少了一个大括号
输出long long 型的用%lld,该类型最大能表示64为的数
#include <stdio.h>
#include <string.h>
int main()
{
char s[121];
int k;
while (gets(s)){//////////////////////
int i=0,j=0,n=0;
long long a=0,b=0;
n=strlen(s);
for(i=0,j=n,a=1;i<n;i++)
{
if(s[i]=='1')
{
for(k=0;k<j-1;k++)
{
a=a*2;
}
j--;
b=a+b;
a=1;
}
}
printf("%lld\n",b);///////////////////////
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询