无锡买家具去哪里买好:C语言问题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 23:29:55
打印下列数据:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

看看我的程序哪儿错了?
#define N 4
#include "stdio.h"
main()
{int p=1,k=1,i,j,a[N+2][N+2]={0};
clrscr();
while(k<=N*N)
{for(j=p;j<=N+1-p;j++)
a[p][j]=k++;
for(i=p+1;i<=N+1-p;i++)
a[i][N+1-p]=k++;
for(j=N+1-p-1;j>=p;j--)
a[N+1-p][j]=k++;
for(i=N+1-p-1;i>=++p;i--)
a[i][p-1]=k++;
}
for(i=1;i<=N;i++)
{for(j=1;j<=N;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}

有点问题
你的程序长了点
我给你个吧
#include<iostream.h>
#define FOR(b,c) for(i=b;i<c;i++)
int main(void)
{
int a[100][100],(*p)[100],i,j,m=1,num;
cout<<"请选择需要的N*N方阵的N值\n";
cin>>num;
p=a;
for(j=0;m<num*num;j++)
{ FOR(1,num-j*2) {*((*p++)+num-1-j)=m; m++;}
FOR(1,num-j*2) {*((*p)+num-i-j)=m; m++;}
FOR(1,num-j*2) {*((*p--)+j)=m; m++;}
FOR(1,num-j*2) {*((*p)+i-1+j)=m; m++;}
p++;
} p=a;
i=(int)(num/2);
if(num%2==0) i--;
*(*(a+i)+i)=m;
for(j=0;j<num;j++) {FOR(0,num) cout<<" "<<*(*p+i);
cout<<"\n"; p++;
}
system("pause")
}