#include<stdio.h>
int main(void)
{
int num=0; //三角形中的每个值由它来确定
int N; //列数
int n; //行数
int j1,j2; //j1表示行,j2表示列
int w;
int e;
int q=0;
int a[25][49];
for(int i=0;i<25;i++) //先把数组内每一个值都变成0
for(int j=0;j<49;j++)
a[i][j]=0;
scanf("%d",&N); //获取列数
n=(N+1)/2; //获取行数
for(j2=0,j1=n-1;j2<N;j2++)
a[j1][j2]=++num; //先把最底层那一行的数组值确定
n--; //最底层确定后,三角形的总行数减一
j2--;
while(n!=0)
{
for(j1--,j2--,w=j2;j2>=w-n+1;j1--,j2--)
a[j1][j2]=++num; //确定三角形的右斜边
q++; //右斜边确定后,最顶层也就确定了
n--; //因为最顶层只有一个值,总行数再次减一
if(0==n)
break; //如果此时总行数为0,则无需继续完善三角形,直接跳出循环
for(j1+=2,w=j2;j2>=w-n+1;j1++,j2--)
a[j1][j2]=++num; //确定三角形的左斜边
for(j1--,j2+=2,w=j1,e=j2;j2<e+2*w-e+1;j2++)
a[j1][j2]=++num; //确定三角形的底边
n--; //底边确定后,则总行数减一
j2--;
if(0==n) //如果此时总行数为0,则无需继续完善三角形,直接跳出循环
break;
}
for(int i=0;i<25;i++)
{
for(int j=0;j<49;j++)
{
if(0==a[i][j]) //若数组为0,则不是三角形的组成值,就输出空白
printf(" ");
else
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
(C语言)数字三角形(蛇形)
最新推荐文章于 2023-11-28 21:55:46 发布