一些软件公司在线笔试题

一 中兴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;i<n;i++) {
        arr[i] = new 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 (times<n) {
        for(int cols=0;cols<n;cols++) {
            arr[rows][cols] = num;
            num++;
        }
        if(times%2==0) {
            rows = begin1 - 1;
            begin1 = rows;
        } else {
            rows = begin2 + 1;
            begin2 = rows;
        }
        times++;
    }
    for(int i=0;i<n;i++) {
        for(int k=0;k<n;k++) {
            if(k!=n-1) {
                std::cout << arr[i][k] << "*";
            }
            else {
                std::cout << arr[i][k] << endl;
            }
        }
    }
    for(int i=0;i<n;i++) {   //释放二维数组的空间
        delete[] arr[i];
    }
    delete [] arr;
    return 0;
}

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

#include <iostream>
using namespace std;

int main()
{
    int a;
    while(cin>>hex>>a){
    cout<<a<<endl;
    }
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值