c语言求挑错!还有,给数组赋值用花括号吗? 10
计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的...
计算一个整数的阿尔法乘积。对于一个整数x来说,它的阿尔法乘积是这样来计算的:如果x是一个个位数,那么它的阿尔法乘积就是它本身;否则的话,x的阿尔法乘积就等于它的各位非0的数字相乘所得到的那个整数的阿尔法乘积。例如:4018224312的阿尔法乘积等于8,它是按照以下的步骤来计算的:
4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
编写一个程序,输入一个正整数(该整数不会超过6,000,000),输出它的阿尔法乘积。
输入格式:输入只有一行,即一个正整数。
输出格式:输出相应的阿尔法乘积。
# include <stdio.h>
int main()
{
int n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%d",&x);
while(1)
{while(1)
{
while(x%10==0) {x=x/10;}
a[n]= x%10;
x=x/10;
if(x==0) break;
n++;
}
b[k]=n;k++;
x=1;
for(j=b[k-1]+1;j<=n;j++)
{
x=x*a[j];}
if(x<10) break;
下面这种方法错在哪?
#include <stdio.h>
int main()
{
int x,t=1,fig;
scanf("%d",&x);
if(x/10==0) printf("%d",x);
else{
while(1)
{
while(x!=0)
{
if(x%10==0) x=x/10;
else {fig=x%10;t=t*fig;x=x/10;}
}
if(t<10) break;
else x=t;}
printf("%d",t);} 展开
4018224312 → 4*1*8*2*2*4*3*1*2 → 3072 → 3*7*2 → 42 → 4*2 → 8
编写一个程序,输入一个正整数(该整数不会超过6,000,000),输出它的阿尔法乘积。
输入格式:输入只有一行,即一个正整数。
输出格式:输出相应的阿尔法乘积。
# include <stdio.h>
int main()
{
int n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%d",&x);
while(1)
{while(1)
{
while(x%10==0) {x=x/10;}
a[n]= x%10;
x=x/10;
if(x==0) break;
n++;
}
b[k]=n;k++;
x=1;
for(j=b[k-1]+1;j<=n;j++)
{
x=x*a[j];}
if(x<10) break;
下面这种方法错在哪?
#include <stdio.h>
int main()
{
int x,t=1,fig;
scanf("%d",&x);
if(x/10==0) printf("%d",x);
else{
while(1)
{
while(x!=0)
{
if(x%10==0) x=x/10;
else {fig=x%10;t=t*fig;x=x/10;}
}
if(t<10) break;
else x=t;}
printf("%d",t);} 展开
1个回答
展开全部
输厅腔明入值 4018224312 较大,圆蚂MS VC++ 编译器 用 _int64,输入格式 %I64d
累乘 里 要 加条件 if (a[j] != 0) x=x*a[j];
#include <stdio.h>
int main() {
_int64 n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%I64d"扮告,&x);
while(1){
while(1) { a[n]= x%10; x=x/10; if(x==0) break; n++; }
x=1;
for (j=1;j<=n;j++) if (a[j] != 0) x=x*a[j];
if (x<10) break;
printf("%d\n",x);
n = 1; // 恢复 1
}
printf("%d\n",x);
return 0;
}
累乘 里 要 加条件 if (a[j] != 0) x=x*a[j];
#include <stdio.h>
int main() {
_int64 n=1,x,a[100],b[10],j,k=1;
b[0]=0;
scanf("%I64d"扮告,&x);
while(1){
while(1) { a[n]= x%10; x=x/10; if(x==0) break; n++; }
x=1;
for (j=1;j<=n;j++) if (a[j] != 0) x=x*a[j];
if (x<10) break;
printf("%d\n",x);
n = 1; // 恢复 1
}
printf("%d\n",x);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询