华为编程规范考试机试试题

合集下载

最全华为上机试题及部分答案

最全华为上机试题及部分答案

2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。

[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。

两者相同则得分,不同则不得分。

4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)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;}(18) 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

华为编程大赛试题2

华为编程大赛试题2

客观题部分,共30分,建议这部分答题用40分钟。

一、单选题(每题1分,共10题)1、以下叙述中不正确的是______。

A) 在不同的函数中可以使用相同名字的变量B) 函数中的形式参数是局部变量C) 在一个函数内定义的变量只在本函数范围内有效D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)2、下列全局变量定义中,正确的是:______。

A) char abc [] [];B) char abc [] [NUM];C) char abc [NUM] [];D) char abc [0];3、关于断言,错误的说法是:______。

A) 我们可以使用断言来发现软件问题。

B) 在正式发布的软件版本中也要保留断言,以便于定位问题。

C) 断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。

D) 不能用断言来代替错误处理。

4、关于函数参数,正确的说法是______。

A) 防止将函数的参数作为工作变量。

B) 应该为函数功能的扩展预留尽可能多的参数接口。

C) 通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再次进行参数合法性检查。

D) 不要输入指针变量。

5、关于函数实现,下面不正确的说法是______。

A) 为简单功能编写函数。

B) 函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

C) 防止把没有关联的语句放到一个函数中。

D) 为了增强函数的可用性,应尽量设计多用途面面俱到的函数。

6、关于函数,不正确的说法是______。

A) 如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。

B) 功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。

C) 对所调用函数的错误返回码可以根据需要决定是否处理。

D) 对于提供了返回值的函数,在引用时最好使用其返回值。

7、编程中下面说法错误的是______。

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

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

华为机试题目总结(程序篇)自己写的,水平很挫,仅供参考目录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.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。

最全华为上机试题及部分答案

最全华为上机试题及部分答案

2011年华为软件校园招聘编程测验1、请上机编写程序,按题目要求提交文件。

[详见考试说明,点击进入考试说明]3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设输出。

两者相同则得分,不同则不得分。

4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情况5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误6、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余用例不被执行,无法得分7、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目(17)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;}(18) 数组比较(20分)•问题描述:比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果2个数组长度不等,则只比较较短长度数组个数元素。

华为最新笔试题——编程题及答案

华为最新笔试题——编程题及答案

问题:输入一个字符串,用指针求出字符串的长度。

答案:#include <stdio.h>int main(){char str[20], *p;int length=0;printf(“Please input a string: ”);gets(str);p=str;while(*p++){length++;}printf(“The length of string is %d\n”, length);return 0;}问题:使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。

举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:#include <stdio.h>#include <string.h>void StrReplace(char* strSrc, char* strFind, char* strReplace);#define M 100;void main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);return 0;}void StrReplace(char* strSrc, char* strFind, char* strReplace){int i=0;int j;int n=strlen(strSrc);int k=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}else continue;}}}}问题:编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。

华为公司应聘程序员上机考试题

华为公司应聘程序员上机考试题

1. 删除字符串中所有给定的子串(40分)问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。

要求实现函数:int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】str:输入的被操作字符串sub_str:需要查找并删除的特定子字符串【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果【返回】删除的子字符串的个数注:I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。

比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。

如果匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。

II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。

示例输入:str = "abcde123abcd123"sub_str = "123"输出:result_str = "abcdeabcd"返回:2输入:str = "abcde123abcd123"sub_str = "1234"输出:result_str = "abcde123abcd123"返回:0下面是鄙人的解答:#include<iostream>#include<cstdlib>#include<string.h>using namespace std;//删除指定的子字符串char* str_del(char* str,int pos,int length){for(int i=pos;i<(strlen(str)-length);i++){str[i] = str[i+length];}for(int i=(strlen(str)-length);i<strlen(str);i++){str[i] = '\0';}return str;}//从原串中获得子串char * get_sub_str(const char* str,int at,int length){char *res = new char[length];for(int i=at,j=0;i<at+length;i++,j++){res[j] = str[i];}return res;}int delete_sub_str(const char *str, const char *sub_str, char *&result_str) {int sub_len = strlen(sub_str);int str_len = strlen(str);int pos = 0;int del_num = 0;char* substr_instr;result_str = new char[sizeof(str)];strcpy(result_str,str);for(;pos<str_len-sub_len;pos++){substr_instr = get_sub_str(result_str,pos,sub_len);if(strcmp(substr_instr,sub_str) == 0){del_num++;result_str = str_del(result_str,pos,sub_len);}}return del_num;}int main(){char* str = "zhushijie";char* sub_str = "shi";char* res;cout<<"Delete num "<<delete_sub_str(str,sub_str,res)<<endl;cout<<res<<endl;return 0;}。

华为机考试题+答案

华为机考试题+答案

1、选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。

打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分= 专家评委平均分* 0.6 + 大众评委* 0.4,总分取整。

如果没有大众评委,则总分= 专家评委平均分,总分取整。

函数最终返回选手得分。

函数接口int cal_score(int score[], int judge_type[], int n)#include<iostream>int cal_score(int score[], int judge_type[], int n){int i =0;int sum1=0, sum2=0;int count1=0,count2=0;int zhongfen=0;for(i =0; i<n; i++){if(1==judge_type[i]){sum1+=score[i];count1++;}else //if(2==judge_type[i]){sum2+=score[i];count2++;}}if(count2==0){zhongfen = sum1;}else{zhongfen = int ((sum1/count1)*0.6 +(sum2/count2)*0.4);}return zhongfen;}int main(){int score[]={1,1,1,1,1,1};int judge_type[] = {2,2,2,1,2,2};printf("%d", cal_score(score, judge_type, 6) );} 2、给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

华为最新笔试题——编程题及答案

华为最新笔试题——编程题及答案

问题:输入一个字符串,用指针求出字符串的长度。

答案:#include <stdio.h>int main(){char str[20], *p;int length=0;printf(“Please input a string: ”);gets(str);p=str;while(*p++){length++;}printf(“The length of string is %d\n”, length);return 0;}问题:使用C语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。

举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:#include <stdio.h>#include <string.h>void StrReplace(char* strSrc, char* strFind, char* strReplace);#define M 100;void main(){char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";char s1[]="RST";char s2[]="ggg";StrReplace(s,s1,s2);printf("%s\n",s);return 0;}void StrReplace(char* strSrc, char* strFind, char* strReplace){int i=0;int j;int n=strlen(strSrc);int k=strlen(strFind);for(i=0;i<n;i++){if(*(strSrc+i)==*strFind){for(j=0;j<k;j++){if(*(strSrc+i+j)==*(strFind+j)){*(strSrc+i+j)=*(strReplace+j);}else continue;}}}}问题:编写一个程序实现功能:将字符串”Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。

华为编程大赛试题

华为编程大赛试题

华为编程大赛试题第一篇:华为编程大赛试题客观题部分,共30分,建议这部分答题用40分钟。

一、单选题(每题1分,共10题)1、以下叙述中不正确的是______。

A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D).在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)2、下列全局变量定义中,正确的是:______。

A)char abc [] [];B)char abc [] [NUM];C)char abc [NUM] [];D)char abc [0];3、关于断言,错误的说法是:______。

A)我们可以使用断言来发现软件问题。

B)在正式发布的软件版本中也要保留断言,以便于定位问题。

C)断言不能用于对外部输入数据的判断,只能用于程序内部逻辑的判断。

D)不能用断言来代替错误处理。

4、关于函数参数,正确的说法是______。

A)防止将函数的参数作为工作变量。

B)应该为函数功能的扩展预留尽可能多的参数接口。

C)通常函数内部会对函数参数进行合法性检查,为了提高效率,函数调用者不需要再次进行参数合法性检查。

D)不要输入指针变量。

5、关于函数实现,下面不正确的说法是______。

A)为简单功能编写函数。

B)函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

C)防止把没有关联的语句放到一个函数中。

D)为了增强函数的可用性,应尽量设计多用途面面俱到的函数。

6、关于函数,不正确的说法是______。

A)如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。

B)功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。

C)对所调用函数的错误返回码可以根据需要决定是否处理。

D)对于提供了返回值的函数,在引用时最好使用其返回值。

7、编程中下面说法错误的是______。

华为2023年北京软件工程师上机机测编程题目

华为2023年北京软件工程师上机机测编程题目

华为2023北京软件工程师上机机测编程题目华为2023年校招机测题目
华为2023年,在北京的软研工程师,需要参与机测,机测通过后,进入面试。

机测时间是30分钟,分批进展。

在线提交系统,效劳器会编译,给出结果。

语言可以选择C,C++,Java.系统给出编译结果,也许分为:编译错误,答案错误,正确这几类。

北京机测一共2个编程题,没有其他题。

任意选一个答题,2个都做更好。

【提示】:
1、系统有时提交会出问题,建议编完之后,保存在txt文档里,万一提交失败,可以直接粘贴,重新提交;
2、有任何问题,立刻找考官,不然很铺张时间。

3、答对了,时间越短,分数越高。

据考官说“答案错误”,他们会看程序,给分。

没说编译错误会不会。

反正答题的人许多,编译错误的一大堆,估量他们不会管了。

答案错误那种,估量他们也来不及细看。

所以,还是尽量做到正确吧,不然很难有时机。

4、超出30分钟后,修改也行,不过超时会影响分数。

30分钟前,肯定要提交1次,不要写了半天,没提交。

答案没对的话,建议超时了也要修改,不然,就没戏了。

以下是题目,不是原文,但是要点没错:
1、推断比整数N小的数里,有多少个与7相关的数。

与7相关指:7的倍数或者带有7的数(比方7、14、17、27)。

只需要给出总的个数,不需要输出它们。

N小于30000.
2、给一个数组,输出数组里超出全部元素平均值的元素的个数。

比方:1、2、
3、
4、5,输出3. int get(intiArray[],intiLen).。

华为机试题库及答案

华为机试题库及答案

华为机试题库及答案华为是全球领先的信息与通信技术(ICT)解决方案提供商。

作为一家创新型企业,华为一直重视人才培养和招聘,为了筛选出最优秀的人才,华为设立了机试题库。

以下是华为机试题库的一些题目及其答案供参考。

一、Java基础1. 输出"Hello, Huawei!"的Java代码如下:```javapublic class HelloWorld {public static void main(String[] args) {System.out.println("Hello, Huawei!");}}```2. 计算1到100的和的Java代码如下:```javapublic class SumOfNumbers {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}System.out.println("Sum of numbers from 1 to 100: " + sum); }}```3. 实现斐波那契数列的Java代码如下:```javapublic class FibonacciSeries {public static void main(String[] args) {int n = 10;int first = 0;int second = 1;System.out.print("Fibonacci series of " + n + " terms: ");for (int i = 1; i <= n; i++) {System.out.print(first + " ");int next = first + second;first = second;second = next;}}}```二、数据结构和算法1. 实现冒泡排序的Java代码如下:```javapublic class BubbleSort {public static void main(String[] args) { int[] array = {5, 2, 8, 3, 1};int n = array.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1 - i; j++) { if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}System.out.print("Sorted array: "); for (int i = 0; i < n; i++) {System.out.print(array[i] + " "); }}}```2. 实现二分查找的Java代码如下:```javapublic class BinarySearch {public static void main(String[] args) { int[] array = {1, 3, 5, 7, 9};int target = 5;int low = 0;int high = array.length - 1;while (low <= high) {int mid = (low + high) / 2;if (array[mid] == target) {System.out.println("Target found at index: " + mid); break;} else if (array[mid] < target) {low = mid + 1;} else {high = mid - 1;}}if (low > high) {System.out.println("Target not found in the array."); }}}```三、网络和操作系统1. 解释TCP和UDP的区别:TCP(传输控制协议)提供可靠的、面向连接的数据传输服务,确保数据的完整性和有序性,适用于对数据传输要求较高的场景,如文件传输、网页加载。

华为机试试题汇总

华为机试试题汇总

华为机试试题汇总 Prepared on 22 November 20201.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<>main(){intnum[50]={0};inti,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for(i=0;i<n;i++){scanf("%d",&num[i]);}intmin_num=num[0];intmax_num=num[0];for(intj=0;j<n;j++){if(max_num<num[j])max_num=num[j];elseif(min_num>num[j])min_num=num[j];}intsum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return0;}#include<>#include<>#include<>main(){char*num1,*num2;过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr );【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include<>#include<>#include<>voidstringFilter(constchar*p_str,longlen,char*p_outstr){intarray[256]={0};constchar*tmp=p_str;for(intj=0;j<len;j++){if(array[tmp[j]]==0)*p_outstr++=tmp[j];array[tmp[j]]++;}*p_outstr='\0';}voidmain(){char*str="cccddecc";intlen=strlen(str);char*outstr=(char*)malloc(len*sizeof(char));stringFilter(str,len,outstr);printf("%s\n",outstr);free(outstr);outstr=NULL;}4.通过键盘输入一串小写字母(a~z)组成的字符串。

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

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

自己写的,水平很挫,仅供参考目录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.超大整数加法运算,大整数会用字符串或者数组来存,不过注意低位存字符前面几位,高位存后面,存到字符中应该存“”。

这边我用的是数组35.排序总结36.将一个字符串空格分隔,并倒序输出37.删除一个字符串中的某个字符串38.取出一个字符串中所有的数字,并取出所有字母39,简单的字符统计40.查找字符串中空格分隔的单词的最大长度41.二叉树的操作42.分块查找1.语言识别问题#include<iostream>using namespace std;void main(){int n,S_num=0,T_num=0,m=0;cin>>n;char ch;getchar();for(int i=0;i<n;i++){ // m=0;while(1){ ch=getchar();/* m++;if((m>3)&& (ch=='\n')){m=0;break;}*/if(ch=='\n') break;if(ch=='s'||ch=='S') S_num++;if(ch=='t'||ch=='T') T_num++;}}if(S_num<T_num) cout<<"English\n";else cout<<"Deutsch\n";}2.销售网络问题(未完成) #include<iostream>using namespace std;void main(){int n,S_num=0;cin>>n;int a[n];for(int i=0;i<n-1;i++)cin>>a[i];if(a[])for(int i=0;i<n;i++){ // m=0;while(1){ ch=getchar();/* m++;if((m>3)&& (ch=='\n')){m=0;break;}*/if(ch=='\n') break;if(ch=='s'||ch=='S') S_num++;if(ch=='t'||ch=='T') T_num++;}}if(S_num<T_num) cout<<"English\n";else cout<<"Deutsch\n";}3.股票投资问题#include<iostream>using namespace std;void main()int B,C=0,D=0,E=0,i,j,k,l,n,m;int A;int a[12];//未来天得股价int b[12][12];cin>>B;//测试数memset(b,0,sizeof(b));//for(i=0;i<B;i++)cin>>A;for(j=0;j<12;j++)cin>>a[j];int temp=0;for(k=0;k<11;k++)for(l=k+1;l<12;l++){temp=A/a[k];b[k][l]=temp*(a[l]-a[k]);if(b[k][l]<0)b[k][l]=0;}int max=b[0][1];m=0;n=1;for(k=0;k<11;k++)for(l=k+1;l<12;l++){if(b[k][l]>max){ max=b[k][l];m=k;n=l;}if(b[k][l]==max)//相等的取购价低的{ if(a[k]<a[m]){ max=b[k][l];m=k;n=l;}}}if (max==0){cout<<"IMPOSSIBLE"<<endl;}else{C=m+1;D=n+1;E=max;cout<<C<<" "<<D<<" "<<E<<endl;}4.判断手机号码合法性#include<iostream>using namespace std;int verifyMsisdn(char* inMsisdn){int n=0;int i=0;int j=0;char *p;p=inMsisdn;while(p[i]!='\0'){ i++;n++;}if(n!=13)return 1;else{while(p[j]!='\0'){if(!((p[j]>='0' && p[j]<='9'))){return 2;break;}j++;}if(!(p[0]=='8'&& p[1]=='6'))return 3;else return 0;}}{char a[20];cin>>a;int m=verifyMsisdn(a);cout<<m;}5.元音字母复制#include<iostream>using namespace std;void sortVowel (char* input){ int j=0;char output[50]={0};for(int i=0;input[i]!='\0';i++){ if(input[i]=='a' || input[i]=='e'|| input[i]=='i'|| input[i]=='o'|| input[i]=='u') {output[j]=input[i];j++;}}int w=j;char temp;for(int k=0;k<j-1;k++)for(int l=0;l<j-1-k;l++){if(output[l]>output[l+1]){temp=output[l];output[l]=output[l+1];output[l+1]=temp;}}for(int i=0;input[i]!=0;i++){ if( input[i]=='A'|| input[i]=='E'|| input[i]=='I'|| input[i]=='O'|| input[i]=='U') {output[j]=input[i];}}char temp2;for(int m=w;m<j-1;m++)for(int n=w;n<j-1-m;n++){if(output[n]>output[n+1]){temp2=output[n];output[n]=output[n+1];output[n+1]=temp2;}}cout<<output;}void main(){char a[50];cin.get(a,50);sortVowel(a);}6.验证身份证号#include<iostream>using namespace std;int verifyIDCard(char* input) {int n=0;int i=0;int j=0;p=input;while(p[i]!='\0'){ i++;n++;}if(n!=18)return 1;else{while(j<17){if(!((p[j]>='0' && p[j]<='9'))){return 2;break;}j++;}if(!(p[17]=='x'|| (p[17]>='0' && p[17]<='9')))return 3;else{int year=(p[6]-'0')*1000+(p[7]-'0')*100+(p[8]-'0')*10+(p[9]-'0');int month=(p[10]-'0')*10+(p[11]-'0');int day=(p[12]-'0')*10+(p[13]-'0');if(!(year>=1900 && year<=2100))return 4;else{if(!(month>=1 && month<=12))return 5;else{//能被整除且不能被整除或能被整除的年份bool ryear=(year%4==0 && year%100!=0) || (year%400==0);if(!((!ryear && day>0 && day<29)|| (ryear && day>0 && day<=29)))return 6;else{return 0;}}}}}void main(){for(int c=0;c<10;c++){char a[20];cin>>a;int m=verifyIDCard(a);cout<<m;}}7.选秀节目打分#include<iostream>using namespace std;#define N 5int total(int score[],int judge_type[],int cn){ int sum1=0,sum2=0,m=0,n=0,aver=0,totalscore=0;for(int i=0;i<cn;i++){ if(judge_type[i]=1){sum1+=score[i];m++;}else{sum2+=score[i];n++;}}if(n==0)totalscore=sum1/m;else{ totalscore=(int)(sum1/m * 0.6+sum2/n * 0.4);}return totalscore;}void main(){int score[N];int judge_type[N];for(int i=0;i<N;i++){ cout<<"输入第"<<i+1<<"个评委的类别"<<endl;cin>>judge_type[i];cout<<"输入第"<<i+1<<"个评委的分数"<<endl;cin>>score[i];}int totalscore= total(score,judge_type,N);cout<<totalscore<<endl;}8.数组最大值放中间,其他依次放其左右(规律未找着,未完成)#include<iostream>using namespace std;void sort(int input[], int n, int output[]){int i,j;int temp =0;for(i =0; i<n-1; i++)for(j =0; j<n-i-1; j++){if(input[j]>input[j+1]){temp = input[j];input[j] = input[j+1];input[j+1] = temp;}}if(n%2 ==0){for(i =0 ; i<n/2; i++){output[i] = input[2*i];}for(i =0; i<n/2; i++){output[n/2+i] = input[n-1-2*i];}}else{for(i=0; i<(n-1)/2; i++){output[i] = input[2*i+1];}output[(n-1)/2]= input[n-1];for(i = 0; i<(n-1)/2; i++){output[(n-1)/2+1+i] = input[n-3-2*i];}}for(i = 0 ; i<n; i++){printf("%d", output[i]);}printf("\n");}int main(){int input1[] = {3, 6, 1, 9, 7};int input2[] = {3, 6, 1, 9, 7, 8};int output1[5] = {0};int output2[6] = {0};sort( input1, 5,output1) ;sort(input2, 6, output2) ;}9.任务调度(解题关键,需要一个容器来承载下标跟值的一一对应关系,最好就是定义一个结构体) #include<iostream>using namespace std;struct table{ int number;int value;};void scheduler(int task[], int system_task[], int user_task[],int n){struct table *sb=(struct table *)malloc(n*sizeof(struct table));for(int i=0; i<n; i++){ sb[i].number=i;sb[i].value=task[i];}struct table temp;for(int k=0; k<n-1; k++)for(int j=0; j<n-1-k; j++){if(sb[j].value>sb[j+1].value){temp=sb[j];sb[j]= sb[j+1];sb[j+1] = temp;}}int cs=0,cu=0;for(int l=0; l<n; l++){if(sb[l].value<50){system_task[cs]=sb[l].number;cs++;}else if(sb[l].value<=255){user_task[cu]=sb[l].number;cu++;}elsecontinue;}system_task[cs]=-1;user_task[cu]=-1;free(sb);for(int m=0;m<=cs;m++){cout<<system_task[m];}printf("\n");for(int n=0;n<=cu;n++){cout<<user_task[n];}}int main(){int task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99};int n=9;int count_sys=0,count_user=0;for(int i=0;i<9;i++){if(task[i]<50)count_sys++;else if(task[i]<=255)count_user++;elsecontinue;}int *system_task=(int *)malloc(count_sys*sizeof(int)+4);int *user_task=(int *)malloc(count_user*sizeof(int)+4);scheduler(task, system_task, user_task,9);//int *p = system_task;//int *q = user_task;//////printf("%d%d\n", count_sys,count_user);// for(int i=0;i<count_sys+1;i++)// {// printf("%d", system_task[i]);// printf("\n");//// for(int i=0;i<count_user+1;i++)// {// printf("%d", user_task[i]);// }free(system_task);free(user_task);}10.将某字符变成小写后的某个字符#include<iostream>using namespace std;void TransferString(const char * pInputStr, long lInputLen, char * pOutputStr) {for(int i=0;i<lInputLen;i++){if(pInputStr[i]>='V'&& pInputStr[i]<='Z')pOutputStr[i]=pInputStr[i]+11;//('a' - 'A')-('V' - 'A');else if (pInputStr[i]>='A'&& pInputStr[i]<='U')pOutputStr[i]=pInputStr[i]+37;//('a' - 'A')+('F' - 'A');else{pOutputStr[i]=pInputStr[i];}}cout<<pOutputStr;}void main(){char *pInputStr="Axs3mWss";int n=0;while(pInputStr[n]!='\0')n++;long lInputLen=n+1;char *pOutputStr=(char *)malloc(sizeof(char)*(n+1));TransferString(pInputStr,lInputLen,pOutputStr);}11.链表的逆序#include<iostream>using namespace std;typedef struct tagListNode {int value;struct tagListNode *next;}ListNode;//要求实现函数:void converse(ListNode *head) {ListNode *p1,*p2,*p3;p1=head;p2=p1->next;while(p2){p3=p2->next;p2->next=p1;p1=p2;p2=p3;}head->next=NULL;head=p1;while(p1!=NULL){cout<<p1->value<<"->";p1=p1->next;}}void main(){ListNode *p,*head,*s;head=(ListNode*)malloc(sizeof(ListNode));p=head;int n=0,m=0;while(n<5){cin>>m;s=(ListNode*)malloc(sizeof(ListNode));s->value=m;p->next=s;p=s;n++;}head=head->next;p->next=NULL;converse(head);//p=head;//while(p!=NULL)// {// cout<<p->value<<"->";// p=p->next;//// }}12.单词统计#include<iostream>#include<string>using namespace std;struct node{//int number;int count;char a[10];};void WordStat(const char * pInputStr, char * pOutputHotWord, char * pOutputColdWord) {//cout<<sizeof(pOutputHotWord)<<endl;int i=0;char *pInputStr1=(char *)malloc(100*sizeof(char));strcpy(pInputStr1,pInputStr);//(char *)while(pInputStr1[i]!='\0'){if(pInputStr1[i]>='A' && pInputStr1[i]<='Z')pInputStr1[i]+=32;i++;}const char * split = ", .";struct node sb[10]={0};//*sb=(struct node *)malloc(10*sizeof(struct node));char *p={0};p=strtok (pInputStr1,split);int j=0;while(p!=NULL){ //sb[j].number=j;strcpy(sb[j].a,p);sb[j].count=0;j++;p=strtok (NULL,split);}for(int k=0;k<10;k++)for(int l=0;l<10;l++){if (strcmp(sb[k].a,sb[l].a)==0)sb[k].count+=1;}struct node max;struct node min;int dex1=0,dex2=0;max=sb[0];min=sb[0];for(int m=0;m<j;m++){if(sb[m].count>max.count){ max=sb[m];dex1=m;}else if((sb[m].count<min.count) &&(sb[m].count!=min.count) ) {min=sb[m];dex2=m;}}/*for(int m=0;m<j;m++){cout<<sb[m].count<<endl;cout<<sb[m].a;}*/strcpy(pOutputHotWord,sb[dex1].a);strcpy(pOutputColdWord,sb[dex2].a);cout<<"最高"<<pOutputHotWord;cout<<"最低"<<pOutputColdWord;}void main(){char pInputStr[100]={0};cin.get(pInputStr,100);char * pOutputHotWord=( char *)malloc(sizeof( char *)*100); char * pOutputColdWord=( char *)malloc(sizeof( char *)*100); memset(pOutputHotWord, 0, sizeof(pOutputHotWord)) ; memset(pOutputColdWord, 0, sizeof(pOutputHotWord)) ; WordStat(pInputStr, pOutputHotWord,pOutputColdWord);}13.字符串转换成规定数字转换成相应的数字已知:yi er san si wu liu qi ba jiu 分别对应,对一段只含有这几种字符的字符串进行转换,转换成相应的数字如:yiersansan:#include<iostream>#include<string>using namespace std;int WordStat(const char * pInputStr, char * pOutputWord){int i=0,d=0,k=0,sum=0;char *pInputStr1=(char *)malloc(100*sizeof(char));strcpy(pInputStr1,pInputStr);//(char *)char* sss[9] = {"yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};while(pInputStr1[i]!='\0'){if(pInputStr1[i]=='y' || pInputStr1[i]=='e'|| pInputStr1[i]=='w'|| pInputStr1[i]=='q'|| pInputStr1[i]=='b')d=2;if(pInputStr1[i]=='l' || pInputStr1[i]=='j')d=3;if(pInputStr1[i]=='s'){ if(pInputStr1[i+1]=='a')d=3;if(pInputStr1[i+1]=='i')d=2;}for(int j=0;j<9;j++){if(strncmp(pInputStr1+i,sss[j],d)==0)k=j+1;}sum=sum*10+k;i+=d;}return sum;}void main(){char pInputStr[100]={0};cin.get(pInputStr,100);char * pOutputWord=( char *)malloc(sizeof( char *)*100);memset(pOutputWord, 0, sizeof(pOutputWord)) ;int transver= WordStat(pInputStr, pOutputWord);cout<<transver;}14.一个数组中比平均数大的个数#include<iostream>#include<string>using namespace std;int count(int p[], int n){int sum=0,m=0;for(int i=0;i<n;i++){sum+=p[i];}int aver=sum/n;for(int j=0;j<n;j++){if(p[j]>aver)m++;}return m;}void main(){cout<<"输入个数n"<<endl;int n;cin>>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++){cin>>a[i];int m=count(a,n);cout<<m;}15. 求一个数组中第一大和第二大数#include<iostream>#include<string>using namespace std;void count(int p[], int n){int max=0,smax=0,k=0;for(int i=0;i<n;i++){if(p[i]>max){ max=p[i];k=i;}}for(int j=0;j<n ;j++){if(j==k)continue;if(p[j]>smax)smax=p[j];}cout<<"最大"<<max<<endl;cout<<"二大"<<smax<<endl;}void main(){cout<<"输入个数n"<<endl;int n;cin>>n;int *a=(int*)malloc(sizeof(int)*n);for(int i=0;i<n;i++)cin>>a[i];}count(a,n);}16.字符变成整数#include<iostream>#include<string>using namespace std;int chartoint(const char * pInputStr) {int i=0,d=0,k=0,sum=0;while (pInputStr[i]!='\0'){d=pInputStr[i]-'0';sum=sum*10+d;i++;}return sum;}void main(){char pInputStr[100]={0};cin.get(pInputStr,100);int transver= chartoint(pInputStr);cout<<transver+1;}17.整数变字符#include<iostream>using namespace std;void main(){int n,i=0;cin>>n;//int m=(int)sqrt(n);char p[50]={0},s[50]={0};while(n){p[i]=n%10+'0';i++;n/=10;}p[i]='\0';int m=strlen(p);//char *s=(char *)malloc(sizeof(char)*(m+1)); for (int j = 0; j < m; j ++)s[j]=p[m-1-j];s[m]='\0';cout<<s;}18.判断素数问题#include<iostream>#include<math.h>using namespace std;void main(){int n,i=0;cin>>n;//int m=(int)sqrt(n);for(i=2;i<n;i++){if(n%i==0)break;}if(i==n)cout<<"sushu"<<endl;else{cout<<"bushisushu"<<endl;}}19.1约瑟夫环#include<iostream>using namespace std;typedef struct LNode{int data;struct LNode*link;}LNode;void jos(int n,int k,int m){LNode *p,*curr,*r;p=(LNode*)malloc(sizeof(LNode));p->data=1;//注意我是从开始的奥p->link=p;curr=p;for(int i=2;i<=n;i++){LNode *s=(LNode*)malloc(sizeof(LNode));s->data=i;s->link=curr->link;curr->link=s;curr=s;}//==============================================循环链表的建立while(--k){ r=p;p=p->link;}//======================p指向序号为k的位置int w=m;while(n--){while(--m){r=p;p=p->link;}//======================p指向序号为k的之后的m位置上cout<<p->data<<"->";r->link=p->link;p=r->link;m=w;}}void main(){jos(9,1,5);}//5->1->7->4->3->6->9->2->8->19.2约瑟夫环(数学方法只能求出最后的胜利者的序号)#include<stdio.h>int main(){int n,m,i,s = 0;printf("N M =");scanf("%d%d",&n,&m);for(i = 2; i <= n; i++){s = (s + m) % i;}printf("n The winner is %dn",s+1);}19.3约瑟夫环(容器实现)#include<vector>#include<iostream>using namespace std;const int N = 9;const int M = 5;const int k = 1;int main(int argc, char* argv[]){vector<int> ring;for(int i=0; i<N;i++)ring.push_back(i+1);vector<int>::iterator iBegin = ring.begin();vector<int>::iterator iEnd;while ( !ring.empty() ){iEnd = ring.end();if(iBegin == iEnd )iBegin = ring.begin();for(int i=1;i<M;i++){iBegin++;if(iBegin >= iEnd)iBegin = ring.begin();}cout<<*iBegin<<endl;iBegin = ring.erase(iBegin);}}20.判断某个整数是回文。

python华为od机试题

python华为od机试题

python华为od机试题华为OD机试题:1. 请写出 Python 程序中使用的各种数据类型和它们的特点。

Python 中使用的各种数据类型包括整型(int)、浮点型(float)、布尔型(bool)、字符串型(str)、列表型(list)、元组型(tuple)、字典型(dict)等。

其中,整型数据可表示整数,浮点型数据可表示带小数的数,布尔型数据只有两种取值(True和False),字符串型数据可处理文本,列表型数据可存储一系列有序且可更改的元素,元组型数据也可存储一系列有序且不可更改的元素,字典型数据可存储键值对数据。

2. 请简述 Python 中函数的定义和调用方法,举例说明。

Python 中函数的定义可通过def语句进行,包含函数名和参数列表。

调用时,可通过函数名和参数列表的方式调用函数。

例如:def add_numbers(a, b):return a + bprint(add_numbers(1, 2)) # 输出结果为33. Python 中常用的数据结构有哪些?请简述它们的特点和应用场景。

Python 中常用的数据结构有列表、元组和字典。

列表是一种有序、可变的数据结构,可存储多个元素并支持添加、删除和修改元素等操作。

列表适用于存储有序的,可修改的元素序列。

元组是一种有序且不可变的数据结构,可存储多个元素但不能进行添加、删除和修改操作。

元组适用于存储有序的,不可变的元素序列。

字典是一种无序的键-值 (key-value) 数据结构,以键值对的方式存储数据,可进行添加、删除和修改操作。

字典适用于存储无序的,可变的键值对数据。

4. 请简述 Python 中的面向对象编程思想和基本概念。

Python 中的面向对象编程思想是基于对象的编程思想,它的基本概念包括类、对象、属性和方法。

类是一种抽象的数据类型,是一类具有相同属性和方法的对象的模板。

通过类可创建对象,也称为类的实例。

对象是指类的一个具体实例,它具有类定义的属性和方法。

华为机试试题汇总

华为机试试题汇总

1.第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50#include<>main(){intnum[50]={0};inti,n;printf("请输入整型数组的长度(1~50):");scanf("%d",&n);printf("请输入整型数组的元素:");for(i=0;i<n;i++){scanf("%d",&num[i]);}intmin_num=num[0];intmax_num=num[0];for(intj=0;j<n;j++){if(max_num<num[j])max_num=num[j];elseif(min_num>num[j])min_num=num[j];}intsum=min_num+max_num;printf("数组中最大与最小值之和:%d\n",sum);return0;}#include<>#include<>#include<>main(){char*num1,*num2;过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr );【输入】pInputStr:输入字符串lInputLen:输入字符串长度【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;#include<>#include<>#include<>voidstringFilter(constchar*p_str,longlen,char*p_outstr){intarray[256]={0};constchar*tmp=p_str;for(intj=0;j<len;j++){if(array[tmp[j]]==0)*p_outstr++=tmp[j];array[tmp[j]]++;}*p_outstr='\0';}voidmain(){char*str="cccddecc";intlen=strlen(str);char*outstr=(char*)malloc(len*sizeof(char));stringFilter(str,len,outstr);printf("%s\n",outstr);free(outstr);outstr=NULL;}4.通过键盘输入一串小写字母(a~z)组成的字符串。

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