《25例华为校园招聘编程试题及参考代码》由会员分享,可在线阅读,更多相关《25例华为校园招聘编程试题及参考代码(86页珍藏版)》请在金锄头文库上搜索。
1、25例华为校园招聘编程试题及参考代码1输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50参考代码:#includemain()int num50=0;int i,n;printf(“请输入整型数组的长度(150):”);scanf(“%d”,&n);printf(“请输入整型数组的元素:”);for (i=0;in;i+)scanf(“%d”,&numi);int min_num=num0;int max_num=num0;for(int j=0;jn;j+)if(max
2、_numnumj)min_num=numj;int sum=min_num+max_num;printf(“数组中最大与最小值之和:%dn”,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
3、*)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_num10&len_num20;len_num1,len_num2)sumlen_max-=(num1len_num1-1-0)
4、+(num2len_num2-1-0);if(len_num10)sumlen_max-=num1len_num1 - 1 -0;len_num1;if(len_num20)sumlen_max-=num1len_num2 - 1-0;len_num2;for(int j=len_max1;j=0;j) /实现进位操作/temp=sumj-0;if(sumj=10)sumj-1+=sumj/10;sumj%=10;char *outsum=(char*)malloc(sizeof(char)*len_max1);j=0;while(sumj=0) /跳出头部0元素j+;for(int m=0;
5、mlen_max1;j+,m+)outsumm=sumj+0;outsumm=0;printf(“输出两长长整型数据之和:%sn”,outsum);return 0;3.通过键盘输入一串小写字母(az)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串”abacacde”过滤结果为”abcde”。要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr:输入字符串lInputLen:输入字符串长度【输出】
6、 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;参考代码:#include #include#includevoid stringFilter(const char *p_str, long len, char *p_outstr)int array256=0;const char *tmp = p_str;for(int j=0;jlen;j+)if(arraytmpj=0)*p_outstr+= tmpj;arraytmpj+;*p_outstr = 0;void main()char *str = “cccddecc”;int len = strlen(str);c
7、har * outstr = (char *)malloc(len*sizeof(char);stringFilter(str,len,outstr);printf(“%sn”,outstr);free(outstr);outstr = NULL;5.通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:”操作数1 运算符 操作数2,”操作数”与”运算符”之间以一个空格隔开。补充说明:1. 操作数为正整数,不需要考虑计算结果溢出的情况。2. 若输入算式格式错误,输出结果为”0。要求实现函数:void arithmetic(const char *pI
8、nputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr: 输入字符串lInputLen: 输入字符串长度【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;#include #include#includevoid arithmetic(const char *input, long len, char *output)char s110;char s210;char s310;int cnt = 0;int len_input=strlen(input);for(int i=0;ilen_input;+i
9、)if(inputi= )cnt+;if(cnt!=2)*output+ = 0;*output = 0;return;sscanf(input,”%s %s %s”,s1,s2,s3);if(strlen(s2)!=1|(s20!=+&s20!=-)*output+ = 0;*output = 0;return;int len_s1=strlen(s1);for(i=0;ilen_s1;i+)if(s1i9)*output+ = 0;*output = 0;return;int len_s3=strlen(s3);for(i=0;ilen_s3;i+)if(s3i9)*output+ = 0
10、;*output = 0;return;int x = atoi(s1);int y = atoi(s3);if(s20=+)int result = x+y;itoa(result,output,10);else if(s20=-)int result = x-y;itoa(result,output,10);else*output+ = 0;*output = 0;return;void main()char str = “10 23;char outstr10;int len = strlen(str);arithmetic(str,len,outstr);printf(“%sn”,str);printf(“%sn”,outstr);6.一组人(n个),围成一圈,从某人开始数到第三个的人出列,再接着从下一个人开始数,最终输出最终出列的人(约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3n分别表示)围坐在一张圆桌周围。从编号为k的人开