c语言方阵填数程序设计论文,C语言中按照以下方阵示例生成一个由自然数1~N的2次方组成的N阶方阵 写两段程序 在线等啊谢啦...

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

wsh422

2014.02.16

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:53%    等级:12

已帮助:6323人

第一个#include int a[100][100];int main(){ int i,j,k,n; scanf("%d", &n); memset(a,-1,sizeof(a)); //将数组设置为-1 for (i=1;i<=n;i++) //将n*n的区域赋值为0 for (j=1;j<=n;j++) a[i][j]=0; k=2; i=2; a[1][1]=1; j=1; while (1) { if (a[i][j] == -1) { break; } while (a[i][j]==0) a[i--][j++]=k++; i++; while (a[i][j]==0) a[i++][j--]=k++; j++; } if (i == n + 1) { i--; j++; while (k <= n * n) { while (a[i][j]==0) a[i--][j++]=k++; i+=2; j--; while (a[i][j]==0) a[i++][j--]=k++; j+=2; i--; } } else { j-=2; i++; while (k <= n * n) { while (a[i][j]==0) a[i++][j--]=k++; j+=2; i--; while (a[i][j]==0) a[i--][j++]=k++; i+=2; j--; } } for (i=1;i<=n;i++) { for (j=1;j<=n;j++) printf("%3d",a[i][j]); printf("\n"); } return 0;}第二个#include int a[100][100];int main(){ int i,j,k,n; scanf("%d", &n); memset(a,-1,sizeof(a)); //将数组设置为-1 for (i=1;i<=n;i++) //将n*n的区域赋值为0 for (j=1;j<=n;j++) a[i][j]=0; k=2; i=1; a[1][1]=1; j=2; while (k<=n*n) { while (a[i][j]==0) //如果还是0,就从左到右赋值 a[i][j++]=k++; i++; j--; //将i,j设为刚赋值位置的下面一个位置 while (a[i][j]==0) //如果还是0,就从上到下赋值 a[i++][j]=k++; i--; j--; //将i,j设为刚赋值位置的左面一个位置 while (a[i][j]==0) //如果还是0,就从右到左赋值 a[i][j--]=k++; i--; j++; //将i,j设为刚赋值位置的上面一个位置 while (a[i][j]==0) //如果还是0,就从下到上赋值 a[i--][j]=k++; i++; j++; //将i,j设为刚赋值位置的右面一个位置 } for (i=1;i<=n;i++) //打印结果 { for (j=1;j<=n;j++) printf("%3d",a[i][j]); printf("\n"); } return 0;}

10分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值