打出数字,求各位数上的积,而且是一组出一个,可以连续的那种,不知道为什么打的下一个数会和上一个数相乘

#include
int p=1;
int main() {
int x,t;
while(scanf("%d",&x)!=EOF )
{while(x!=0)
{
t=x%10;
p=p*t;
x=x/10;

}    

}
printf("%d",p);
return 0;
}

是因为p没有在while循环初始化为1的原因,导致所有数的数位数字乘积都累积在p里面到最后才打印,所以导致结果出错了。

可以把打印语句修改下放到第二个while循环后面,然后把p在第一个while循环开始位置初始化为1即可。修改如下:

#include <stdio.h>
int p=1;
int main() {
    int x,t;
    while(scanf("%d",&x)!=EOF )
    {
        p=1; 
        while(x!=0)
        {
            t=x%10;
            p=p*t;
            x=x/10;
        
        } 
        printf("%d\n\n",p);   
    }
    
    
    return 0;
}

img