考研机试题:打印数字菱形
描述
打印一个由数字 0∼n 构成的菱形。
其中 n 位于正中心,数字靠近边缘时逐个递减,直至为 0。
例如,当 n=5时,图形如下所示:
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
现在,给定 n,请你打印相应菱形。
输入描述:
一个整数 n。
2≤n≤9
输出描述:
输出相应菱形。
输入
2
输出
0
0 1 0
0 1 2 1 0
0 1 0
0
输入
3
输出
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
代码1
#include<iostream>
using namespace std;
void rhombus(int n){
int t=0;
//打印上半菱形
for(int j=n;j>=0;j--){
//打印空格
for(int i=0;i<j;i++){
printf(" ");
}
//打印前半数字
for(int i=0;i<=t;i++){
printf("%d ",i);
}
//打印后半数字
for(int i=t-1;i>=0;i--){
printf("%d ",i);
}
t++;
printf("\n");
}
//打印下半菱形
for(int j=1;j<=n;j++){
//打印空格
for(int i=0;i<j;i++){
printf(" ");
}
//打印前半数字
for(int i=0;i<=t-j-1;i++){
printf("%d ",i);
}
//打印后半数字
for(int i=t-2-j;i>=0;i--){
printf("%d ",i);
}
printf("\n");
}
}
int main(){
int n;
cin>>n;
rhombus(n);
}
代码2
#include<iostream>
using namespace std;
int n;
//菱形每一行的输出
void rhombusro(int k){
for(int i=0;i<n-k;i++){
printf(" ");
}
for(int i=0;i<=k;i++){
printf("%d ",i);
}
for(int i=k-1;i>=0;i--){
printf("%d ",i);
}
printf("\n");
}
int main(){
cin>>n;
for(int i=0;i<=n;i++){
rhombusro(i);
}
for(int i=n-1;i>=0;i--){
rhombusro(i);
}
}