C++ 奇怪的是,我的代码不起作用
n除以2的数字是2、4和6,所以和是12。完美的 但产品应为1x2x4x5,因为数字在6以下,nr1的位数应为5 如果我给y一个小于6的值,它就是不起作用。。。 例如,我们保持n和x的值相同,而y的值为4 整个输出是: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=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" ;
}