C语言实现上三角蛇形矩阵不用数组,C语言蛇形矩阵填数的问题

例如:

输入:4

输出:

1  3   4  10

2  5   9  11

6  8  12 15

7 13 14 16

我写的程序如下:

#include#include#includemain(){      int a[100][100],n,j,k,i,ix,b; /*j是行,k是列,b是循环变量,ix控制每次循环次数*/       i=1;ix=1;k=1;j=1;     memset(a,0,sizeof(a));

printf("请输入一个数:");      scanf("%d",&n);      while(i!=n*n)      {                 if(k==1&&j==1)    /*把1赋给左上角的数组(第一个数)*/                  a[j][k]=i;                 i+=1;j++;                 if(k==1&&j!=1)   /*“↗”这个方向赋值*/                 {                 for(b=1;b<=ix;b++)                 a[j][k]=i;                 j--;k++;                 i+=1;                 }                 if(j==1&&k!=1)/*“↙”这个方向赋值*/                 {                  for(b=1;b<=ix;b++)                  a[j][k]=i;                 j++;k--;                 i+=1;                 }                  if(j==0)       /*因为前面的赋值循环是先赋值在对jk分别自加自减,所以有可能等于0*/                  {                         j++;                         }                 else if(k==0)                 {                         k++;                 }                 if(ix=n)                 {                 ix-=1;                 }                 printf("%d\n",a[j][k]);    /*测试用,可以无视*/      }                 for(j=1;j<=n;j++)                 {                 for(k=1;k<=n;k++)                 {                 printf("%d ",a[j][k]);  /*最后输出*/                  }                 printf("\n");                 }                 system("pause");                 }结果输入4

输出:

1 3 0 0

2 0 0 0

5 0 0 0

0 0 0 0

求解啊!

希望能在我原来的程序上修改,不要重新写另外一个程序给我,谢了!!!!

重新发吧.....

#include

#include

#include

main()

{

int a[100][100],n,j,k,i,ix,b; /*j是行,k是列,b是循环变量,ix控制每次循环次数*/

i=1;ix=1;k=1;j=1;

memset(a,0,sizeof(a));

printf("请输入一个数:");

scanf("%d",&n);

while(i!=n*n)

{

if(k==1&&j==1)    /*把1赋给左上角的数组(第一个数)*/

a[j][k]=i;

i+=1;j++;

if(k==1&&j!=1)   /*“↗”这个方向赋值*/

{

for(b=1;b<=ix;b++)

a[j][k]=i;

j--;k++;

i+=1;

}

if(j==1&&k!=1)  /*“↙”这个方向赋值*/

{

for(b=1;b<=ix;b++)

a[j][k]=i;

j++;k--;

i+=1;

}

if(j==0)       /*因为前面的赋值循环是先赋值在对jk分别自加自减,所以有可能等于0*/

{

j++;

}

else if(k==0)

{

k++;

}

if(ix

{

ix+=1;

}

else if(ix>=n)

{

ix-=1;

}

printf("%d\n",a[j][k]);    /*测试用,可以无视*/

}

for(j=1;j<=n;j++)

{

for(k=1;k<=n;k++)

{

printf("%d ",a[j][k]);  /*最后输出*/

}

printf("\n");

}

system("pause");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值