程序中必须回车→ctrl+z→回车才能输出结果而且还终止运行了

#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来结束程序的进行。题主可以换一下实现逻辑,换一种思路考虑如何正确地输入多组数据。
希望对题主有所帮助,望采纳!!