看一下我写的那里错了可以吗,提交是答案错误

#include<stdio.h>
int main()
{
int n,i,a,x,d;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a);
if(a%2==0)
x=a/2;
if(a%4==0)
d=a/4;
else if(a%2!=0&&a%4!=0)
x=d=0;

     else if(a%4!=0&&a%2==0){x=a/2;
     d=0;

     }
    printf("%d %d\n",d,x);

}

return 0;

}

img

回答:说实话,你的程序我是没看懂的,这个计算0的个数的问题,代码如下:

#include<stdio.h>

//计算 0 的个数
int f(int a) {
    int number = 0;
    while (a > 0) {
        int temp = a % 10;
        if (temp == 0) {
            number++;
        }
        a = a / 10;
    }
    return number;
}

//由于没有说明是如何输入的,如果仅仅输入多个数据后,一起输出,则需要放在数组里面,稍作修改即可 
int main()
{
    int a, number = 0;
    while (true) {
        printf("请输入一个int整数:");
        scanf("%d", &a);
                
        if (a < 0) {
            a = -a;
            number=f(a);
        }
        else if (a == 0) {
            number = 1;
        }
        else {
            number=f(a);
        }

        printf("0 的个数为:%d", number);
        printf("\n");
        printf("\n");
    }
}

这里考虑了负数的情况,但在输入“000”时与情况不符,你看着再改改也行