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

Why is this loop outputting 0 every time to sqdNumber_result?

本文关键字:sqdNumber result 输出 循环 为什么      更新时间:2023-10-16

我试图找到整数平方中每个数字的和,对于输入到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次并重写了它),但它并没有给我一个有意义的输出。

我不会问,但我已经无计可施了。

在C++中,^是xor运算符,而不是n次方。为此,您应该使用pow。

for语句不循环。第一次迭代的条件为false

有两个问题:

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

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


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

因此,乍一看,答案是使用std::pow函数来计算幂。然而,如果指数是整数,使用它可能会有缺点。原因是pow不能保证对整数幂完美工作。

将此视为使用pow()进行积分指数的危险

建议只使用一个10次方的简单值数组并进行查找。

你说你是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;
}