【01】实现一个多行输出程序

输出内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
using namespace std;
void paint(int a);
int main() {
int num;
cout<<"请输入层数(0结束输入):";
cin>>num;
while(num) {
paint(num);
cout<<"层数(0结束输入):";
cin>>num;
}

cout<<endl;
return 0;
}
void paint(int a) {
int i,j,k;
for(i=1; i<=a; i++) {
for(j = 0; j<a-i; j++) {
cout<<' ';
}
for(k=0; k<2*i-1; k++) {
cout<<'*';
}
cout<<'\n';
}
for(i=a-1; i>=1; i--) {
for(j = 0; j<a-i; j++) {
cout<<' ';
}
for(k=0; k<2*i-1; k++) {
cout<<'*';
}
cout<<'\n';
}
}

利用输入输出流可以将paint函数做如下精简:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void paint(int a) {
int i,j,k;
for(i=1; i<=a; i++) {
//输出a-i个空格
if(a-i)
cout<<setfill(' ')<<setw(a-i)<<' ';
//输出2*i-1个*
cout<<setfill('*')<<setw(2*i-1)<<'*'<<'\n';
}
for(i=a-1; i>=1; i--) {
//输出a-i个空格
if(a-i)
cout<<setfill(' ')<<setw(a-i)<<' ';
//输出2*i-1个*
cout<<setfill('*')<<setw(2*i-1)<<'*'<<'\n';
}
}

欢迎关注我的其它发布渠道