#include<stdio.h>
#include<string.h>
#include<math.h>
#define AS 20
void qw(char ps[],int v);
int u = 0;
int main(void)
{
int p = 0;
char as[AS];
while (1)
{
printf("请输入二进制数:");
gets_s(as, AS - 1);
p = strlen(as);
qw(as, p);
}
return 0;
}
void qw(char ps[],int v)
{
int h;
int k = 0;
int l = 0;
int a = 0;
for (h = v-1; h >= 0; h--)
{
if (ps[h] == 49)
{
k = pow(2,a);
l += (1 * k);
}
else if (ps[h] > 49)
{
printf("输入错误,请重新输入!");
u = 1;
break;
}
a++;
}
if (u == 0)
{
printf("十进制值数为:%d\n", l);
}
else
printf("\n");
u = 0;
}
注:p[h]为什么用49,我也不太清楚,可用自己的电脑编程试一下,知道的朋友可以说一下。