我用的GCC,你是用的什么工具??
你是编译没有过 还是什么其他原因~~~你把原因发下
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void first( int );
void second( int );
void second( int number )//输入的是偶数
{
int *ptr;
ptr = (int *)malloc( number * number * sizeof( int ));
if( ptr == NULL )
{
perror( "mem:" );
exit(1);
}
int row=number/2, col=number/2;//如果是4,则row为1,col为1
int Number = 1;
ptr[row * number + col ] = Number;//首先初始化 指向的地址为ptr[5],正确
int i,j;
int temp = 1;
//如果temp为1,则对col执行加操作,对row执行加操作
for(i = 1; i <= number - 1; i++ )
{
if( temp )
{
for( j = 1;j <= i; j++)
{++col;
ptr[row*number + col] = ++Number;}
for( j = 1;j <= i; j++)
{++row;
ptr[row*number + col] = ++Number;}
}
else
{
for( j = 1;j <= i; j++)
{--col;
ptr[row*number + col] = ++Number;}
for( j = 1;j <= i; j++)
{--row;
ptr[row*number + col] = ++Number;}
}
temp = !temp;
}
for( i = 0; i < number; i++)
{
ptr[ i ] = Number++;
}//为上面的代码只能成对执行,而偶数的时候,最后一行不能赋值不能执行
for( i = 0; i< number *number; i++)
{
if( i % number == 0)printf("\n");
printf("%02d ", ptr[i] );
}
free (ptr );
}
void first( int number )//输入的是偶数
{
int *ptr;
ptr = (int *)malloc( number * number * sizeof( int ));
if( ptr == NULL )
{
perror( "mem:" );
exit(1);
}
int row=number/2 - 1, col=number/2 - 1;//如果是4,则row为1,col为1
int Number = 1;
ptr[row * number + col ] = Number;//首先初始化 指向的地址为ptr[5],正确
int i,j;
int temp = 1;//flags变量
//如果temp为1,则对col执行加操作,对row执行加操作
for(i = 1; i <= number - 1; i++ )
{
if( temp )
{
for( j = 1;j <= i; j++)
{++col;
ptr[row*number + col] = ++Number;}
for( j = 1;j <= i; j++)
{++row;
ptr[row*number + col] = ++Number;}
}
else
{
for( j = 1;j <= i; j++)
{--col;
ptr[row*number + col] = ++Number;}
for( j = 1;j <= i; j++)
{--row;
ptr[row*number + col] = ++Number;}
}
temp = !temp;
}
for( i = number - 1; i >= 0; i--)
{
ptr[(number - 1) *
number + i ] = Number++;//因为上面的代码只能成对执行,而偶数的时候,最后一行不能赋值不能执行
}
for( i = 0; i< number *number; i++)
{
if( i % number == 0)printf("\n");
printf("%02d ", ptr[i] );
}
free( ptr );
}
int main( void )
{
printf("输入你要的数:");
int n;
scanf("%d", &n );
printf("你输入的数是:%d\n", n );
switch( n%2 )
{
case 0:
{first( n );
break;
}
case 1:{
second( n );
break;
}
default: break;
}
getchar();
return 0;
}我改了点
你在试下