2014华为编程大赛二轮题目
华为编程大赛题目

cin>>src>>des;
cout<<str_str(src,des)<<endl;
rቤተ መጻሕፍቲ ባይዱturn 0;
}
unsigned int str_str(char * src, char *dst)
{
unsigned int loc=0;
返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
{
loc_point=src_tmp;
loc=src_tmp-src+1;
src_tmp++;
dst_tmp++;
}else
输入:n 游戏总人数 s 报数的起始编号 m 报数的数值
输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中
示例
n=7 s=2 m=3 出圈次序为:4 7 3 1 6 2 5
n=3 s=1 m=2 出圈次序为:2 1 3
#include<iostream>
*temp=-1;
if(n1==1)
break;
while(m1)
{
if(temp==end)
temp=p;
else
2014华为机试笔试题目

2014华为机试笔试题目2014华为机试笔试题目1.输入摸一个数,然后将其倒过来相加,如果和不是回文串,那么将和再采取同样的操作,在判断得到的是否为回文串,这样往返7次,如果其中有一次是回文就直接打出来,若都没有,那么输出0;也很简单!用库函数更简单,itoa这个!整数转成字符,然后判断回文!2.关于匹配的字符串的个数的最大值,即目标字符串与多个字符串比配,找出匹配最多的那个字符串。
其实代码很简单,我当时用2个数组,下标即为字符,值为出现次数,这样比较即可;可是我输入字符的代码写错了比如要输入Li si;到一个字符数组里面,我写成了char a[200];cin a;//这里错了,应该写为cin.getline(a,200);因为cin输入遇到空格就认为输入结束,所以只有li,没有si3.输入一个十进制的数,与一个n整数,求输出这个十进制数的n 进制的数!分析:哎,真倒霉,可以用atoi函数啊itoa函数#include cstdlib #include cstdio int main(){int num = 10; char str[100]; itoa(num, str, 2);printf( %s\n , str);return 0;}itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数。
在上例中,转换基数为10。
10:十进制;2:二进制于是想到了一个十进制转二进制的方法:#include cstdlib#include cstdioint main(){int num = 10;char str[100];int n = atoi(itoa(num, str, 2)); printf( %d\n ,n); return 0;}。
华为2014年上机笔试题

华为2014年上机笔试题华为2014年上机笔试题1.输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50参考代码:#includemain(){int num[50]={0};int i,n;printf(“请输入整型数组的长度(1~50):”);scanf(“%d”,&n);printf(“请输入整型数组的元素:”);for (i=0;i<n;i++)< bdsfid="102" p=""> </n;i++)<>{scanf(“%d”,&num[i]);}int min_num=num[0];int max_num=num[0];for(int j=0;j<n;j++)< bdsfid="109" p=""> </n;j++)<>{if(max_num<num[j])< bdsfid="112" p=""> </num[j])<>max_num=num[j];else if(min_num>num[j])min_num=num[j];}int sum=min_num+max_num;printf(“数组中最大与最小值之和:%d\n”,sum);return 0;}2.求两个长长整型的数据的和并输出,例如输入1233333333333333 。
3111111111111111111111111.。
,则输出。
#include#include#includemain(){char *num1,*num2; //两个长长整型数据char *sum;// int temp;int len_num1,len_num2; // 两个长长整型数据的长度int len_max,len_min;num1=(char*)malloc(sizeof(char));num2=(char*)malloc(sizeof(char));printf(“输入两个长长整型数据:”);scanf(“%s”,num1);printf(“输入两个长长整型数据:”);scanf(“%s”,num2);len_num1=strlen(num1);len_num2=strlen(num2);len_max=(len_num1>=len_num2)? len_num1:len_num2;len_min=(len_num1<=len_num2)? len_num1:len_num2;int len_max1=len_max;sum=(char*)malloc(sizeof(char)*len_max);memset(sum,0×00,len_max+1);//切忌初始化for(;len_num1>0&&len_num2>0;len_num1–,len_num2–){sum[len_max--]=((num1[len_num1-1]-’0′)+(num2[len_num2-1]-’0′));}if(len_num1>0){sum[len_max--]=num1[len_num1 - 1 ]-’0′;len_num1–;}if(len_num2>0){sum[len_max--]=num1[len_num2 - 1]-’0′;len_num2–;}for(int j=len_max1;j>=0;j–) //实现进位操作{// temp=sum[j]-’0′;if(sum[j]>=10){sum[j-1]+=sum[j]/10;sum[j]%=10;}}char *outsum=(char*)malloc(sizeof(char)*len_max1);j=0;while(sum[j]==0) //跳出头部0元素j++;for(int m=0;m<len_max1;j++,m++)< bdsfid="176" p=""> </len_max1;j++,m++)<>outsum[m]=sum[j]+’0′;outsum[m]=’\0′;printf(“输出两长长整型数据之和:%s\n”,outsum);return 0;}3.通过键盘输入一串小写字母(a~z)组成的字符串。
2014计算机二级Java程序设计真题及答案(网友版)

2014计算机二级Java程序设计真题及答案(网友版)本题定义了一个求两个数的值的方法max,并调用该方法计算67和23的值。
public class javal{public static void main(String[]args){javal temp=new javal();int res=max(67,23);System.out.println("res="+res);}static int maX( ){int maxNum;if(a>b);elsemaxNum=b;;}}二、基本操作题(共18分)本题统计score[]={37,89,63,60,59,78,91)中成绩不及格的人数。
public class javal{public static void main(String[]args){int score[]={37,89,63,60,59,78,91),int sum=0:int i=0;while(i if(score[i]>=60){;;};i++;}System.OUt.println("below 60 sum:"+sum);}}23.下列代码的执行结果是( )。
public class Test{public static void main(String args[]) {System.out.println(5/2);System.OUt.println(100%3.O)}}A.2和1B.2和1.0C.2.5和1D.2.5和1.0 高手指点呀34.resume()方法恢复( )的执行。
A.通过调用stop()方法而停止的线程B.通过调用sleep()方法而停止运行的线程C.通过调用wait()方法而停止运行的线程D.通过调用suspend()方法而停止运行的线程。
2014华为java笔试题目

2014华为java笔试题目一、单项选择题是从语言改进重新设计。
++答案:B2.下列语句哪一个正确程序经编译后会产生machinecode程序经编译后会产生bytecode程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有中的constructor不可省略必须与class同名,但方法不能与class同名在一个对象被new时执行D.一个class只能定义一个constructor答案:c4.提供java存取数据库能力的包是答案:A5.下列运算符合法的是A.&&B.:=答案:A6.执行如下程序代码a=0;c=0;do{--c;a=a-1;}while;后,c的值是-1D.死循环答案:c7.下列哪一种叙述是正确的修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住c.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号答案:D8.下列语句正确的是A.形式参数可被视为localvariableB.形式参数可被字段修饰符修饰c.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法c.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、多项选择题程序的种类有A.类2.下列说法正确的有A.环境变量可在编译sourcecode时指定B.在编译程序时,所能指定的环境变量不包括classpath一次可同时编译数个java源文件能指定编译结果要置于哪个目录答案:BcD3.下列标识符不合法的有$答案:AcD4.下列说法错误的有A.数组是一种对象B.数组属于一种原生类=[]={31,23,33,43,35,63}D.数组的大小可以任意改变答案:BcD5.不能用来修饰interface的有答案:AcD6.下列正确的有不会改变实际参数的数值能改变实际参数的参考地址不能改变实际参数的参考地址能改变实际参数的内容答案:AcD7.下列说法错误的有A.在类方法中可用this来调用本类的类方法B.在类方法中调用本类的类方法时可直接调用c.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:AcD8.下列说法错误的有面向对象语言容许单独的过程与函数存在面向对象语言容许单独的方法存在语言中的方法属于类中的成员语言中的方法必定隶属于某一类,调用方法与过程或函数相同答案:ABc9.下列说法错误的有A.能被成功运行的javaclass文件必须有main方法就是javaAPI可利用jar选项运行.jar文件D.能被Appletviewer成功运行的javaclass文件必须有main 方法答案:BcD三、判断题程序中的起始类名称必须与存放该类的文件名相同。
2014年大学生程序设计竞赛试卷与参考解答

2014年大学生程序设计竞赛试卷与参考解答(注意:当某道试题设计完成并调试通过确认后,请举手当着监考人员的面运行程序,并把运行结果填入该题的数据测试后空白处。
)1.旅馆里有10000间房间,从1到10000编了号。
第一位服务员把所有的房间门都打开了,第二位服务员把所有编号是2的倍数的房间进行“相反处理”,第三位服务员把所有编号是3的倍数的房间作“相反处理”,……,第n(1<=n<=10000)位服务员把所有编号是n的倍数的房间作“相反处理”。
问第n个服务员来过后,问共有多少张门是打开的(C)。
(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。
)给出以下参数的结果:n=1179, C= 5261n=9291, C= 801n=5127, C= 4915#include<iostream>using namespace std;int main(){int i,j,n; //i为服务员编号,j为房间编号int a[10001];cin>>n;for(int t=1;t<10001;t++)a[t]=1;for(i=2;i<=n;i++)for(j=i;j<10001;j++)if(j%i==0) a[j]*=-1;cout<<"打开的房间数为:";j=0;for(i=1;i<10001;i++)if(a[i]==1)j++;cout<<j<<endl;return 0;}2、有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。
小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。
然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。
华为机试题
华为2014年机试题1//华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和//输入以逗号隔开#include<stdio.h>#define N 50void sort(int a[],int n);int main(void){char str[100];int a[N]={0};gets(str); //要点1:动态的输入1--50个整数,不能确定个数,只能用字符串输入,然后分离出来int i=0;int j=0;int sign=1;while(str[i]!='\0'){if(str[i]!=',') //输入时要在半角输入{sign=1;if(str[i] == '-') //要点:2:有负整数的输入{i++;sign=-1;}a[j]=a[j]*10 + str[i]-'0'; //要点3:输入的可以是多位数a[j]*=sign; //【这里有BUG,如-12,会变成-10+2,应该对结果乘以符号,而不是每一位乘以符号】}i++;if(str[i]==',' || str[i]=='\0') //这个判断是在i自加以后j++; //j就是a数组的个数范围0到j-1}sort(a,j);printf("Max number + Min number = %d",a[0]+a[j-1]);return 0;}void sort(int a[],int n) //选择排序{int i,j;int k;int temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[k]>a[j])k=j;}if(i!=k){temp = a[k];a[k] = a[i];a[i] = temp;}}for(i=0;i<n;i++)printf("%-5d",a[i]);puts("");}完善版://华为2014年机试题1:输入1--50个数字,求出最小数和最大数的和//输入以逗号隔开#include<stdio.h>#define N 50void sort(int a[],int n);int main(void){char str[100];int a[N]={0};gets(str); //要点1:动态的输入1--50个整数,不能确定个数,只能用字符串输入,然后分离出来int i=0;int j=0;int sign=1;while(str[i]!='\0'){if(str[i]!=',') //输入时要在半角输入{if(str[i] == '-') //要点:2:有负整数的输入{// i++; //易错点1sign=-1;}else if(str[i]!='\0') //不用else的话,负号也会减去‘0’ {a[j]=a[j]*10 + str[i]-'0'; //要点3:输入的可以是多位数}}i++;if(str[i]==',' || str[i]=='\0') //这个判断是在i自加以后{a[j]=a[j]*sign; //易错点2sign=1; ////易错点3j++; //j就是a数组的个数范围0到j-1 }}sort(a,j);printf("Max number + Min number = %d",a[0]+a[j-1]);return 0;}void sort(int a[],int n) //选择排序{int i,j;int k;int temp;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++){if(a[k]>a[j])k=j;}if(i!=k){temp = a[k];a[k] = a[i];a[i] = temp;}}for(i=0;i<n;i++)printf("%-5d",a[i]);puts("");}结果:华为2014校园招聘的机试题目和2013年的完全一样。
2014年华为机考内部题库
2014年7月6日9:30 B组
第一题输出大写字母
输入一个字符串,输出其中的大写字母。
输入:2,sdARSFGfg
输出:ARSFG
第二题约瑟夫环
N个人报数,数到3就出队,输出最后一个人是几号。
输入:整数N
输出:最后一个人的号码
第三题下围棋
输入一个10*10的棋盘,0代表空,1代表黑子,2代表白子。
输入落子的坐标和棋子的颜色。
输出:具体应该就是围棋的规则,记不住了,总之就是错误输出一个大数,正确的话没有吃掉子就输出0,吃子的话输出吃掉的子的个数(具体忘了,大概就是整数代表黑子个数,负数代表白子个数)
输入:一个正确的残局(10*10)
一个落子(如4 3 1代表在坐标(4,3)上下一个黑子,测试貌似是最少下一步棋。
也可能是几步棋,最多没说,应该就是分出胜负就结束了吧)
输出: 0
或者正整数
或者负整数
或者一个大数。
华为编程大赛试题2
一、单选题(每题1分,共10题)
1、以下叙述中不正确的是______。
A)在不同的函数中可以使用相同名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
2、下列全局变量定义中,正确的是:______。
输入:(12+345)*25)-34输出:(12+345)*25-34
输入:(543+(256-43)*203))+24
输出:(543+(256-43)*203)+24
输入:((1+2)*((34-2))+((2*8-1)
输出:((1+2)*(34-2)+2*8-1)
void Bracket(char* src, char* dst);
如果匹配则通过dst输出原串;
如果不匹配则根据要求去处多于括号后通过dst输出匹配后的串
示例
输入:12+(345*25-34)输出:12+(345*25-34)
输入:12+(345*(25-34)输出:12+(345*25-34)
输入:
oN电路板的引脚数量;(1,2), (3,4) , ......连线的方式。(1,2)表示1、2号引脚存在连线。
o
要求实现函数:
unsigned int Lay_line(int n, unsigned int *p)
不产生交叉返回0;产生交叉返回1
输入参数:n:电路板引脚个数;
p:指向一个数组(长度固定为64),表示电路板引脚连接方式;输入:1 4 2 3 0 (0表示布线结束)
华为第三届编程大赛
编程题(共3题,第一题20分,第二题30分,第三题50分,共100分。
请上机编写程序,按题目要求提交文件。
本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。
1、排序算法(20分)问题描述将给定的无序整数数组降序排列后输出,输入的无序数组长度为N,类型为unsigned int要求实现函数void DscSort (const int InputArray[], unsigned int n, int OutputArray[]) 【输入】InputArray:给定的无序数组n:数组长度【输出】OutputArray:排序后的数组【返回】无示例输入:InputArray={1,5,4,8,3,2,9,6,7,0}输出:OutputArray={9,8,7,6,5,4,3,2,1,0}2、查找最大的不重复数(30分)问题描述如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。
例如,105、1234和12121都是“不重复数”,而11、100和1225不是。
给定一个正整数A,返回大于A的最小“不重复数”。
A小于100000要求实现函数unsigned int GetNotRepeatNum(unsigned int lValue)【输入】lValue:给定的数字,返回大于该值的最小不重复数【输出】无【返回】大于iValue的最小不重复数示例输入:iValue =54返回: 56输入:iValue =10返回: 12输入:iValue =98返回: 101输入:iValue =21099返回: 212013、字符串匹配(50分)问题描述判断包含通配符的匹配字符串是否完全匹配输入的字符串,匹配字符串中包含的通配符仅有‘*’和‘?’,且通配符不会连续出现。
(要求完全匹配,而不是包含)其中,通配符‘*’:代替0个或多个字符,通配符‘?’:代替一个字符要求实现函数int GetMatchSta (const char *ArrStr, const char *KeyStr)【输入】 ArrStr:给定的字符串KeyStr:包含通配符的匹配字符串【输出】无【返回】是否匹配,匹配返回1,不匹配返回0示例输入:” abcdefg”, “a*'”返回:1输入:“tommababcabc” , t?m*ab*abc返回:1。