C ++ x并没有循环增量

时间:2016-10-09 06:13:58

标签: c++ loops if-statement for-loop cout

我的老师有一项任务,比如: x ^ 2 + y ^ 3 = z

x只用奇数填充 y只用偶数

填充
select t1.name,t1.program, t2.amountdue from tblRegistration as t1 
inner join tblDue as t2 on t2.regid= t1.id 
where t1.regdno ='TextBox Text'

我尝试像上面那样制作自己的代码,但唯一的一个循环是Y,x代表静止不动。

我想让x也循环播放。我该怎么办?

我的输出预期如下:

#include <stdio.h>
#include <string>
#include <iostream>

using namespace std;
int x,y,z;

int main(){
   for (x=1;x<=20;x++){
      if ((x%2==1)&&(y%2==0)){
         for (y=1;y<=20;y++){
            if ((x%2==1)&&(y%2==0)){
               z = (x*x) + (y*y*y);
               cout << "x^2 + y^3 =" <<z <<"\n";
            }
         }
      }
   }
}

PS。对不起,我的英语不好:D

2 个答案:

答案 0 :(得分:1)

这就是你所拥有的:

int main(){
   for (x=1;x<=20;x++){
      if ((x%2==1)&&(y%2==0)){
         for (y=1;y<=20;y++){
            if ((x%2==1)&&(y%2==0)){
               z = (x*x) + (y*y*y);
               cout << "x^2 + y^3 =" <<z <<"\n";
            }
         }
      }
   }
}

问题是第一次if ((x%2==1)&&(y%2==0)){检查。

内部for循环完成后,y的值将为21.因此,无论false的值是什么,上述条件的评估结果为x。因此,内部for循环仅执行一次。您需要删除第一个if语句。

int main(){
   for (x=1;x<=20;x++){
      for (y=1;y<=20;y++){
         if ((x%2==1)&&(y%2==0)){
            z = (x*x) + (y*y*y);
            cout << "x^2 + y^3 =" <<z <<"\n";
         }
      }
   }
}

更新,以回应OP的评论

看起来你需要更简单的代码。

int main(){

   // Start with x = 1 and increment x by 2. It will be always be odd 
   for ( x = 1; x <= 20; x += 2 ){

      // No need to create another loop. y is simply x+1
      // Since x is odd, y will be even.
      y = x+1;

      // Compute the result and print it.
      z = (x*x) + (y*y*y);
      cout << "x^2 + y^3 =" << z <<"\n";
   }
}

答案 1 :(得分:0)

因为在y内部循环之后y = 21所以之后不会执行x循环。希望它有所帮助。