为什么编译没问题但是输入第二组数据时就开始出问题啊……

img

img

因为你的b在第一次输入后没有被重置,所以第二次输入时b初始值为5,最后输出为511=5
在外层while下添加一个b=1即可
有帮助望采纳

修改如下,供参考:

#include<stdio.h>
int main()
{
    int a, b, n, i;
    while (scanf("%d", &n) != EOF)
    {
        b = 1, i = 1;
        do {
            scanf("%d", &a);
            if (a % 2 == 1) {
                b = a * b;
            }
            i = i + 1;
        } while (i <= n);
        printf("%d\n", b);
    }
    return 0;
}