笔试题集锦(2)

简介:
1)  下面代码有哪些错误?(台湾某公司05年12月笔试题)
#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点的坐标为(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)
{
    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;
}




本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/12/01/579505.html,如需转载请自行联系原作者
目录
相关文章
|
网络协议 Java 调度
笔试题总结
32位机器上,以下结构的sizeof(P)为 struct A { int a; char b; int c; char d; } struct P { struct A w[2]; short b; struct A* p; } /*考察结构体对齐和填充: 结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如果不是,编译器会自动在成员间填充。
986 0
|
Java
笔试题解答
/** * @author shishusheng * @date 2018/8/22 23:35 */ import java.util.
872 0
|
机器学习/深度学习
|
机器学习/深度学习 搜索推荐 索引
|
算法 机器学习/深度学习 BI