【问题标题】:Why is this loop outputting 0 every time to sqdNumber_result?为什么这个循环每次都向 sqdNumber_result 输出 0?
【发布时间】:2016-07-21 16:49:58
【问题描述】:

我试图在整数平方中找到每个数字的总和,对于输入到 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++ loops integer


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我不知道,要使用 pow 函数我需要使用#include 对吗?
    • @JamesChristie,如果这回答了这个问题,那么接受它作为答案是礼貌的。
    • 或者你只是将该值乘以它本身...我猜这会比更通用的pow() 函数更快。
    【解决方案2】:

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

    【讨论】:

    • OP 注意:通过运行调试器并单步执行函数,这将非常容易看到。
    【解决方案3】:

    有两个问题:

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

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


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

    所以乍一看答案是使用std::pow 函数来计算幂。但是,如果指数是整数,使用它可能会有缺点。原因是pow保证可以完美地处理整数幂。

    请参阅dangers of using pow() for integral exponents

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 以及“为什么这个循环每次输出0到sqdNumber_result?”的解释。在哪?您的回答似乎完全不相关。
      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多