#include <iostream>
using namespace std;
int main()
{
int n,x,y,s=0,p=1 ;
int nr=0,nr1=0 ;
cout<<"n=" ;
cin>> n ;
cout<<"x=" ;
cin>> x ;
cout<<"y=" ;
cin>> y ;
while(n!=0)
{
if(n%10%x==0)
{s=s+n%10 ;
n=n/10 ;
nr++ ;
}
if(n%10<y)
{p=p*(n%10) ;
n=n/10 ;
nr1++ ;
}
}
cout<<"s="<<s<<"\n" ;
cout<<"nr="<<nr<<"\n" ;
cout<<"p="<<p<<"\n" ;
cout<<"nr1="<<nr1<<"\n" ;
}
程序的Ideea是添加一个数字n的数字,用n除以并计算它们,然后乘以小于y的数字并计算它们。 如果我给y等于或大于6的值,程序运行,总和是好的,但产品不是。 示例: 我给出了值123456 x值为2,y值为6
n=123456
x=2
y=6
s=12
nr=3
p=15
nr1=3
除以2的n位数是2,4和6所以总和是12.完美! 但是产品应该是1x2x3x4x5,因为数字小于6而nr1的位数应该是5。
如果我给一个低于6的值,它就不会工作...... 例如,我们为n和x保留相同的值,并给y值4。
整个输出是:
n=123456
x=2
y=4
它甚至不计算s p nr和nr1 ...... 为什么?
答案 0 :(得分:2)
正如Federic所说,你在两种情况下都从n中删除了一个数字。在这里,既然你正在使用if语句而不是if-else这两个语句都可以在同一个迭代中运行,每次都会(或可能)将n减少2位数。
解决方案:
删除n = n / 10;从两个案例中都可以在if语句之外(以及之后)进行。
toggle-focus
答案 1 :(得分:1)
在这两种情况下,您都会删除号码中的数字:
if(n%10%x==0)
{
s=s+n%10 ;
n=n/10 ; //*********
nr++ ;
}
if(n%10<y)
{
p=p*(n%10) ;
n=n/10 ; //*********
nr1++ ;
}
请看两行:
//*********