我正在编写一个能够计算前n-1位数乘积的程序 注意:如果高音前两位数。
输入4位数时代码正常工作,例如:1234,产品为6。无法弄清楚高音部分
到目前为止,我尝试了这个,但没有解决方案:
using namespace std;
int main()
{
int n , sum = 0, s,d,k,w, product ;
cout <<"Enter number: " << endl;
cin >> n;
if ((n>1) && (n<10000)) {
{
s= n/10;
d = n/100%10; // 2.
k = n/1000%100%10; //1.
w = n/10%10; //3.
//1234
product = w*d*k;
if ((n>1) && (n<1000)) {
s = n/10;
d = n/100%10; // 2.
k = n/1000%100%10; //1.
w = n/10%10; //3.
product = k*d;
}
cout <<"Sum of digits inp numb is : " << d+k+w << " and product is : " << product << endl;
cout << "w: " << w << " k: " << k << " d: " << d << " s: " << s << endl;
}
}
return 0;
}
答案 0 :(得分:0)
if ((n>1) && (n<1000)) {
s = n/10;
d = n/100%10; // 2.
k = n/1000%100%10; //1.
w = n/10%10; //3.
product = k*d;
}
这部分应该是你的高音&#34;部分。这一行就是问题所在:
product = k*d;.
如果n < 1000
,则k变为0%100%10
0
。因此你的产品是0.我认为你的意图是:
product = w*d;
对于一般解决方案,反复划分并取模数的运行积。像这样:
n = n/10;
product = 1;
while (n > 0){
product = product * (n%10);
n = n/10;
}