无法获得右对齐的数字三角形图案,在C++中使用setw提供空间



我想要一个右对齐的数字模式,使用setw来给空格当setw小于打印数字的数量时,空格就会消失,或者它会产生任何随机图案。我的代码如下:

#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int space, n,i,j,k,l,m;
cin>>n;
for (k = n; k <=2*n-1; k++)
{
cout<<setw(k);
}
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
cout<<j;
}
cout<<endl;
}
return 0;
}

我得到的输出是(n=5(:

1
12
123
1234
12345

我想要的输出是(n=5(:

1
12
123
1234
12345

第一个for循环不是必需的。

setw设置下一个字段(setw之后的字段(的字段长度。因此,如果下一个字段是空字符串,setw(x)将只保留x个字符的空间。此外,值x应等于n - i(如果要打印的字符数为1,则需要(5-1(,即4个空格(

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n, i, j;
cin >> n;
for (i = 1; i <= n; i++) {
cout << setw(n - i) << "";
for (j = 1; j <= i; j++) {
cout << j;
}
cout << endl;
}
return 0;
}

最新更新