为什么这个循环每次都输出0到sqdNumber_result?

时间:2016-07-21 16:49:59

标签: c++ loops integer

我试图找到整数平方的每个数字的总和,对于输入到sqdnumber的任何整数,它输出0到sqdNumber_result,我无法找出原因。

此外,这是通过edX,但我已经被困了一个星期左右这个问题,我已经看了很多不同的主题,但没有找到任何有用的东西。

我使用了代码块来编写它,但测试它的系统使用了编解码器

void squaredSum(int sqdnumber,int &sqdNumber_result) {
for (int i=1; i>1; i++){
    if (sqdnumber >= ((10^(i-1))-1)){
        int rem = (sqdnumber % (10^i));
        int rem1 = (sqdnumber % (10^(i-1)));
        int temp = (rem - rem1);
        sqdNumber_result = sqdNumber_result + (temp^2);
    }

    else{
        break;
    }
}
}

我是编码新手,只是学习用C ++做循环。

这是循环的第一次迭代我已经让他们的系统实际给我一个输出(我写了并重写了20次左右),但它并没有给我一个有意义的输出。

我不会问,但我的机智已经结束了。

4 个答案:

答案 0 :(得分:5)

在C ++中,^xor operator,而不是第n次幂。为此,您应该使用pow

答案 1 :(得分:3)

for语句不循环。第一次迭代时条件为假

答案 2 :(得分:1)

有两个问题:

for (int i=1; i>1; i++){

此循环根本不会循环,因为永远不会满足条件i>1

第二个问题是使用^进行电源操作。 C ++中的^不是幂运算符,而是exclusive-or运算符。

乍一看,答案是使用std::pow函数来计算能力。但是,如果指数是整数,则可能存在使用它的缺点。原因是pow 保证完全适用于整数幂。

dangers of using pow() for integral exponents

建议只使用功能为10的简单数组并进行查找。

答案 3 :(得分:-3)

你说你是C ++的新手所以我试图在没有使用for循环的情况下得到一个解决方案,并试图让它变得尽可能简单。 如果这有任何帮助,请告诉我。

//Code to calculate the sum of each digit squared//
#include<iostream>

using namespace std;
int main ()
{
    int integer1,integer2,sum, square;

    cout<<"Please enter two integers"<<endl;

    cin>>integer1>>integer2 ;

    cout<<"The sum of your integers is"<<" "<<endl;

    sum = (integer1+integer2);

    cout<<sum<<endl;

    cout<<"The square of your sum is"<<" "<<endl;

    square = (sum*sum);

    cout<<square<<endl;

return 0;
}