小弟才书学浅,特献上C语言一道,忘高手指点迷津

来源:百度知道 编辑:UC知道 时间:2024/05/13 14:20:29
void fangzhen2()
{
int num[20][20];//定义一个2维数组并且赋值为0
int i=0,j=0,t=2,n; //i,j分别表示行和列

printf("输出蛇行方阵\n");
printf("请输入方阵的阶数:");
fflush(stdin);
scanf("%d",&n);
num[i][j]=1;//给第一个数赋初值

while(t<=n*n)
{
if(i<n-1 && j<n-1)
{
num[i][++j]=t++;
for(;j>0;)//判断条件要考虑到次数问题
num[++i][--j]=t++;
num[++i][j]=t++;
for(;i>0;)
num[--i][++j]=t++;
}
else
if(j==n-1)
{
num[++i][j]=t++;
for(;i<n-1;)
num[++i][--j]=t++;
num[i][++j]=t++;
for(;j<n-1;)
num[--i][++j]=t++;
}

else
//等于N-1时
{
num[i][++j]=t++;
// printf("%d\n",num[i][j]);

for(;j<n-1&&i>=1;)
{ num[--i][++j]=t++;
printf("%d\n",num[i][j]);
}
num[++i][j]=t++;

#include <stdio.h>
#include <stdlib.h>
#define M 7
//#define N 3

int main()
{
int arr[M][M],i,j,val=0;
for(i=0;i<M+M;i++)
{if(i<M)
for(j=i;j>=0;j--)
arr[j][i-j]=++val;
else
for(j=M-1;j>=i-M+1;j--)
arr[j][i-j]=++val;
}
for(i=0;i<M;i++)
{for(j=0;j<M;j++)
printf("%5d",arr[i][j]);
printf("\n");
}
system("pause");
return 0;
}如果不是方阵要怎么修改?

你注意我给你改的地方就知道自己错哪里了
void fangzhen2()
{
int num[20][20]={0};//定义一个2维数组并且赋值为0
int i=0,j=0,t=2,n; //i,j分别表示行和列

printf("输出蛇行方阵\n");
printf("请输入方阵的阶数:");
fflush(stdin);
scanf("%d",&n);
num[i][j]=1;//给第一个数赋初值

while(t<=n*n) {
if(i<n-1 && j<n-1)
{
num[i][++j]=t++;
for(;j>0 && i<n-1;)//判断条件要考虑到次数问题
num[++i][--j]=t++;
if (i&