博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔试题集锦(2)
阅读量:7143 次
发布时间:2019-06-29

本文共 1973 字,大约阅读时间需要 6 分钟。

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,如需转载请自行联系原作者
你可能感兴趣的文章
hdu3652
查看>>
jvm调优经验分享
查看>>
高速公路坐标高程计算软件3.3版本发布
查看>>
CF519 ABCD D. A and B and Interesting Substrings(map,好题)
查看>>
【转】Android开发之旅:环境搭建及HelloWorld
查看>>
qt creator 快捷键 (二)
查看>>
【分享】博客美化(3)为博客添加一个漂亮的分享按钮
查看>>
VS2010发布、打包安装程序
查看>>
hibernate事务配置Aop aop:advisor模式
查看>>
XSS攻击及防御
查看>>
oracle插入
查看>>
在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)...
查看>>
android开发,assets下面的资源文件不会变化/改动
查看>>
使用D3D渲染YUV视频数据
查看>>
sqlite 一条记录判断一个字段是否like另一个字段
查看>>
IE6图片元素img下出现多余空白问题
查看>>
模式与框架
查看>>
Kinect开发学习笔记之(一)Kinect介绍和应用
查看>>
nginx编译配置
查看>>
[LeetCode] 3Sum Closest 最近三数之和
查看>>