根据要求使用循环打印值
Use loop to print values as requested
你好,请问如何在控制台中从处理中打印出上面的内容。
int result;
for (int i=100 ; i < = 10; i + = 10) {
result = 100;
for (int k=2; k <= 10; k++) {
result-=10 ;
} print(result);
println();
}
- 我的想法是它看起来像 10*10 table 因此 i 和 k 都是 < =
10.
- 其他想法是当我是奇数时我从 100 开始并且 -=10 (i > = 10)
当我是偶数时(第 2、4、6 行...)我从 10 和 +=10(i<=100)开始 然后我得到打印的 table.
但是我卡住了怎么实现
如果我的逻辑如上所述是正确的,这在代码中。
这是一个简单的示例,显示了 javascript 中的逻辑。
它不使用双循环,也不在 for 条件语句中使用智能增量,但它只是使用带有三元运算符的条件将索引从 1 递增到 10(在每次迭代时翻转的标志上)输出一种或另一种方式。
这不是最优雅的解决方案,它使用了乘法。我相信您会找到实现相同目标的最明智的方法。
let alt = true;
let counter = 0;
//infinite loop
while(true){
counter++;
let row = "";
for(let i=1; i<=10; i++){
row += (alt) ? (10*i) + ' ' : 110-(10*i) + ' ';
}
//output current row
console.log(row);
//switch alternate
alt = !alt;
//exit at iteration 10
if(counter == 10) break;
}
您可以使用 2 个嵌套循环来完成:
for (int i=0; i<10; ++i) {
for (int j=0; j<10; ++j) {
print(str(i%2 == 0 ? (10-j)*10 : (j+1)*10) + " ");
}
println();
}
或一个循环:
for (int i=0; i<100; ++i) {
int j = i%10;
print(str((i/10)%2 == 0 ? (10-j)*10 : (j+1)*10) + " ");
if (i % 10 == 9) {
println();
}
}
输出:
100 90 80 70 60 50 40 30 20 10
10 20 30 40 50 60 70 80 90 100
100 90 80 70 60 50 40 30 20 10
10 20 30 40 50 60 70 80 90 100
100 90 80 70 60 50 40 30 20 10
10 20 30 40 50 60 70 80 90 100
100 90 80 70 60 50 40 30 20 10
10 20 30 40 50 60 70 80 90 100
100 90 80 70 60 50 40 30 20 10
10 20 30 40 50 60 70 80 90 100
这是另一种变体:
void setup() {
print(reversingNumberLoop(10, 100, 10, 9));
}
String reversingNumberLoop(int from, int to, int increment, int rows){
String result = "";
String backToFront = "";
String frontToBack = "";
// loop once writing in both directions
for(int i = from; i <= to; i+= increment){
frontToBack += i + " ";
backToFront += ((to - i) + from) + " ";
}
// add line endings
frontToBack += "\n";
backToFront += "\n";
// repeat for the number of rows
for(int i = 0 ; i < rows; i++){
result += i % 2 == 1 ? frontToBack : backToFront;
}
return result;
}
它并没有做任何太聪明的事情:仍然使用 % 来交替,只是 pre-allocates 首先重复行。这将有两个连续的循环,而不是嵌套。
你好,请问如何在控制台中从处理中打印出上面的内容。
int result;
for (int i=100 ; i < = 10; i + = 10) {
result = 100;
for (int k=2; k <= 10; k++) {
result-=10 ;
} print(result);
println();
}
- 我的想法是它看起来像 10*10 table 因此 i 和 k 都是 < = 10.
- 其他想法是当我是奇数时我从 100 开始并且 -=10 (i > = 10) 当我是偶数时(第 2、4、6 行...)我从 10 和 +=10(i<=100)开始 然后我得到打印的 table.
但是我卡住了怎么实现 如果我的逻辑如上所述是正确的,这在代码中。
这是一个简单的示例,显示了 javascript 中的逻辑。
它不使用双循环,也不在 for 条件语句中使用智能增量,但它只是使用带有三元运算符的条件将索引从 1 递增到 10(在每次迭代时翻转的标志上)输出一种或另一种方式。
这不是最优雅的解决方案,它使用了乘法。我相信您会找到实现相同目标的最明智的方法。
let alt = true;
let counter = 0;
//infinite loop
while(true){
counter++;
let row = "";
for(let i=1; i<=10; i++){
row += (alt) ? (10*i) + ' ' : 110-(10*i) + ' ';
}
//output current row
console.log(row);
//switch alternate
alt = !alt;
//exit at iteration 10
if(counter == 10) break;
}
您可以使用 2 个嵌套循环来完成:
for (int i=0; i<10; ++i) {
for (int j=0; j<10; ++j) {
print(str(i%2 == 0 ? (10-j)*10 : (j+1)*10) + " ");
}
println();
}
或一个循环:
for (int i=0; i<100; ++i) {
int j = i%10;
print(str((i/10)%2 == 0 ? (10-j)*10 : (j+1)*10) + " ");
if (i % 10 == 9) {
println();
}
}
输出:
100 90 80 70 60 50 40 30 20 10 10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10 10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10 10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10 10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10 10 20 30 40 50 60 70 80 90 100
这是另一种变体:
void setup() {
print(reversingNumberLoop(10, 100, 10, 9));
}
String reversingNumberLoop(int from, int to, int increment, int rows){
String result = "";
String backToFront = "";
String frontToBack = "";
// loop once writing in both directions
for(int i = from; i <= to; i+= increment){
frontToBack += i + " ";
backToFront += ((to - i) + from) + " ";
}
// add line endings
frontToBack += "\n";
backToFront += "\n";
// repeat for the number of rows
for(int i = 0 ; i < rows; i++){
result += i % 2 == 1 ? frontToBack : backToFront;
}
return result;
}
它并没有做任何太聪明的事情:仍然使用 % 来交替,只是 pre-allocates 首先重复行。这将有两个连续的循环,而不是嵌套。