我的老师有一项任务,比如: 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
答案 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循环。希望它有所帮助。