满意答案
你的程序需要修改这样几处地方:
int main()
{
unsigned int i,t,k,n,a[7]; // a数组应该是7,否则会越界
scanf("%d",&n);
if (n<=6000000) {
while(n>=10) {
for(i=0;i<=6;i++) {
a[i]=n%10; // 这里不要判断,否则数位中一旦有0,n就不再变化了
n=(n-a[i])/10;
}
t=1; // t=1的初始化要放在这里
for(k=0;k<=6;k++) {
if(a[k]!=0)
t=t*a[k];
}
n=t;
}
}
printf("%d",n);
return 0;
}
另外更简单的写法如下:
int main()
{
unsigned int t,n;
scanf("%d",&n);
if (n<=6000000) {
while(n>=10) {
t = 1;
while (n>0) {
if (n % 10 != 0)
t *= (n % 10);
n /= 10;
}
n = t;
}
}
printf("%d",n);
return 0;
}
11分享举报