代码片段有static函数
请注意。
#include <stdio.h>
#define N 100
int scan_1()
{
int num;
do{
scanf("%d",&num);
if (num<=0||num>N)
printf("please enter a true number");
}while(num<=0||num>N);
return num;
}
void fun_array(int a[N][N],int num){
int i=0;
int j=0;
static int n=0;
static int m=1;
for(i=n;i<num-n;i++) a[n][i]=m++;
for(j=n+1;j<num-n;j++) a[j][num-n-1]=m++;
for(i=num-n-2;i>=n;i--) a[num-n-1][i]=m++;
for(j=num-n-2;j>=n+1;j--) a[j][n]=m++;
n++;
if(n<=num/2) fun_array(a,num);
}
void print_array(int a[N][N],int num)
{
int i;
int j;
for(i=0;i<num;i++){
for(j=0;j<num;j++)
printf("%4d",a[i][j]);
putchar('\n');
}
}
int xuhu_1()
{
int n,i,j,m=1;
int a[N][N]={0}; //the statement of the array
int num=scan_1();
fun_array(a,num);
print_array(a,num);
return 0;
}
int main(void)
{
int num=xuhu_1();
return 0;
}
在代码中static这个非常重要,如果没有就不能做到m,n的增加;