华为2014校园招聘经历_底层软件研发_机考

注意:

文件为CPP,编译器为VS2005。

最好新建空项目,只提交一个源文件,且所有程序仅能存在于一个源文件,注意选择文件后缀。

本程序没有考虑变量存储内存优化问题,如有必要,请自己重新设计子函数,设计数值传参和指针传参。(面试时,“良好的编程风格”可能要求这些。。)

程序提交时,只允许按照样例格式输入输出,不许添加任何多余的输入输出及操作,下述程序中调试已用#define DEBUG说明,提交时注释掉此处。


简单题(60‘)

题目:(大体上是这样的)

输入一个数字(>=10,即至少是个两位数),如果是个n位数,则去掉其第一位w,输出后n-1位。

例如:

输入 25

输出 5

(注:原题目我看了三遍,才读懂说的是神么。。。)

因为在题目中已经限定了至少为两位数,且是数字,所以测试数据肯定是至少2位的数字,在程序中就不必特别做判断了。

/************************************************

Copyright (c) 2013-10-03, binzhouweichao@163.com

*************************************************/

#include <iostream>	//输入输出流操作
#include <string>	//string类,不是CString

#define DEBUG	//调试用,最后提交时将此处注释掉

using namespace std;	//标准库命名空间

int main()
{
	string str;	//声明输入的字符串
	cin >> str;	//输入的字符串放入str
	/*
	注:标准输入输出,以字符串的形式,并以空格或者回车作为结尾
	如果是int,只能存放一个字符,需要一个int数组或者其他操作
	*/
	size_t len = str.length();	//输入的字符串的长度
	string str2;	//声明输出的字符串,默认初始化为空字符串
	for(size_t i=1; i<len; i++)	//从第二个开始,也就是去掉首位开始
	{
		str2 = str2 + str[i];	//string字符串连接
	}
	cout << str2;	//输出

#ifdef DEBUG
	cout << endl;
	system("pause");
#endif
	return 0;
}


中级题(100’)

题目:(应该是这样的)

某种货币,币值有1、5、10、50、100五种,输入一个金额(数字),输出使用这五种币值拼出此金额所用的最小的张数。

如:

输入 67

输出 5

即:67 = 50 + 10 + 5 + 1 + 1


/************************************************

Copyright (c) 2013-10-03, binzhouweichao@163.com

*************************************************/

#include <iostream>	//输入输出流操作
#include <string>	//string类

#define DEBUG	//调试用,提交时注释掉此项

using namespace std;	//标准库命名空间

//如有必要,可以对下述函数段做子函数处理
int main()
{
	int money;	//限定金额的最大值为int最大值,应该够用了。。
	string str;	//声明输入的字符串
	cin >> str;	//输入到str
	money = atoi(str.c_str());	//输入的字符串转换成int
	/*
	注:因为atoi返回int,若非要较真做unsigned int转换,可以使用stringstream流操作
	*/

	int cnt = 0;	//张数计数器,初始化为0
	int divisor[5] = {100, 50, 10, 5, 1};	//币种,从大往小排,作为除数
	int remainder = money;	//余数,也就是金额缓存,每个循环剩下的金额,下个循环的起始金额,初始化为money
	int quotient;	//商,也就是每个循环需要的张数
	for(int i=0; i<5; i++)	//循环5次
	{
		quotient = remainder / divisor[i];	//此次循环所需张数
		cnt = cnt + quotient;	//张数累积
		remainder = remainder % divisor[i];	//下个循环的金额
	}
	cout << cnt;	//输出张数
	
#ifdef DEBUG
	cout << endl;
	system("pause");
#endif
	return 0;
}

高级题(160’)

见:http://blog.csdn.net/sduweichao/article/details/12023807

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值