我正试图让我的程序计算所有这些乘法: 999 * 999,999 * 998,998 * 998,998 * 997,.........直到100 * 100。
目前,它仅计算999 * 999 998 * 998 997 * 997 ... 100 * 100。 我不明白为什么?你能看看我的代码吗? 谢谢 BR
#include <iostream>
#include <vector>
#include <cmath>
int main () {
int i = 999;
int j = 999;
while (j >= 100) {
i == j ;
while (i >= j-1) {
std::cout << i*j << std::endl;
i -= j;
}
j = j-1;
}
return 0;
}
答案 0 :(得分:2)
您没有正确看到您的循环。尝试首先在表中编写要计算的数字,并使用它来构建循环。
对于第一个循环变量的一个值 - 称之为 i ,您希望它乘以1,然后是两个,然后是三个(等), j 的值。
无论 j 的值是什么,您的循环应如下所示:
for(int i=999; i>=100; --i)
for(int j=999; j>=i; j--)
; //computation goes here
在这里您清楚地看到,对于 i 的一个值,当 i = 999 时,您将使用一个 j 值,然后是两个值 j ,然后是......
如果您是编码新手,我建议您从开始循环,当您对前者感到满意时切换到 。
答案 1 :(得分:0)
你可以像这样使用两个for循环:
#include <iostream>
int main()
{
for (int i = 999; i > 99; --i)
{
for (int j = 0; j < 2; ++j)
{
std::cout << i * (i - j) << std::endl;
}
}
}
答案 2 :(得分:0)
我试图纠正你的代码,但内部的while循环确实应该被删除。删除后,我无法判断我是在重写还是更正它。无论如何,它是删除,根本不需要它。
这是正确的代码:
#include <iostream>
#include <vector>
#include <cmath>
int main () {
int i = 999;
int j = 999;
while (j >= 100) {
std::cout << i << " " << j << std::endl;
if (i==j)
--j;
else
--i;
}
return 0;
}
逻辑很简单,只要i==j
,我们--j
。每当i!=j
,我们--i
。
我们从i和j开始,在同一个位置,在循环中,当我比j落后一步时,我迈出了一步。当i和j处于相同位置时,j会迈出一步。