打印金字塔:
题目描述:
小明发现电脑可以打印出一些简单有趣的图形,比如金字塔:
* *** *****
小明希望能够过更便捷的打印出金字塔,比如输入n,就输出高度为n的金字塔。请你帮助小明实现。
输入格式:
仅一个正整数 n
输出格式:
共n行,组成如题干描述的金字塔形状。
样例输入1:
4
样例输出1:
* *** ***** *******
约定:
n(2≤n≤40)
解答:
这一题我们利用双重for循环可以很轻松的解答
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
//定义变量n表示金字塔的行数,输入n。
int n;
cin>>n;
//定义外层for循环,遍历n次。
for(int i=1;i<=n;i++){
//定义内层for循环1,遍历n-i次,打印空格。
for(int j=1;j<=n-i;j++){
cout<<" ";
}
//定义内层for循环2,遍历i*2-1次,打印星号。
for(int j=1;j<=i*2-1;j++){
cout<<"*";
}
//打印完一层后换行。
cout<<endl;
}
//结束。
return 0;
}
效果:
完成
打印镂空金字塔:
题目描述:
小明希望打印出来的金字塔能够更特别一点,比如镂空的金字塔:
*
* *
* * *
* * * *
* * * * *
* * * * * *
小明希望能够过更便捷的打印出镂空的金字塔,比如输入n,就输出高度为n的镂空金字塔。请你帮助小明实现。
输入格式:
仅一个正整数 n(2≤n≤40)
输出格式:
共n行,组成如题干描述的镂空金字塔形状。
样例输入1:
5
样例输出1:
*
* *
* * *
* * * *
* * * * *
约定:
2≤n≤40
解答:
同理,这一题用双重for循环的解答
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
//定义变量n表示金字塔的行数,输入n。
//定义变量m,利用m来判断打空格还是星号。
int n,m=1;
cin>>n;
//定义外层for循环,遍历n次。
for(int i=1;i<=n;i++){
//将m赋值为1。
m=1;
//定义内层for循环1,遍历n-i次,打前面的印空格。
for(int j=1;j<=n-i;j++){
cout<<" ";
}
//定义内层for循环2,遍历i*2-1次,打印星号或空格。
for(int j=1;j<=i*2-1;j++){
//条件判断,如果m==1,打印星号,否则,打印空格。
if(m==1){
cout<<"*";
}
else{
cout<<" ";
}
//改变m的值,将m*-1。
m*=-1;
}
//打印完一层后换行。
cout<<endl;
}
//结束。
return 0;
}
效果:
完成