这里有新鲜出炉的精品教程,程序狗速度看过来!
华为技术是一家生产销售通信设备的民营通信科技公司,总部位于中国广东省深圳市龙岗区坂田华为基地。华为机试题华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及网络拥有者提供硬件设备、软件、服务和解决方案。华为机试题华为于1987年在中国深圳正式注册成立。
一共三道题,难度依次递增,两个小时。第一题普遍很简单,基本都能写出来,第二题难度适中,相对费些时间,第三题一般情况下就不是我等非软件在规定时间内能驾驭的了的啦。
第一题(60分):
按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”
参考答案:
#include<iostream>
voidcut(intn,constchar*input);
intmain()
{
charstr[20][20]={"abc","1234567890"};
intn=8;//设置截取长度
intm=2;//设置字符串个数
for(inti=0;i<m;i++){
cut(n,str[i]);
}
return0;
}
voidcut(intn,constchar*input){
chartemp[100][100];
inti=0,j=0,k=0;
if(strlen(input)<=n)//若字符串长度小于或者等于要求截取长度
{//则依次将输入的字符串中的字符放入临时二维数组temp的第一行
for(i=0;i<n;i++)//并将大于n的地方补0
{
if(input[i]!=\0)
{
temp[j][k++]=input[i];
}else
{
temp[j][k++]=0;
}
}
}else//若字符串长度大于要求截取长度
{//则当列数没到达n时,依次将输入中的字符放入temp第一行
for(i=0;i<strlen(input);i++)
{
if((i+1)%n!=0)
{
temp[j][k++]=input[i];
}else
{
temp[j][k++]=input[i];//当列数到达n时,依次将输入中的字符放入temp的下一行
k=0;
j++;
}
}
while(k<n)
{
temp[j][k++]=0;//将最后一行剩下的元素补0
}
}
for(i=0;i<=j;i++){
temp[i][k]=\0;//给每一行末尾添加空字符
}
for(i=0;i<=j;i++){
std::cout<<temp[i]<<\n;//依次输出结果
}
}
还是一道第一题,我另一个同学记得
第一题:拼音转数字
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
参考答案
#include<iostream>
voidnumTrans(constchar*input,char*output);
intmain(intargc,constchar*argv[])
{
charpinYinShuZi[1000]="yiersansiwuliuqibajiu";
charshuZi[100];
numTrans(pinYinShuZi,shuZi);
std::cout<<pinYinShuZi<<std::endl;
std::cout<<shuZi<<std::endl;
return0;
}
voidnumTrans(constchar*input,char*output)
{
chartemp[100];//用于临时保存转换出的伯数字
inti=0,j=0;
for(i=0;i<strlen(input);i++){
switch(input[i]){//遍历字符串,分别将拼音转换成伯数字,并放入temp数组
casey:
i++;
temp[j++]=1;
break;
casee:
i++;
temp[j++]=2;
break;
cases:
if(input[i+1]==a){
i++;
i++;
temp[j++]=3;
}else{
i++;
temp[j++]=4;
}
break;
casew:
i++;
temp[j++]=5;
break;
casel:
i++;
i++;
temp[j++]=6;
break;
caseq:
i++;
temp[j++]=7;
break;
caseb:
i++;
temp[j++]=8;
break;
casej:
i++;
i++;
temp[j++]=9;
break;
default:
break;
}
}
temp[j]=\0;//给数字数组末尾添加空字符
for(i=0;i<=j;i++){
output[i]=temp[i];//把临时数组赋给输出字符串
}
}
第二题:去除重复字符并排序
运行时间限制:无限制
内容限制: 无限制
输入: 字符串
输出: 去除重复字符并排序的字符串
样例输入: aabcdefff
样例输出: abcdef
因为此题我没看懂是去除输入里的所有相同字符,还是仅去除相邻的有重复的字符,所以在代码里两种方法都写了,其中一种方法被我注释了
#include<iostream>
voidtransAndSort(constchar*input,char*output);
intmain(intargc,constchar*argv[])
{
charstr[100]="aabcdefffa";
charres[100];
transAndSort(str,res);
std::cout<<str<<std::endl;
std::cout<<res<<std::endl;
return0;
}
voidtransAndSort(constchar*input,char*output)
{
inti=0,j=1,n,m;
intflag=0;
chartemp[100];
charex;
temp[0]=input[0];
//for(i=1;i<strlen(input);i++){//去除重复的字符
//if(input[i-1]!=input[i]){//仅保存与前一个字符不相等的字符
//temp[j++]=input[i];//此处是去除几个相邻的重复的字符的方法
//}
//}
for(i=1;i<strlen(input);i++){//此代码块去除字符串中所有有重复的字符
for(m=0;m<j;m++){//依次将input中的字符与temp中的所有字符比较
if(temp[m]==input[i]){//若有相同则舍去
flag=1;
}
}
if(flag!=1){//flag置1则说明现input的字符与temp中的字符有重复
temp[j++]=input[i];
}else
flag=0;
}
temp[j]=\0;//这时j等于strlen(temp)
for(i=0;i<j-1;i++)
for(n=0;n<j-1-i;n++)
{
if(temp[n]>temp[n+1]){
ex=temp[n];
temp[n]=temp[n+1];
temp[n+1]=ex;
}
}
for(i=0;i<=j;i++){
output[i]=temp[i];
}
}
第三题:等式变换
输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。
1 2 3 4 5 6 7 8 9 = X
比如:
12-34+5-67+89 = 5
1+23+4-5+6-7-8-9 = 5
请编写程序,统计满足输入整数的所有整数个数。
输入: 正整数,等式右边的数字
输出: 使该等式成立的个数
样例输入:5
样例输出:21(此处经大家提醒已更正)
相关阅读 :
2014年7月华为校招机试真题-C/C++研发工程师
2014年7月华为校招机试真题-C/C++开发类
2014华为校招笔试题-Java/
华为2013校招机试题-技术类
华为2012校招软件工程师机试题(浙大站)
华为机试题2014年9月17日上下午节选
华为2014校招笔试题-java开发工程师
华为2014年上机笔试题-开发类
华为2013校招笔试试题技术类
2015届华为校园招聘机试题
2013届华为校园招聘机试题
2013年华为招聘会笔试题(机试)-技术类
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23911-1.html
诸葛亮老先生穿着开裆裤就跑出来了
就更有利于国民战斗力提升了ps