笔试题集锦(2)

来源:互联网 发布:powerdesigner 转sql 编辑:程序博客网 时间:2024/05/24 04:18

1  下面代码有哪些错误?(台湾某公司0512月笔试题)

#include <iostream>
using namespace std;

int main()
{
    
int &t1;
    
int *pi;
    
*pi = 3;
    
const double dt;
    cout
<<pi<<endl;
    
return 0;
}

答案

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点的坐标为(00),X方向向右为正,y方向向下为正,如:7的坐标为(-1-1),2的坐标为(01),编程实现输入任意一坐标(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)
{
    
int x, y;
    x 
= y = (n - 1/ 2//1的位置
    data[x][y] = 1;
    
int len = 1;
    
int count = 0;
    
int num = 2;
    DIRECTION dir 
= RIGHT;
    
while(num  <= n * n)
    
{
        
for(int i = 0; i < len; i++)
        
{
            
switch(dir)
            
{
            
case LEFT:
                
--y;    break;
            
case RIGHT:
                
++y;     break;
            
case UP:
                
--x;    break;
            
case DOWN:
                
++x;    break;
            
default:    break;
            }

            data[x][y] 
= num++;
        }

        count
++;
        
if(count == 2)
        
{
            count 
= 0;
            len
++;    
        }

        dir 
= (DIRECTION)((dir + 1% 4);
    }

}


//打印螺旋矩阵
void Output(int n)
{
    
int i, 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)
{
    
int m = max(abs(x), abs(y));
    
int rightBottom = m * m * 4 - 2 * m + 1;
    
int value = 0;
    
if(x == -m)
    
{
        value 
= rightBottom + 2 * m + m - y;
    }

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

    
else if(y == -m)
    
{
        value 
= rightBottom + 4 * m + x + m;
    }

    
else if( x == m )
    
{
        value 
= rightBottom - (m - y);
    }

    

    
return value;
}


void TestPos(int n)
{
    
int i, 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()
{
    
int n;
    
while(cin >> n)
    
{
        
if(n <= 0 || n > 100)
        
{
            cerr 
<< "Size error!" << endl;
            
break;
        }

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

    }


    
return 0;
}

原创粉丝点击