C++ 奇怪的是,我的代码不起作用

C++ 奇怪的是,我的代码不起作用,c++,C++,n除以2的数字是2、4和6,所以和是12。完美的 但产品应为1x2x4x5,因为数字在6以下,nr1的位数应为5 如果我给y一个小于6的值,它就是不起作用。。。 例如,我们保持n和x的值相同,而y的值为4 整个输出是: n=123456 x=2 y=6 s=12 nr=3 p=15 nr1=3 它甚至不计算SPNR和nr1。。。 为什么?在这两种情况下,您都在删除号码中的数字: n=123456 x=2 y=4 正如费德里克所说,在这两种情况下,你都从n中删除了一个数字。在这里,因为您使用的

n除以2的数字是2、4和6,所以和是12。完美的 但产品应为1x2x4x5,因为数字在6以下,nr1的位数应为5

如果我给y一个小于6的值,它就是不起作用。。。 例如,我们保持n和x的值相同,而y的值为4

整个输出是:

n=123456
x=2
y=6
s=12
nr=3
p=15
nr1=3
它甚至不计算SPNR和nr1。。。
为什么?

在这两种情况下,您都在删除号码中的数字:

n=123456
x=2
y=4

正如费德里克所说,在这两种情况下,你都从n中删除了一个数字。在这里,因为您使用的是if语句,而不是if-else语句,所以这两个语句可以在同一个迭代中运行,这将(或可能)每次将n减少2位

解决方案:

移除n=n/10;在这两种情况下,在两个if语句之外(和之后)执行

//*********
#包括
使用名称空间std;
int main()
{
int n,x,y,s=0,p=1;
int nr=0,nr1=0;
cout n;
cout x;
库蒂;
而(n!=0)
{
如果(n%10%x==0)
{
s=s+n%10;
nr++;
}

if(n%10I已从product块中删除n=n/10,现在在它编译之后是outputs literally nothing@Federicomabe,您必须在两个
if
s之后移动它(显然,将它从
if
的主体中删除)所以,意思是:我检查这个数字是在这个还是在这个例子中,然后,我删除这个数字。就像@Devon向你展示的一样。
  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++ ;
  }
//*********
#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 ;
                        nr++ ;
                    }

                if(n%10<y)
                    {
                        p=p*(n%10) ;
                        nr1++ ;
                    }
                n=n/10;
            }

        cout<<"s="<<s<<"\n" ;
        cout<<"nr="<<nr<<"\n" ;
        cout<<"p="<<p<<"\n" ;
        cout<<"nr1="<<nr1<<"\n" ;
    }