给,已经编译运行通过:
#include<conio.h>
#include<stdio.h>
void main()
{
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
}
}
}
}