基础题:求数字的乘积根(C语言)
原题如下:求数字的乘积根。正整数的数字乘积这样规定:这个正整数中非零数字的乘积。例如整数999的数字乘积为9*9*9,得到729;729的数字乘积为7*2*9,得到126...
原题如下:求数字的乘积根。正整数的数字乘积这样规定:这个正整数中非零数字的乘积。例如整数999的数字乘积为9*9*9,得到729;729的数字乘积为7*2*9,得到126;126的数字乘积为1*2*6,得到12;12从数字乘积为1*2,得到2。如此反复取数字的乘积,直至得到一位数字为止。999的数字乘积根是2。编程输入一个长度不超过100位数字的正整数,输出计算数字乘积根的每一步结果。样例:输入:radix.in3486784401输出:radix.out34867844015160961620122 对我这个初学者来说,有点困难~~各位高手帮帮忙。最好是完整代码+注释
展开
3个回答
2013-07-08
展开全部
我写一个比较简单点的吧,只在整型范围内成立.#include <iostream>using namespace std;int Root(int n)
{
int k=1;
while(n != 0)
{
k *= n % 10;
n /= 10;
} if(k>=0 && k<=9)
{
return k;
}
return Root(k);
}void main()
{
int k=Root(1234);
cout<<k<<endl;}
{
int k=1;
while(n != 0)
{
k *= n % 10;
n /= 10;
} if(k>=0 && k<=9)
{
return k;
}
return Root(k);
}void main()
{
int k=Root(1234);
cout<<k<<endl;}
2013-07-08
展开全部
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
long i;
int l,n;
char a[100];
cin.getline(a,100);
cout<<a<<endl;
l=strlen(a);
while(l > 1)
{
i=1;
for(n=0; n<l; n++)
{
if(a[n] != '0')
i*=(a[n]-'0');
}
cout<<i<<endl;
sprintf(a,"%d",i);
l=strlen(a);
}
}
#include <cstring>
using namespace std;
void main()
{
long i;
int l,n;
char a[100];
cin.getline(a,100);
cout<<a<<endl;
l=strlen(a);
while(l > 1)
{
i=1;
for(n=0; n<l; n++)
{
if(a[n] != '0')
i*=(a[n]-'0');
}
cout<<i<<endl;
sprintf(a,"%d",i);
l=strlen(a);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-08
展开全部
#include"stdio.h"
main()
{
int b,c,i,j,k;
long a,d;
scanf("radix.in\n%d",a)
while(1)
{
if(d/10==0)
return 0;
printf("\n");
printf("radix.out\n");
for(i=0;i<sizeof(a);i++)
{
b=a/10;
if(b==0)
c=b%10;
if(c!=0)
d=d*c;
if(i==sizeofof(a)-1)
printf("%d",d);
}
}
getch();
}
main()
{
int b,c,i,j,k;
long a,d;
scanf("radix.in\n%d",a)
while(1)
{
if(d/10==0)
return 0;
printf("\n");
printf("radix.out\n");
for(i=0;i<sizeof(a);i++)
{
b=a/10;
if(b==0)
c=b%10;
if(c!=0)
d=d*c;
if(i==sizeofof(a)-1)
printf("%d",d);
}
}
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询