C++ 仅使用嵌套while循环打印表
我正在尝试用C++打印下表:C++ 仅使用嵌套while循环打印表,c++,if-statement,while-loop,nested-loops,cout,C++,If Statement,While Loop,Nested Loops,Cout,我正在尝试用C++打印下表: 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 2 2 4 6 8 10 12 14 16 18 20 3 3 6 9 12 15 18 21 24 27 30 4 4
1 2 3 4 5 6 7 8 9 10
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100
仅使用嵌套的而循环
我这里有两个主要问题:
- 如果不在开头使用非嵌套的
while
(打印第一行),或者在第一行不使用if
语句,我不知道该如何操作
- 使用
setw
我在尝试将数字与两位数字对齐时遇到问题
这是我试过的
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int k=0;
while(k<=10)
{cout << k << setw(5);
k++;
};
cout << "\n";
int i=1;
while(i<=10){
cout << i << setw(5);
int j=1;
while(j<=10){
cout<< i*j << setw(5);
j++;
}
cout << "\n";
i++;
}
return 0;
}
两位数字没有正确对齐。另一方面,如果不使用if
语句,我想不出一种方法来修改循环,以便只增加两位数的空间
因此,我是否遗漏了一些内容,或者如果不使用if
或非嵌套while
?则无法打印上表,我认为您希望隐藏第一个0值。为了隐藏它,我做了一些小动作。没有if语句,所有打印都嵌套在while中
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int i = 0, k = 0;
while (i < 10){
int j = 0;
while (j <= 10){
cout << left << setw(5);
(i || j || k) && cout << j + i * j + !j * (i + 1);
!(i || j || k) && cout << "";
j++;
}
cout << "\n";
i += k++ > 0;
}
return 0;
}
说明:
我使用j作为种子,I*j作为第(j+1)列的新值。
它非常适合从第一行第二列到最后一行最后一列
对于第一列,j始终为0。为了让它工作,我用了!j*(i+1),它为第一列打印0到10
要隐藏第一行和第一列的0,所有i、j和k都是0。对于所有其他单元格,其中至少有一个单元格的值不是0
如果仍然不清楚,我将举例说明。我认为您希望隐藏第一个0值。为了隐藏它,我做了一些小动作。没有if语句,所有打印都嵌套在while中
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int i = 0, k = 0;
while (i < 10){
int j = 0;
while (j <= 10){
cout << left << setw(5);
(i || j || k) && cout << j + i * j + !j * (i + 1);
!(i || j || k) && cout << "";
j++;
}
cout << "\n";
i += k++ > 0;
}
return 0;
}
说明:
我使用j作为种子,I*j作为第(j+1)列的新值。
它非常适合从第一行第二列到最后一行最后一列
对于第一列,j始终为0。为了让它工作,我用了!j*(i+1),它为第一列打印0到10
要隐藏第一行和第一列的0,所有i、j和k都是0。对于所有其他单元格,其中至少有一个单元格的值不是0
如果仍然不清楚,我将举例说明。需要考虑的事项:
- 输出选项卡而不是尝试设置宽度要容易得多,
虽然您对输出外观的控制会减少(它会
取决于控制台的制表位宽度)。但是你的标准标签停止了
将处理您的值范围李>
- 您的问题陈述没有说明可以使用多少while循环
- 可以使用while循环模拟if语句,如下所示:
while(j == 0){
cout << i << '\t';
break;
}
while(j==0){
可以考虑以下事项:
- 输出选项卡而不是尝试设置宽度要容易得多,
虽然您对输出外观的控制会减少(它会
取决于控制台的制表位宽度)。但您的标准制表位
将处理您的值范围
- 您的问题陈述没有说明可以使用多少while循环
- 可以使用while循环模拟if语句,如下所示:
while(j == 0){
cout << i << '\t';
break;
}
while(j==0){
如果使用制表符分隔列会怎么样?如果不需要0,则可以设置if条件以检查其是否为0,然后打印空格。如果需要使用setw,则可以检查数字是否大于9或小于100,然后相应地调整空格。'\t'
字符可用于对齐文本。是否考虑使用在0处开始i
而不是在开始处有一个单独的循环?对于非嵌套的while循环,您可以让您的循环从0开始,或者转到11并相应地打印数字,当两个变量都为0时,通过打印空格来隐藏0。如果您使用制表符来分隔列呢?如果不需要0,您可以设置if条件要检查其是否为0,请打印空格。如果需要使用setw,则可以检查数字是否大于9或小于100,然后相应地调整空格。'\t'
字符可用于对齐文本。您是否考虑过在0处使用起始i
而不是在起始处使用单独的循环?对于非嵌套while loop,你可以让你的循环从0开始,或者转到11,并相应地打印数字,当你得到两个变量为0时,通过打印空格隐藏0。现在我添加了一个解释。现在我添加了一个解释。