打印字符题综合经验分享以及讲解(思路推理)
先看行数,在现阶段里,一般是 n 行,所以先在最外层写一个 for(1~n)
。再看每一排的个数。
*
***
*****
*******
*********
先列举每一行的数量:1,3,5,7,9;
发现每每次加了 2 ,所以用 2 作为基准值排列:2,4,6,8,10;
发现每一个数都 多了 1 ,所以减去,然后得到结果: i \times 2 - 1 ,在结合上之前的 n 行的 for
循环可以得到这样的代码:
for(int i=1;i<=n;i++){
for(int j=1;j<=i*2+1;j++){
cout<<"*";
}
cout<<endl;
}
可是我们还差了一个部分,空格。
还是找规律:5,4,3,2,1;
,这次是不是很简洁明了?再结合 i 推理答案。
i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
空格数 | 5 | 4 | 3 | 2 | 1 |
经观察可以得出结论:n-i+1;
最后再把程序一加:
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i+1;j++)cout<<" ";
for(int j=1;j<=i*2+1;j++){
cout<<"*";
}
cout<<endl;
}
是不是很简单?
总结:打表格找规律。