一些软件公司在线笔试题

一 中兴2016年校招
输入数字n,打印阵列。例如:

输入3

输出:
1*2*3
6*7*8
4*5*6

输入4
输出:
1*2*3*4
9*10*11*12
13*14*15*16
5*6*7*8

解题思路:
(本人能力有限,方法较笨,欢迎在评论里提供个好的方法)
定义一个二维数组,依次给数组的第0、n、1、n-1、2、n-2…行赋值,这样赋值刚好是一个顺序序列。最后依次输出二维数组。代码如下,经过测试无误:

int main()
{
    int n = 0;
    std::cin >> n;
    int **arr = new int*[n];  //定义二维数组
    for(int i=0;inew int[n];
    }
    int times = 0; //定义当前打印的次数,比如n为4时,需要打印0--3次
    int rows = 0;  //定义当前赋值的行编号,比如n为4,则赋值行顺序为0312
    int num = 1;  //定义当前的赋值,比如n为4,则赋值序列为1--16;
    int begin1 = n;  //这两个值的作用是记录和变换当前的打印行号
    int begin2 = 0;
    while (timesfor(int cols=0;colsif(times%2==0) {
            rows = begin1 - 1;
            begin1 = rows;
        } else {
            rows = begin2 + 1;
            begin2 = rows;
        }
        times++;
    }
    for(int i=0;ifor(int k=0;kif(k!=n-1) {
                std::cout << arr[i][k] << "*";
            }
            else {
                std::cout << arr[i][k] << endl;
            }
        }
    }
    for(int i=0;i//释放二维数组的空间
        delete[] arr[i];
    }
    delete [] arr;
    return 0;
}

二 华为
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )。
例如:输入0xA,输出10。
该代码是参考网上非常牛的代码,如下:

#include 
using namespace std;

int main()
{
    int a;
    while(cin>>hex>>a){
    cout<

你可能感兴趣的:(c++知识点)