1) 下面代码有哪些错误?(台湾某公司05年12月笔试题)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#include
<
iostream
>
using
namespace
std;

int
main()

{
int&t1;
int*pi;
*pi=3;
constdoubledt;
cout<<pi<<endl;
return0;
}

答案
#region答案
1引用不能为空,必须在定义时同时初始化
2声明了一个整型指针,但没有指向实际的地址,因此赋值的操作为出错
3常量定义时应该同时初始化
#endregion
2)下面是一个蛇型矩阵
21 22 23。。。
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
设1点的坐标为(0,0),X方向向右为正,y方向向下为正,如:7的坐标为(-1,-1),2的坐标为(0,1),编程实现输入任意一坐标(x,y),输出所对应的数.(诺基亚05年笔试题).
#include
<
iostream
>
#include
<
cstdlib
>
#include
<
algorithm
>

using
namespace
std;

const
int
N
=
100
;

int
data[N
+
1
][N
+
1
];

enum
DIRECTION

{
RIGHT,DOWN,LEFT,UP
}
;

//
模拟整个过程
void
Simulate(
int
n)

{
intx,y;
x=y=(n-1)/2;//1的位置
data[x][y]=1;
intlen=1;
intcount=0;
intnum=2;
DIRECTIONdir=RIGHT;
while(num<=n*n)


{
for(inti=0;i<len;i++)


{
switch(dir)


{
caseLEFT:
--y;break;
caseRIGHT:
++y;break;
caseUP:
--x;break;
caseDOWN:
++x;break;
default:break;
}
data[x][y]=num++;
}
count++;
if(count==2)


{
count=0;
len++;
}
dir=(DIRECTION)((dir+1)%4);
}
}

//
打印螺旋矩阵
void
Output(
int
n)

{
inti,j;
for(i=0;i<n;i++)


{
cout<<data[i][0];
for(j=1;j<n;j++)
cout<<"/t"<<data[i][j];
cout<<endl;
}
}

//
以(1,1)所在位置作为原点,向右作为x正半轴,向下作为y正半轴
int
GetValue(
int
x,
int
y)

{
intm=max(abs(x),abs(y));
intrightBottom=m*m*4-2*m+1;
intvalue=0;
if(x==-m)


{
value=rightBottom+2*m+m-y;
}
elseif(y==m)


{
value=rightBottom+m-x;
}
elseif(y==-m)


{
value=rightBottom+4*m+x+m;
}
elseif(x==m)


{
value=rightBottom-(m-y);
}


returnvalue;
}

void
TestPos(
int
n)

{
inti,j;
for(i=0;i<n;i++)


{
cout<<GetValue(0-(n-1)/2,i-(n-1)/2);
for(j=1;j<n;j++)
cout<<"/t"<<GetValue(j-(n-1)/2,i-(n-1)/2);
cout<<endl;
}
}

int
main()

{
intn;
while(cin>>n)


{
if(n<=0||n>100)


{
cerr<<"Sizeerror!"<<endl;
break;
}
else


{
Simulate(n);
Output(n);
cout<<"*******************"<<endl;
TestPos(n);
}
}

return0;
}