c语言程序 数字金字塔

Python011

c语言程序 数字金字塔,第1张

给,已经编译运行通过:

#include<conio.h>

#include<stdio.h>

void main()

{

int n//这个就是定义的你需要输出的行数

int i,j

printf("please input the n: ")

scanf("%d",&n)//输入需要输出的行数

for(i=0i<ni++)

{

for(j=0j<2*(n-1-i)j++) printf(" ")

for(j=0j<=ij++) printf("%d",j+1)

for(j=0j<2*i-1j++) printf(" ")

for(j=i+1j>0j--)

{

if(i==0) break

printf("%d",j)

}

printf("\n")

}

getch()

}

给你一个运行的截图

给,已经编译运行通过:

#include<conio.h>

#include<stdio.h>

void

main()

{

int

n//这个就是定义的你需要输出的行数

int

i,j

printf("please

input

the

n:

")

scanf("%d",&n)//输入需要输出的行数

for(i=0i<ni++)

{

for(j=0j<2*(n-1-i)j++)

printf("

")

for(j=0j<=ij++)

printf("%d",j+1)

for(j=0j<2*i-1j++)

printf("

")

for(j=i+1j>0j--)

{

if(i==0)

break

printf("%d",j)

}

printf("\n")

}

getch()

}

先用楼主的思路走一遍

#include "stdio.h"

void main()

{

char zm[36]={'A','B','C','D','E','F','G','H','I','J','K','L','M',

'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'}

int i,j=0,k,z                  //记住赋初始值

for(i=0i<8i++)                 //不是10

{        

for(k=6-ik>=0k--)           //改为6

printf(" ")

for(z=0z<i+1z++)     //用Z来循环 ,j自主加就行,之前方法会自动归零

{

printf("%c",zm[j])

if(z<i)

printf(" ")

j++                               //自主累加就行

}

printf("\n")

}

}

这个程序还有很多改进方式

1,数组可以去掉,直接用char输出,j初始值等于 65,判断j>90时j=48,

#include "stdio.h"

void main()

{

char j=65

int i,k,z

for(i=0i<8i++)

{

for(k=6-ik>=0k--)

      printf(" ")

for(z=0z<i+1z++)

{

 printf("%c",j)

 if(z<i)

 printf(" ")

  if(j<90)

 j++

 else

 j=48

}

printf("\n")

}

}

2,用j作主循环会好点,根据j判断i 会减少一层循环

#include "stdio.h"

void main()

{

char j=1

int i=1,k=1,s=1

while(i<=8)

{

if(k<9-i)

{

printf(" ")

k++

}

else

{

 if(j<=s)

 { if(j<=26)

    printf("%c ",j+64)

    else printf("%c ",j+21)

   j++

 }

 else

 {printf("\n")

  i=i+1

  s=s+i

  k=1

  }

}

}

}