华为最全上机笔试题目

合集下载

华为笔试真题及答案

华为笔试真题及答案

华为笔试真题及答案1、华为公司的全称为()A、深圳市华为技术有限公司B、华为技术有限公司C、华为公司D、我司(答案:B,答A、C者酌情给分,答D者马上辞退,我司三令五申制止使用该华为内部土语,屡禁不止,老员工不行教也,只好从新员工抓起,格杀勿论)2、华为公司的企业性质是()A、民营B、私营C、国营D、上市公司(答案:A,此题主要让考生了解公司的性质)3、华为公司的商标象征()A、红太阳B、菊花C、扇贝(答案:B,答A者酌情给分,答C者马上辞退,每天就想着吃)4、从以下选项中选择出公司的常务副总裁()A、任正非B、孙亚芳C、李一男D、郑宝用E、张燕燕(答案:BD,答C者马上辞退,让他到李一男的公司去报到吧)5、华为公司的年终奖一般是在每年的什么时候发()A、元旦后B、春节前C、7月下旬或8月上旬D、劳动节前E、国庆节前(答案:C,切记,由于是年中奖,而不是年终奖)6、华为公司的配给你的”股票是()A、**发的B、用自己的奖金去买(答案:B)7、老板常说的土八路,是指()A、老板自己的革命年月的光芒历史B、本地化的用服兄弟C、季度考核为D的兄弟(答案:B)2023华为笔试真题及答案二1. 找错void test1(){char string[10];char* str1=0123456789;strcpy(string, str1);}答:外表上并且编译都不会错误。

但假如string数组原意表示的是字符串的话,那这个赋值就没有到达意图。

最好定义为char string[11],这样最终一个元素可以存储字符串结尾符\0;void test2(){char string[10], str1[10];for(int I=0; I10;I++){str1[I] =a;}strcpy(string, str1);}答:strcpy使用错误,strcpy只有遇到字符串末尾的\0才会完毕,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]=\0,这样就正常了。

华为校园招聘上机题

华为校园招聘上机题

目录样题-初级题:从考试成绩中划出及格线 (2)样题-中级题:亮着电灯的盏数 (2)样题-高级题:地铁换乘 (3)8.29去掉最大值、最小值之后剩下的个数 (3)8.29从5个人中选取2个人作为礼仪 (4)8.29验证括号是否匹配 (5)8.31回文数 (5)8.31将第一行中含有第二行中“23”的数输出并排序 (6)8.31翻译电话号码 (6)9.1.AM 将整数倒序输出,剔除重复数据 (7)9.1.AM 大数相减 (8)9.1.AM 判断if语句括号是否合法 (8)9.1.PM (8)9.1.PM (9)9.1.PM (9)样题-初级题:从考试成绩中划出及格线10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分样题-中级题:亮着电灯的盏数一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。

每盏电灯由一个拉线开关控制。

开始,电灯全部关着。

有n个学生从长廊穿过。

第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。

n个学生按此规定走完后,长廊里电灯有几盏亮着。

注:电灯数和学生数一致。

样题-高级题:地铁换乘已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。

经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。

编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。

地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B158.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。

华为机试题目总结(程序篇)

华为机试题目总结(程序篇)

华为机试题目总结(程序篇)自己写的,水平很挫,仅供参考目录1.语言识别问题2.销售网络问题(未完成)3.股票投资问题4.判断手机号码合法性5.元音字母复制6.验证身份证号7.选秀节目打分8.数组最大值放中间,其他依次放其左右(规律未找着,未完成)9.任务调度(解题关键,需要一个容器来承载下标跟值的一一对应关系,最好就是定义一个结构体)10.将某字符变成小写后的某个字符11.链表的逆序12.单词统计13.字符串进行转换,转换成相应的数字已知:yi er san si wu liu qi ba jiu 分别对应,对一段只含有这几种字符的字符串进行转换,转换成相应的数字14.一个数组中比平均数大的个数15.求一个数组中第一大和第二大数16.字符变成整数17.整数变字符18.判断素数问题19(1).约瑟夫环(循环列表)19(2).约瑟夫环(数学方法只能求出最后的胜利者的序号)19(3).约瑟夫环(容器实现)20.判断某个整数是回文。

即这样的,反过来还是21.判断一个字符串是不是回文22.求一个字符串中的最大回文子串,就是从n个字符开始检查是不是回文,知道m个字符符合回文,那么这个就是最大回文23.找出^n的数24.统计一个数二进制表达中的个数25.镜像反转二进制表达式,并输出十进制值26.连续字符统计27.判断一个字符串中()是否配对28.查找子字符串个数29(1).找出一个字符串中是否包含相同(包括连续的)的子字符串(要求子串长度大于等于)并输出出现频率最高的子字符串29(2)找出一个字符串中是否包含连续相同的子字符串,并输出出现频率最高的子字符串30.删除字符窜中字符数最少的字符31.关于数组的循环移位,左移为负,右移为正32.求一个二维数组每列的最小值33.两个字符串,求最长公共子串34.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。

关于华为考试的题及答案

关于华为考试的题及答案

关于华为考试的题及答案一、单项选择题1. 华为公司的主要业务领域是()。

A. 通信设备制造B. 家用电器制造C. 汽车制造D. 食品加工答案:A2. 华为的核心价值观不包括以下哪一项?()A. 以客户为中心B. 以奋斗者为本C. 以利润为导向D. 长期坚持艰苦奋斗答案:C3. 华为公司成立的时间是()。

A. 1987年B. 1997年C. 2007年D. 2017年答案:A4. 华为在全球范围内拥有多少个研发中心?()A. 10个B. 20个C. 30个D. 40个答案:C5. 华为的全球员工总数超过()。

A. 10万B. 20万C. 30万D. 40万答案:B二、多项选择题6. 华为的企业文化包括以下哪些方面?()A. 客户至上B. 团队合作C. 个人英雄主义D. 持续创新答案:ABD7. 华为在全球市场的主要竞争对手包括()。

A. 爱立信B. 诺基亚C. 三星D. 苹果答案:AB8. 华为的主要产品线包括()。

A. 智能手机B. 网络设备C. 云计算服务D. 家用电器答案:ABC9. 华为在5G技术领域取得的成就包括()。

A. 5G专利数量全球领先B. 5G基站设备全球市场份额第一C. 5G手机销量全球领先D. 5G技术标准制定者之一答案:ABCD10. 华为的全球业务覆盖哪些地区?()A. 欧洲B. 亚洲C. 北美洲D. 非洲答案:ABCD三、判断题11. 华为是全球最大的通信设备制造商。

()答案:√12. 华为不涉足智能手机业务。

()答案:×13. 华为的创始人是任正非。

()答案:√14. 华为在全球范围内没有研发中心。

()答案:×15. 华为的核心价值观包括以利润为导向。

()答案:×四、简答题16. 简述华为的发展历程。

答案:华为成立于1987年,最初是一家生产用户交换机(PBX)的香港公司的销售代理。

随后,华为开始自主研发通信设备,并逐渐发展成为全球领先的信息与通信技术(ICT)解决方案提供商。

华为入职考试题库及答案

华为入职考试题库及答案

华为入职考试题库及答案
1. 华为公司是哪一年成立的?
A. 1987年
B. 1992年
C. 1997年
D. 2002年
答案:A
2. 华为公司的总部设在哪个国家?
A. 美国
B. 中国
C. 德国
D. 日本
答案:B
3. 华为的主要业务领域包括哪些?
A. 电信设备
B. 消费电子产品
C. 企业服务
D. 所有以上
答案:D
4. 华为的核心价值观是什么?
A. 客户至上
B. 创新驱动
C. 合作共赢
D. 所有以上
答案:D
5. 华为在5G技术方面的发展状况如何?
A. 处于行业领先地位
B. 正在追赶中
C. 尚未涉足
D. 落后于竞争对手
答案:A
6. 华为的全球研发中心数量是多少?
A. 10个
B. 20个
C. 30个
D. 40个
答案:B
7. 华为的企业文化中强调的“奋斗者”精神指的是什么?
A. 努力工作
B. 持续学习
C. 勇于创新
D. 所有以上
答案:D
8. 华为在国际市场上的竞争力如何?
A. 非常强
B. 一般
C. 较弱
D. 没有竞争力
答案:A
9. 华为在智能手机市场上的定位是什么?
A. 高端市场
B. 中低端市场
C. 低端市场
D. 所有市场
答案:A
10. 华为的员工培训体系包括哪些内容?
A. 技能培训
B. 管理培训
C. 领导力培训
D. 所有以上
答案:D。

华为校园招聘上机笔试题

华为校园招聘上机笔试题

华为校园招聘上机笔试题华为校园招聘上机笔试题上机时间两小时,3道题1 字串转换问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。

例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。

要求实现函数:void convert(char *input,char* output)【输入】 char *input , 输入的字符串【输出】 char *output ,输出的`字符串【返回】无示例输入:char*input="abcd"输出:char*output="bcde"输入:char*input="abbbcd"输出:char*output="bcdcde"void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。

则按第一次出现算{output[i]=(input[i]-'a'+1)%26+'a';c=output[i];tag=1;}}}}void convert(char *input,char *output){char c='\0';int tag=0;int len=strlen(input);for(int i=0;i{if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1{output[i]=(input[i]-'a'+1)%26+'a';c=input[i];tag=1;}else{if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同{output[i]=(input[i]-'a'+2)%26+'a';c='\0';tag=0;}else//当前字符与前一个字符相等,且前面已有2n个字符相同。

华为上机题汇总111题

注:1.本文代码仅保证在visual studio 2005上运行通过!2.高亮的题目为华为机试第三题左右难度。

3.本文的字符串基本运用C++里的string类,很少使用常规字符数组形式。

4.freopen()为输入重定向,方便测试,具体用法问度娘。

1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数void Stringchang(const char*inpu,char*output)其中input是输入字符串,output是输出字符串#include<iostream>#include<cctype>#include<cstring>using namespace std;void stringchang(const char*,char*);int main(){char input[100],output[100];cin.getline(input,100);stringchang(input,output);cout<<output<<endl;return 0;}void stringchang(const char* input,char* output){int m=strlen(input),n=0;for(int i=0;i<m;i++){if(isalpha(input[i])){if(input[i]=='z')output[n++]='a';else if(input[i]=='Z')output[n++]='A';elseoutput[n++]=input[i]+1;}elseoutput[n++]=input[i];}output[n]='\0';}2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。

华为_机考_答案(精选27题)

1,判断电话号码是否合法://要注意情况包含,有可能会同时出现几种不好的情况,要按照顺序输出错误。

不能同时输出好几种错误,应该是这样包含:先判断长度是否符合,再判断是否以86打头,再判断有无其他字符int fun(char num[]){ char *p=num;int n=strlen(num);if(n==13){if(*p=='8'&&*(p+1)=='6')while(*p!='\0'){if(*p>='0'&&*p<='9')p++;elsereturn 2;if(*p=='\0')return 0;}else return 3;}elsereturn 1;}int main(){char num[]="87139a3887671";int k=fun(num);cout<<k<<endl;return 0;}2 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

请编程实现上述比较,并返回比较中发现的不相等元素的个数比如:数组{1,3,5}和数组{77,21,1,3,5}按题述要求比较,不相等元素个数为0数组{1,3,5}和数组{77,21,1,3,5,7}按题述要求比较,不相等元素个数为3•要求实现函数:int array_compare(int len1, int array1[], int len2, int array2[])•示例1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:02)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6 函数返回:3函数如下:using namespace std;int f(int len1,int arry1[],int len2,int arry2[]){ int k=0;for(int i=len1-1,j=len2-1;i>=0&&j>=0;i--,j--)if(arry1[i]!=arry2[j])k++;return k;}int main(){int num1[]={1,3,5};int num2[]={77,21,1,3,5};int k=f(3,num1,5,num2);cout<<k<<endl;return 0;}3. 约瑟夫问题•问题描述:输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。

华为手机笔试题目及答案

华为手机笔试题目及答案一、单选题(每题2分,共10分)1. 华为手机的操作系统是基于哪个操作系统开发的?A. AndroidB. iOSC. Windows PhoneD. Symbian答案:A2. 华为手机的EMUI系统是哪个版本开始支持多窗口功能的?A. EMUI 9.0B. EMUI 10.0C. EMUI 11.0D. EMUI 12.0答案:B3. 华为手机的“超级快充”技术,其充电功率最高可达多少瓦?A. 40WB. 50WC. 66WD. 100W答案:C4. 华为手机的“智慧分屏”功能允许用户同时打开多少个应用?A. 2个B. 3个C. 4个D. 5个答案:A5. 华为手机的“一碰传”功能是通过哪种技术实现的?A. NFCB. BluetoothC. Wi-FiD. USB答案:A二、多选题(每题3分,共15分)1. 下列哪些是华为手机支持的5G网络频段?A. n41B. n78C. n79D. n1答案:A, B, C, D2. 华为手机的“智慧识屏”功能可以识别以下哪些内容?A. 文字B. 图片C. 二维码D. 语音答案:A, B, C3. 华为手机的“智慧分屏”功能支持以下哪些操作?A. 拖动分屏B. 调整分屏比例C. 切换应用D. 关闭分屏答案:A, B, C, D4. 华为手机的“超级快充”技术包括以下哪些特性?A. 快速充电B. 低温充电C. 智能充电D. 安全充电答案:A, B, C, D5. 华为手机的“一碰传”功能支持以下哪些设备?A. 华为笔记本B. 华为平板C. 华为智能电视D. 华为智能手表答案:A, B, C三、判断题(每题1分,共5分)1. 华为手机的EMUI系统是基于iOS开发的。

(错误)2. 华为手机的“智慧分屏”功能允许用户同时打开5个应用。

(错误)3. 华为手机的“超级快充”技术充电功率最高可达100W。

(错误)4. 华为手机的“智慧识屏”功能可以识别语音。

华为机试试题汇总

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50include<>main{intnum50={0};inti,n;printf"请输入整型数组的长度1~50:";scanf"%d",&n;printf"请输入整型数组的元素:";fori=0;i<n;i++{scanf"%d",&numi;}intmin_num=num0;intmax_num=num0;forintj=0;j<n;j++{ifmax_num<numjmax_num=numj;elseifmin_num>numjmin_num=numj;}intsum=min_num+max_num;printf"数组中最大与最小值之和:%d\n",sum;return0;}include<>include<>include<>main{charnum1,num2; 过键盘输入一串小写字母a~z组成的字符串;请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉;比如字符串“abacacde”过滤结果为“abcde”;要求实现函数:void stringFilterconst char pInputStr,long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void stringFilterconst char p_str, longlen, char p_outstr {intarray256={0};const char tmp = p_str;forint j=0;j<len;j++{ifarraytmpj==0p_outstr++=tmpj;arraytmpj++;}p_outstr= '\0';}void main{char str = "cccddecc";intlen = strlenstr;char outstr = char malloclensizeofchar; stringFilterstr,len,outstr;printf"%s\n",outstr;freeoutstr;outstr= NULL;}4.通过键盘输入一串小写字母a~z组成的字符串;请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串;压缩规则:1. 仅压缩连续重复出现的字符;比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".2. 压缩字段的格式为"字符重复的次数+字符";例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"要求实现函数:void stringZipconst charpInputStr, long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void stringZipconst char p_str, long len,char p_outstr{intcount=1;forinti=0;i<len;i++{ifp_stri==p_stri+1{count++;}else{ifcount>1{p_outstr++= count +'0';p_outstr++=p_stri;}else{p_outstr++=p_stri;}count = 1;过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串;输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开;补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况;2. 若输入算式格式错误,输出结果为“0”;要求实现函数:void arithmeticconst charpInputStr, long lInputLen, char pOutputStr;输入pInputStr:输入字符串lInputLen:输入字符串长度输出pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;include <>include<>include<>void arithmeticconst char input, longlen, char output{chars110;chars210;chars310;intcnt = 0;intlen_input=strleninput;forinti=0;i<len_input;++i{ifinputi==''cnt++;}ifcnt=2{output++= '0';output= '\0';return;}sscanfinput,"%s %s %s",s1,s2,s3; if strlens2=1||s20='+'&&s20='-' {output++= '0';output= '\0';return;}int len_s1=strlens1;fori=0;i<len_s1;i++{ifs1i<'0'||s1i>'9'{output++= '0';output= '\0';return;}}intlen_s3=strlens3;fori=0;i<len_s3;i++{ifs3i<'0'||s3i>'9' {output++= '0'; output= '\0'; return;}}int x = atois1;int y = atois3;ifs20=='+'{intresult = x+y; itoaresult,output,10; }elseifs20=='-'{intresult = x-y; itoaresult,output,10; }else{output++= '0';output= '\0';return;}}void main{charstr = {"10 - 23"};charoutstr10;intlen = strlenstr;arithmeticstr,len,outstr;printf"%s\n",str;printf"%s\n",outstr;}6.一组人n个,围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人约瑟夫环是一个数学的应用问题:已知n个人以编号1,2,3...n分别表示围坐在一张圆桌周围;从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列; include <>include<>include<>include<>typedef struct Node{intdata;structNode next;}LinkList;LinkList createint n{LinkListp,q,head;inti=1;p=LinkListmallocsizeofLinkList;p->data=i;head=p;fori=1;i<=n;i++{q=LinkListmallocsizeofLinkList;q->data=i+1;p->next=q;p=q;}p->next=head; 输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字可能不止一个,输出最后剩余数字个数;如输入“3,3,4,5,6,7,7”include<>include<>include<>void main{charstr100;printf"输入一组字符串:\n"; scanf"%s",&str;intlen=strlenstr;intarray100;intcount=0;forinti=0;i<len;i++{ifstri>='0'&&stri<='9' arraycount++=stri-'0';}arraycount='\0';intresult=count;intmin=array0;intmax=array0;forintj=0;j<count;j++{ifmax<arrayjmax=arrayj;elseifmin>arrayjmin=arrayj;}forintk=0;k<count;k++{ifarrayk==minresult--;ifarrayk==maxresult--;}printf"%d\n",result;}8.输入一组身高在170到190之间5个身高,比较身高差,选出身高差最小的两个身高;若身高差相同,选平均身高高的那两个身高;从小到大输出;如输入170 181173 186 190 输出170 173include<>include<>define N 5int main{intHeightN;intdmin;intH1,H2;inti,j,temp;printf"请输入一组身高在170到190之间的数据共5个:\n"; forintk=0;k<N;k++scanf"%d",&Heightk;printf"\n";fori=0;i<N;i++forj=1;j<N-i&&Heightj-1>Heightj;j++{temp=Heightj-1;Heightj-1=Heightj;Heightj=temp;}H1=Height0;H2=Height1;dmin=H2-H1;forintm=2;m<N;m++{ifHeightm-Heightm-1<=dmin{H1=Heightm-1;H2=Heightm;dmin=Heightm-Heightm-1;}}printf"身高差最小的两个身高为:\n";printf"%d,%d\n",H1,H2;return0;}9.删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数; include <>include <>include <>include <>int delete_sub_strconst char str,constchar sub_str,char result{assertstr= NULL && sub_str = NULL;constchar p,q;chart,temp;p= str;q= sub_str;t= result;intn,count = 0;n= strlenq;temp= char mallocn+1; memsettemp,0x00,n+1; whilep{memcpytemp,p,n; ifstrcmptemp,q== 0 {count++; memsettemp,0x00,n+1; p= p + n;}else{t= p;p++;t++; memsettemp,0x00,n+1; }}freetemp;returncount;}void main{chars100 = {‘\0’};intnum = delete_sub_str“123abc12de234fg1hi34j123k”,”123”,s;printf“Thenumber of sub_str is %d\r\n”,num;printf“Theresult string is %s\r\n”,s;}10. 要求编程实现上述高精度的十进制加法;要求实现函数:void add const char num1,const char num2, char result输入num1:字符串形式操作数1,如果操作数为负,则num10为符号位'-'num2:字符串形式操作数2,如果操作数为负,则num20为符号位'-'输出result:保存加法计算结果字符串,如果结果为负,则result0为符号位; include<>include<>include<>void movechar str, int length描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:1 及格线是10的倍数;2 保证至少有60%的学生及格;3 如果所有的学生都高于60分,则及格线为60分输入:输入10个整数,取值0~100输出:输出及格线,10的倍数include<>void bubblesortint arr{inti,j,temp;fori=0;i<10;i++forj=0;j<9-i&&arrj>arrj+1;j++ {temp=arrj;arrj=arrj+1;arrj+1=temp;}}int GetPassLineint a{bubblesorta;ifa0>=60return60;elsereturninta4/1010;}main{inta10={0};intresult;printf"请随机输入10个成绩0-100:\n";scanf"%d%d%d%d%d%d%d%d%d%d",&a0,&a1,&a2,&a3,&a4,&a5,&a6,&a7,&a8,&a9; printf"\n";result=GetPassLinea;printf"及格线为:%d\n",result;return1;}12.描述:一条长廊里依次装有n1 ≤ n ≤ 65535盏电灯,从头到尾编号1、2、3、…n-1、n;每盏电灯由一个拉线开关控制;开始,电灯全部关着;有n个学生从长廊穿过;第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n 的倍数的电灯的开关拉一下;n个学生按此规定走完后,长廊里电灯有几盏亮着;注:电灯数和学生数一致;输入:电灯的数量输出:亮着的电灯数量样例输入:3样例输出:1include<>define Max_Bubl_Num 65535int GetLightLampNumint n{intBublNumMax_Bubl_Num={0}; 描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的;经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示;编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量含输入的起点和终点,换乘站点只计算一次;地铁线A环线经过车站:A1 A2 A3 A4 A5 A6A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18地铁线B直线经过车站:B1 B2 B3 B4 B5 T1B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15输入:输入两个不同的站名输出:输出最少经过的站数,含输入的起点和终点,换乘站点只计算一次输入样例:A1 A3输出样例:3include<>include<string>include<queue>include<vector>using namespace std;define MAX 35define SUBWAY_A 20define SUBWAY_B 15typedef struct node{int adjvex;struct node next;}edgenode;typedef struct{char name10;bool flag;edgenode link;}vexnode;constcharsubway_name1SUBWAY_A10={"A1","A2","A3","A4","A5","A6","A7","A8","A9","T1 ","A10","A11","A12","A13","T2","A14","A15","A16","A17","A18"};constcharsubway_name2SUBWAY_B10={"B1","B2","B3","B4","B5","B6","B7","B8","B9","B1 0","B11","B12","B13","B14","B15"};void creatvexnode ga{int i;edgenode p;fori=0;i<MAX;i++{gai.link=NULL;gai.flag=true;ifi<SUBWAY_,subway_name1i;,subway_name2i-20;}ink=p;p=edgenodemallocsizeofedgenode; p->adjvex=i+1;p->next=NULL;gai.link->next=p;ifi==9{p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+4;p->next=NULL;gai.link->next->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+5;p->next=NULL;gai.link->next->next->next=p;}else ifi==14{p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+9;p->next=NULL;gai.link->next->next=p;p=edgenodemallocsizeofedgenode;p->adjvex=SUBWAY_A+10;p->next=NULL;gai.link->next->next->next=p;}}p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A-1;p->next=NULL;ga0.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=1;p->next=NULL;ga0.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A-2;p->next=NULL;gaSUBWAY_A-1.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=0;p->next=NULL;gaSUBWAY_A-1.link->next=p;ink=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+i+1;p->next=NULL;gai+SUBWAY_A.link->next=p;}p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+3;p->next=NULL;gaSUBWAY_A+4.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=9;p->next=NULL;gaSUBWAY_A+4.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=9;p->next=NULL;gaSUBWAY_A+5.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+6;p->next=NULL;gaSUBWAY_A+5.link->next=p;p=edgenodemallocsizeofedgenode;p->adjvex=SUBWAY_A+8;p->next=NULL;gaSUBWAY_A+9.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=14;p->next=NULL;gaSUBWAY_A+9.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=14;p->next=NULL;gaSUBWAY_A+10.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+11;p->next=NULL;gaSUBWAY_A+10.link->next=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+1;p->next=NULL;gaSUBWAY_A.link=p;p=edgenodemallocsizeofedgenode; p->adjvex=SUBWAY_A+SUBWAY_B-2; p->next=NULL;gaSUBWAY_A+SUBWAY_B-1.link=p; ame;edgenode s;s=gai.link;whiles=NULL{printf"->%s",gas->;s=s->next;}printf"\n";}}int main{vexnode gaMAX;creatga;int i;char str210;whilescanf"%s%s",str0,str1=EOF{ int temp=0;fori=0;i<MAX;i++{gai.flag=true;ifstrcmpstr0,temp=i;}queue<vexnode>q; gatemp;gatemp.flag=false;int count=0;int start=0;int end=1;bool find_flag=false;while{iffind_flag break;count++;printf"\n";printf"第%d层搜索:",count; int temp_end=end; whilestart<temp_end{ printf"%s",.name; ,str1{find_flag=true;break;}edgenode s;s=.link;whiles=NULL{ifgas->adjvex.flag{gas->adjvex;gas->adjvex.flag=false;end++;ame;}s=s->next;};start++;}printf"\n";}printf"%d\n",count;}return 0;}14. 字串转换问题描述:将输入的字符串字符串仅包含小写字母‘a’到‘z’,按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次;例如:aa 转换为bc,zz 转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算;要求实现函数:voidconvertchar input,char output输入char input , 输入的字符串输出char output ,输出的字符串返回无include<>include<>include<>void convertchar input,char output{ifinput==NULLreturn;chartemp='\0';intlen_input=strleninput;inti;intflag=0;fori=0;i<len_input;i++{ifinputi=temp{outputi=inputi-'a'+1%26+'a';temp=inputi;flag=1;}else{ifflag==1{outputi=inputi-'a'+2%26+'a'; temp=inputi;flag=0;}else{outputi=inputi-'a'+1%26+'a'; temp=inputi;flag=1;}}}outputi='\0';}void main{charinput="xyz"; charoutput256;在给定字符串中找出单词“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词;找到单词后,按照长度进行降序排序,排序时如果长度相同,则按出现的顺序进行排列,然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串;输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格;要求实现函数:void my_wordcharinput, char output输入char input, 输入的字符串输出char output,输出的字符串返回无include <>include <>include <>void my_wordchar input,charoutput{char p;char temp;char word10;int len_input=strleninput;int i,j;char except = ",";char blank = " ";i=0;for i=0;i<len_input;i++{if inputi<'A' || inputi>'Z'&&inputi<'a' ||inputi>'z' {inputi=',';}}j=0;/保存取出的单词/p= strtokinput,except;whileNULL=p{wordj++=p;p= strtokNULL,except;}printf"%s",wordi;/对单词按照长度降序排序,冒泡法/ for i=0;i<5;i++{for j=1;j<5-i;j++{ifstrlenwordj-1<strlenwordj{temp=wordj;wordj=wordj-1;wordj-1=temp;}}}/删除相同单词/{forj=i+1;j<5;j++{ifstrcmpwordi,wordj==0wordj="\0";}}/将单词连接起来输出/for j=0;j<5;j++{if 0==j{strncpy output,wordj,strlenwordj+1; }else{strcatoutput,blank;strcatoutput,wordj;}}return ;}int main{char input ="some local buses, some1234123drivers"; printf"筛选之前的字符串:%s\n",input;char output30;my_wordinput,output;printf"筛选之后的字符串:%s",output;printf"\n";return 0;}16. 数组中数字都两两相同,只有一个不同,找出该数字:int findUniqueint a, int len{int i = 1;int temp =a0;for; i <len; i++{temp= temp ^ ai;}printf"%d", temp;}17.题目二:数组中数字两两相同,有两个不同,找出这两个:include <>int a = {1,1,2,4,3,3,2,5};int findXorSumint a, int len{int i = 0;int temp =0;for; i <len; i++{temp= temp ^ ai;}return temp;}int findFirstBit1int n{int count =1;while n &1{n =n>>1;count++;}returncount;}int isBit1int a, int count{a= a >> count-1;returna & 1;}void findTwoUniqueint a, int len {int i = 0;int m = 0, n= 0;int temp =findXorSuma, len;int count =findFirstBit1temp;for; i <len; i++{ifisBit1ai,count{m= m ^ ai;}else{n= n ^ ai;}}printf"%d,%d", m, n;}int main{findTwoUniquea,8;}18.链表翻转;给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现思想:采用遍历链表,分成length/k组,对每组进行逆转,逆转的同时要将逆转后的尾和头连接起来链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g include <>include <>include <>typedef struct node{charval;structnode pNext;}Node;Node CreateListint n;void TraverslistNode pHead;Node TransNeighborNode pHead;int main{NodepHead = CreateList7;printf"beforetransform\n";TraverslistpHead;TransNeighborpHead;printf"\naftertransform\n";TraverslistpHead;getchar;return1;输入一串字符串,其中有普通的字符与括号组成包括‘’、‘’、‘’,'',要求验证括号是否匹配,如果匹配则输出0、否则输出1.include<>include<>入一行数字:1234235645875186523在输入第二行:23将第一行中含有第二行中“23”的数输出并排序结果即:123423186523include<>define M 20int main{int aM;int i,j,s,temp;int sortM,t=0;char c=' ';i=0;whilec='\n'{scanf"%d%c",&temp,&c;ai++=temp;scanf"%d",&s; forj=0;j<i;j++ {temp=aj; iftemp%100==s {sortt++=aj;}elsetemp/=10;}fori=0;i<t-1;i++ forj=0;j<t-i-1;j++ {ifsortj>sortj+1 {temp=sortj+1; sortj+1=sortj; sortj=temp;}}fori=0;i<t;i++printf"%d",sorti;printf"\n";return 0;}22输入m个字符串和一个整数n,把字符串M化成以N为单位的段,不足的位数用0补齐;如n=8m=9,include<>include<>int main{char c200={'\0'};scanf"%s",&c;int n,i,j;int len=strlenc;scanf"%d",&n;fori=1;i<=len;i++{j=i%n;printf"%c",ci-1;ifj==0printf"\n";}ifj=0fori=j+1;i<=n;i++printf"0";return 0;}23将电话号码onetwo;;;ninezero翻译成12;;90中间会有double例如输入:OneTwoThree输出:123输入:OneTwoDoubleTwo输出:1222输入:1Two2 输出:ERROR输入:DoubleDoubleTwo 输出:ERROR有空格,非法字符,两个Double相连,Double位于最后一个单词都错误include<>include<>include<>int main{chara1111={"zero","one","two","three","four","five","six","seven","eight","nine","dou ble"};char temp11, c=' ';int i,j,f,d=0;whilec='\n'{scanf"%s%c",&temp,&c;f=0;forj=0;j<11;j++{ifstrcmptemp,aj&&j<10 {printf"%d",j;f=1;ifd==1{printf"%d",j;d=0;}}elseifstrcmptemp,aj&&j==10 {d=1;f=1;}}iff==0break;}ifd==1||f==0printf"error\n";printf"\n";return 0;}24.将整数倒序输出,剔除重复数据include<>include<>include<>include<>int main{charinput=charmallocsizeofchar; scanf"%s",input;inta10={0},i,flag=0,flag1=0;int len=strleninput;ifinput0=='-'{flag=1;fori=0;i<len;i++inputi=inputi+1;}intlen1=strleninput;int n50,temp;int count=0;fori=0;i<len1;i++{temp=inputi-'0'; ifatemp==0{ncount++=temp; atemp=1;}}ncount='\0';ifflag==1 printf"-";forintii=count-1;ii>=0;ii-- {ifnii=0||flag1=0{printf"%d",nii;flag1=1;}}printf"\n";return 0;}25.编程的时候,if条件里面的“”、“”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确;同时输出语句中出现的左括号和右括号数量,如ifa==1&&b==1是正确的,而ifa==1&&b==1是错误的;注意if 语句的最外面至少有一对括号;提示:用堆栈来做;输入:ifa==1&&b==1输出:RIGTH 3 3输入:ifa==1&&b==1输出:WRONG 3 4include<>include<>int main{char s800={'\0'};scanf"%s",&s;.alen-1voidarray_iterateint len, int input_array, int m, int output_array {int startPos=0;int outPos;int nIter=len-1;int num=len;for; nIter>=0; nIter--{outPos=m+startPos-1%num;m=input_arrayoutPos;startPos=outPos;printf"outPos is %d, new m is%d\n", outPos, m;output_arraylen-nIter-1=input_arrayoutPos;forint i=outPos; i<num-1; i++input_arrayi=input_arrayi+1;num--;print_arraynum, input_array;}}voidmain{int input_array={3,1,2,4};int output_array4={0};array_iterate4, input_array, 7,output_array; print_array4, output_array;}27.统计数字出现的次数,最大次数的统计出来举例:输出:3,6include<>include<>include<>int main{inta10={0};intlen=strlennum;inti,j,temp,count=0,maxnum=0;printf"%d\n",len;fori=0;i<len;i++{temp=numi-'0';atemp++;}inttemp1=a0;forj=0;j<10;j++{ifaj=0{count++;temp1=temp1>ajtemp1:aj; printf"%d%d\n",aj,j;}}printf"数字出现次数为:%d\n",count; printf"最大次数为:%d\n",temp1; return0;}28. .字符串首字母转换成大写举例:输入:this is a book返回:This Is A Bookinclude<>include<>include<>int main{charinput="this is a book"; charoutput256={'\0'};int i,len;len=strleninput;printf"变换前的字符串为:%s\n",input; fori=0;i<len;i++{ifinput0=''input0-=32;ifinputi==''inputi+1-=32;outputi=inputi;}printf"变换后的字符串为:%s\n",output; }29.子串分离题目描述:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2. 数制转换 * 问题描述:
在 32 位处理器上,将任一整数转换为二进制形式。 * 要求实现函数: void DecToBin (unsigned int iDec, char pBin[32]) 输入:iDec 需要转换的十进制整数 输出:pBin 转换为二进制后的字符串,高位在左边,不足 32 位补 0 * 示例 输入:123 输出:{“00000000000000000000000001111011”}
类别:软件 C++ 第一部分:客观题 客观题部分,共 30 分,建议这部分答题用 40 分钟。 一、 单选题 (每题 1 分,共 10 题) 1、 下列那种不是任务间通讯的方式____ A)信号量 B)消息队列 C)共享内存 D)中断 2、 以下叙述中不正确的是____ A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对 括 号构成的代码) 3、 若整型变量 a 的值为 50,则 c 语言表达式 a>>2 的值为____ A)50 B) 25 C) 12.5 D) 12 4、 下面方法中,哪一个不能很好解决死锁问题?____ A) 给每一个进程不同的优先级,并按照优先级的大小决定在资源队列中的顺序。 B) 让进程开始运行时获得全部的资源,在不能获得全部资源时重新启动。 C) 给资源编号,并要求进程按照编号的顺序申请资源。 D) 提供超时机制,在进程进入资源等待后一段随机时间内重起进程。 5、 下面的程序是对二叉树的前序遍历,请写出下面空格中的语句____ 其中,Visit 函数表示访问节点数据。 void PreOrder(BinaryTreeNode *t) { // 对* t 进行前序遍历 if (t) { (_1_); (_2_); (_3_); }
/* 请在这里实现下列函数 , c/c++ 语法不限 , 最后需要保证程序编译连接通过 , 并生成
test.exe 文件. */ /* 相关宏定义及函数声明见'func.h'头文件 */ #include "func.h" #include <stdio.h> #include <stdlib.h> /* 请按照要求实现下列三个函数 */ void count(const char *input, unsigned int * letters, unsigned int * numbers, unsigned int * blanks, unsigned int * others) { *letters=0; *numbers=0; *blanks=0; *others=0; int i; for(i=0;input[i]!='\0';++i) { if((input[i]>='a'&&input[i]<='z')||(input[i]>='A'&&input[i]<='Z')) ++(*letters); else if(input[i]>='0'&&input[i]<='9') ++(*numbers); else if(input[i]==' ') ++(*blanks); else ++(*others); } } void DecToBin(unsigned int iDec, char pBin[32]) { int index=0,i; char ans[50]; for(i=0;i<50;++i) ans[i]='0'; while(iDec) { ans[index++]=iDec%2+'0'; iDec/=2; } int x=0; for(i=31;i>=0;--i) pBin[x+\0'; } int isWorking(unsigned int year, unsigned int month, unsigned int day) { int ans=0; int rn[]={1,31,29,31,30,31,30,31,31,30,31,30,31}; int pn[]={1,31,28,31,30,31,30,31,31,30,31,30,31}; int i; for(i=1990;i<year;++i) { if((i%400)==0||(i%4==0&&i%100!=0)) ans+=366; else ans+=365; } for(i=1;i<month;++i) { if((year%400)==0||(year%4==0&&year%100!=0)) ans+=rn[i]; else ans+=pn[i]; } ans+=day; while(ans>5) ans-=5; if(ans<=3) return 1; else return 0; }
1. 字符统计 * 问题描述: 实现一个函数,要求输入一个字符串,分别统计出其中 “英文字母” 、 “数字” 、 “空格” 、 “其 它字符”的个数。 * 要求实现函数: void count(const char *input, unsigned int * letters, unsigned int * numbers, unsigned int * blanks, unsigned int * others) 输入:input 输入的字符串 输出:letters 输出其中的“英文字母”个数, numbers 输出其中的“数字”个数,blanks 输出其中的“空格”个数,others 输出其中的“其他字符”个数 * 示例 输入:input=“aBc 12%” ;输出:letters=3, numbers=2, blanks=1, others=1 输入:input=“1” ;输出:letters=0, numbers=1, blanks=0, others=0
/* mian 函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用 printf 打印输出*/ /* 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可 */ /* 该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响*/ void TestEntry() {printf("%d\n",isWorking(1990,1,5)); /* TODO: 请测试时改变改用例 */ /* TODO: 调用被测函数 */ /* TODO: 执行完成后可比较是否是你认为正确的值 */
2010 年华为软件设计大赛试卷 类别:软件 C++语言 初级
编程题(共 3 题,第 1 题 20 分,第 2 题 30 分,第 3 题 50 分。请上机编写程序,按题目要 求提交文件。[详见考试说明] 本试题采用自动测试用例进行评分, 测试用例不对考生公开, 凡不满足提交要求导致不能编 译或用例不通过,不予评分) 。
9、 对于下面的类 CA,在 32 位计算机、4 字节对齐的情况下,sizeof(CA) = ____ class CA { public: CA(); virtual ~CA(); private: int m_iTime; public: int GetTime(); int SetTime(int iTime); }; A)16 B)12 C)8 D)4 10、 对于下面的代码,描述正确的是____ class A { public: virtual void test(); }; class B: public A { public: void test(); ... }; class C: public B { public: void test(); ... }; A) B 类的 test 函数是虚函数,而 C 类的也是 B) B 类的 test 函数不是虚函数,C 类的是 C) B 类的 test 函数是虚函数,而 C 类的不是 D) C 类的 test 函数不是虚函数
2. 实现子串查找程序 问题描述: 判断一个字符串(dst)是否是另一个字符串(src)的子串; 输出子串在母串中的第一次出现的起始位置; 匹配的时候不区分大小写; 不能使用库函数(使用库函数按 0 分计算); 要求实现函数: unsigned int str_str(char * src, char *dst); 返回:如果 dst 是 src 的子串 则返回起始位置 如果不是 则返回 0 输入:src 指向母串的指针; dst 指向子串的指针 示例 src->akrsd5859 dst->rsd 则返回 3 src->Rstsawerst36ds dst->rst 则返回 8 src->dfsge dst-> dfsgesa 则返回 0
3. 打鱼还是晒网 * 问题描述: 中国有句俗话叫 “三天打鱼两天晒网” ,某人从 1990 年 1 月 1 日起开始 “三天打鱼两天晒网” , 问这个人在以后的某一天是“打鱼”还是“晒网”? (需要考虑闰年:年数“能被 4 除尽且不能被 100 除尽”或“直接能被 400 除尽”看做闰年, 如 2000 年是闰年,而 1900 年不是) * 要求实现函数: int isWorking(unsigned int year, unsigned int month, unsigned int day); 输入:year,month,day 分别为年,月,日 返回:int 类型,如果是“打鱼” ,就返回 1;如果是“晒网” ,就返回 0 * 示例 输入:year=1990,month=1,day=5;函数返回:0
相关文档
最新文档