大疆科技2019秋招测试工程师笔试题大概总结(编程题:阿拉伯数字转化成大写中文)

3 篇文章 0 订阅

大疆科技笔试总结

在8月6号我做了一下大疆科技测试工程师的笔试题,虽然我对测试工程师比较陌生,但是由于大疆科技难度比较高,所以我还是谨慎的选择了测试工程师

下面我来说一下笔试题大概内容

  1. 单选题20个
  2. 多选题10个
  3. 编程题1个

1.单选题:难度不大,但是涉及范围特别广,可能因为我选择的场次比较靠后,所以难度可能会比前面一场难度大一些,但是单选题还是很基础的,不过会涉及大疆公司关于无人机产品,或者关于图像方面的知识。

2.多选题:多选题难度也不是很高,主要会涉及到一些关于算法的知识,但是只要基础扎实,应该不会有问题,数据结构的查找排序和链表绝对是各大公司笔试常有题

3.编程题:这次的编程真的很复杂,只能说中国文字博大精深。我原本以为我有充足的时间可以写完编程,然而并没有,下面我来说一下这个编程题的内容

将阿拉伯数字转换为文字:  例如:999-->九百九十九  ; 10080-->一万零八十

难点:不只是单纯的转换数字成大写汉字,还要将它与百,万,零等表示大小的数字进行结合

笔试过程中我并没有写完,笔试之后我按照之前的思路解决了这个问题,下面是我的思路和代码

通过这张图,可以看出转化过程中我们需要找到一定的规律,除了个位,其它的每一位我们都需要标识它的单位

所以一开始我们就需要建立两个数组来存放数字和单位,

      vector<string> letter;//存放0-9字符

      vector<string> letters; //存放单位字符串

接下来找到规律后就简单了,可以按照规律将循环和判断的思路写出来就可以了

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>  
#include <vector>
#include <string>
using namespace std;
string convertNum(int num)
{
	vector<string>letter;
	letter.push_back("0");
	letter.push_back("1");
	letter.push_back("2");
	letter.push_back("3");
	letter.push_back("4");
	letter.push_back("5");
	letter.push_back("6");
	letter.push_back("7");
	letter.push_back("8");
	letter.push_back("9");
	vector<string>letters;
	letters.push_back(" ");
	letters.push_back("S");
	letters.push_back("B");
	letters.push_back("Q");
	letters.push_back("W");
	letters.push_back("S");
	letters.push_back("B");
	letters.push_back("Q");
	letters.push_back("Y");
	letters.push_back("S");
	string str;
	string des;
	char tmm[12];
	sprintf(tmm, "%d", num);//字符串格式化命令,将格式化数据写入到字符串中
	str += tmm;
	int leight = str.size();
	bool Isbool = false; //用来查看i位字符是否是0,进行标识
	for ( int i = 0; i < leight; i++)
	{
		int digit = str.at(i) - '0';//str.at(pos),返回对pos位置字符的引用
		int unit_index = leight - i - 1;
		if (i == 0 && digit == 1 && (unit_index == 1 || unit_index == 5 || unit_index == 9))
		{
			des += letters[unit_index];
		} 
		else if ( digit == 0 )
		{
			Isbool = true;
			if (unit_index ==  4 ||unit_index ==  8)
			{
				des += letters[unit_index];
			}
		}
		else
		{
			if ( Isbool )
			{
				des.append(letter[0]);
			}
			des += letter[digit];
			des += letters[unit_index];
			Isbool = false;      
		}
	}

	return des;
}
int main()
{
	int num;
	cin >> num;	
	cout << convertNum(num) << endl;
	system("pause");
	return 0;
}

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值