C语言实验——打印金字塔
时间: 1ms 内存:64M
描述:
输入n值,打印下列形状的金字塔,其中n代表金字塔的层数。
输入:
输入只有一个正整数n。
输出:
打印金字塔图形,其中每个数字之间有一个空格。
示例输入:
3
示例输出:
1
1 2 1
1 2 3 2 1
提示:
参考答案(内存最优[748]):
#include <stdio.h>
int main()
{
int n,i,j,k,m,x;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
x=2*(n-i);
for(j=1; j<=x; j++)
printf(" ");
if(i!=1)
printf("1");
for(k=2; k<i; k++)
printf(" %d",k);
for(m=i; m>=1; m--)
{
if(i==1)
printf("1");
else
printf(" %d",m);
}
printf("\n");
}
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
using namespace std;
int main(){
int m=0,i=1,n,Ni=0,a,z=2,k;
char x=' ',y='1';
cin>>n;
while(m<n){
k=m+1;
while(i<=2*n-1){
if(i==n+Ni+1)break;
if((i==n+Ni)||(i==n-Ni)){
if(i==n-Ni)cout<<y;
else{cout<<x;cout<<y;}
while((i>n-Ni-1)&&(i<n+Ni-1)){
cout<<x;
cout<<z;
i++;
if(z>=k){z--;k--;continue;}
else z++;}
z=2;i++;
continue;}
cout<<x;
cout<<x;
if(i==1){i++;continue;}
i++;}
a=i;m++;
i=1;Ni++;
if(m==n)break;
cout<<endl;}
return 0;}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。