#include <stdio.h>
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;
}
#include <stdio.h>
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;
}