#define N 2
int main()
{
int j;
int decimal=0;
char b;
int bw=1;
int binary[50];
int i=0;
printf("输入一个二进制数: \n");
while(scanf("%c",&b)!=EOF)
{
if (b=='\n')
continue;
binary[i++]=b-'0';
}
for(j=i-1;j>=0;j--){
decimal+=binary[j]*bw;
bw=bw*N;
}
printf("%d\n",decimal);
system("pause");
return 0;}
结果是
输入一个二进制数:
110114
^Z
58
请按任意键继续
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 2
int main()
{
int j;
int decimal=0;
char b;
int bw=1;
int binary[50];
int i=0;
printf("输入一个二进制数: \n");
scanf("%c",&b);
while(b!='\n')
{
scanf("%c",&b);
if (b=='\n')
continue;
binary[i++]=b-'0';
}
for(j=i-1;j>=0;j--){
decimal+=binary[j]*bw;
bw=bw*N;
}
printf("%d\n",decimal);
system("pause");
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char a[50];
printf("输入一个二进制数: \n");
scanf("%s", a);
int n = strlen(a);
int d = 0;
for (int i = 0; i < n; i++)
{
if (a[i] != '0' && a[i] != '1')
{
printf("无效二进制数\n");
return 0;
}
d = d * 2 + a[i] - '0';
}
printf("%d\n", d);
return 0;
}
ctrl+z+回车 来结束,确实是在做OJ题时要求多组输入数据时会用到的,因为需要用到while((scanf("%d",&n))!=EOF)类似的语句,所以需要用ctrl+z+enter来结束程序的进行。题主可以换一下实现逻辑,换一种思路考虑如何正确地输入多组数据。
希望对题主有所帮助,望采纳!!