C语言实验——打印金字塔

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;}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注