c语言,在线,急忙

来源:百度知道 编辑:UC知道 时间:2024/04/28 16:28:38
#include<stdio.h>
#include<string.h>
#define N 256
void main()
{
char a[N];
int i,w,n,sum=0;
puts("输入字符串:");
gets(a);
n=strlen(a);
for(i=0;a[i]!='\0';i++)
{
w=pow(2,n-i-1);
sum+=a[i]*w;
}
printf("%d",sum);
}

二进制换成十进制。
可以运行,但是结果不对,急

#include<stdio.h>
#include<string.h>
#define N 256
void main()
{
char a[N];
int i,w,n,sum=0;
puts("输入字符串:");
gets(a);
n=strlen(a);
for(i=n-1;i>=0;i--)
{
w=a[i]-'0';
sum=sum*2+w;
}
printf("%d",sum);
}

#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 256
void main()
{
char a[N];
int i,w,n,sum=0;
puts("输入字符串:");
gets(a);
n=strlen(a);
printf("%d",n);
for(i=0;a[i]!='\0';i++)
{
w=pow(2.0,n-i-1);/*pow()函数的原型是extern float pow(float x, float y);将2改写成double 型的(2.0)就能运行通过了。*/
sum+=a[i]*w;
}
printf("%d",sum);
}