为什么这种不同的行为取决于它是否进入 for 语句,或者它是否是一个简单的 cout << '*'
重复三次或一个cout << "***"
?
所有句子都有一个 setw(6),就像菱形的第二行和第八行,但并非所有句子都具有相同的行为,如您所见。一些开始输出填充 6 个空格,其他统计输出填充 4 个空格。
#include <iostream>
using std::cout;
#include <iomanip>
using std::setw;
int main(){
int ast = 1,
pos = 5;
for(int i = 1; i <= 9; i++) {
cout << setw(pos);
for(int j = 1; j <= ast; j++)
cout << '*';
if(i <= 4) {
ast += 2;
pos -= 1;
}
else {
ast -= 2;
pos += 1;
}
cout << '\n';
}
cout << '\n';
cout << "cout << \"***\"\n";
cout << setw(6);
cout << "***";
cout << '\n';
cout << "for x3 cout << '*'\n";
cout << setw(6);
for(int i = 1; i <= 3; i++) // this should look like the first for statement, but not
cout << '*';
cout << '\n';
cout << "cout << '*' three times\n";
cout << setw(6);
cout << '*';
cout << '*';
cout << '*';
cout << '\n';
return 0;
}
这是我为这段代码得到的输出:
*
***
*****
*******
*********
*******
*****
***
*
cout << "***"
***
for x3 cout << '*'
***
cout << '*' three times
***
还有,这不就是:
cout << setw(6);
for(int i = 1; i <= 3; i++)
cout << '*';
和这个一样吗?
cout << setw(6);
cout << '*';
cout << '*';
cout << '*';
谢谢。
最佳答案
width
每次调用 operator <<
时,流都会自动重置(归零) .所以如果你有一个循环写入多个值,你必须使用 setw
每次循环。
关于c++ - 使用 setw、cout 和 for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090676/