华为实习生面试上机题总结

上传人:xzh****18 文档编号:45552381 上传时间:2018-06-17 格式:PDF 页数:22 大小:213.82KB
返回 下载 相关 举报
华为实习生面试上机题总结_第1页
第1页 / 共22页
华为实习生面试上机题总结_第2页
第2页 / 共22页
华为实习生面试上机题总结_第3页
第3页 / 共22页
华为实习生面试上机题总结_第4页
第4页 / 共22页
华为实习生面试上机题总结_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《华为实习生面试上机题总结》由会员分享,可在线阅读,更多相关《华为实习生面试上机题总结(22页珍藏版)》请在金锄头文库上搜索。

1、华为上机题总结 1.选秀节目打分,分为专家评委和大众评委,score 数组里面存储每个评委打的分数,judge_type 里存储与 score 数组对应的评委类别,judge_typei = 1,表示专家评委,judge_typei = 2,表示大众评委,n 表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 = 专家评委平均分,总分取整。函数最终返回选手得分。 函数接口 int cal_score(int score, int judge_type,

2、int n) view plain 1. #include “iostream“ 2. using namespace std; 3. 4. int cal_score(int score, int judge_type, int n) 5. 6. if (NULL=score|NULL=judge_type|0=n) 7. return 0; 8. 9. int sum=0; 10. int sum1=0,count1=0; 11. int sum2=0,count2=0; 12. for(int i=0;i= 50 且 dataj) 20. 21. change( 22. change(

3、23. 24. 25. 26. 27. 28. 29. void scheduler(int task, int n, int system_task, int user_task) 30. 31. 32. int *sort_task=new intn; 33. int *index=new intn; 34. for(int i=0;i50 7. int k=0; 8. int n=strlen(str); 9. for (int i=0;i=t1 54. num1len; 55. 56. k; 57. while (resultk0=0) 58. 59. k; 60. 61. k+; 6

4、2. if (num10=) 63. resultk+=num10; 64. resultk=0; 65. 66. 67. 68. 69. void add (const char *num1, const char *num2, char *result) 70. 71. int num1len=strlen(num1)1; 72. int num2len=strlen(num2)1; 73. int t=0; /进位 74. int k=0; 75. if (num10= 78. int t2=num2len; 79. int t11=0; 80. if (num10= 82. while

5、 (t1=t11 85. t=(num1t10)+(num2t20)+t)/10; 86. t1; 87. t2; 88. 89. while (t2=t11) 90. 91. resultk+=(num2t20)+t)%10+0; 92. t=(num2t20)+t)/10; 93. t2; 94. 95. 96. while (t1=t11) 97. 98. resultk+=(num1t10)+t)%10+0; 99. t=(num1t10)+t)/10; 100. t1; 101. 102. 103. if (t!=0) 104. resultk+=t+0; 105. if (num1

6、0= 108. 109. resultk=0; 110. reverse(result); 111. 112. else 113. 114. if (num10=) 115. 116. if (num1len=num2len+1) 117. 118. int j=0; 119. while (jnum2j) 122. 123. sub(num1,num2, result); 124. reverse(result); 125. break; 126. 127. else if(num1j+1num2len+1) 139. 140. sub(num1,num2, result); 141. re

7、verse(result); 142. 143. else if(num1lennum2j+1) 158. 159. sub(num1,num2, result); 160. reverse(result); 161. break; 162. 163. else if(num1j+1num2len) 175. 176. sub(num1,num2, result); 177. reverse(result); 178. 179. else if(num1len+1 2. #include 3. #include “string“ 4. #include “assert.h“ 5. int ar

8、ray_compare(int len1, int array1, int len2, int array2) 6. 7. assert(array1!=NULL 8. int count=0; 9. while (len1!=0 14. 15. len1; 16. len2; 17. 18. return count; 19. 20. 21. 22. int main() 23. 24. int array1 = 1,3,5; 25. int len1 = 3; 26. int array2 = 77,21,1,3,5; 27. int len2 = 5; 28. printf(“%d“,a

9、rray_compare(len1, array1,len2, array2); 29. int array3 = 1,3,5; 30. len1 = 3; 31. int array4 = 77,21,1,3,5,7; 32. len2 = 6; 33. printf(“%d“,array_compare(len1, array3,len2, array4); 34. 7.约瑟夫问题 问题描述: 输入一个由随机数组成的数列(数列中每个数均是大于 0 的整数,长度已知),和初始计数值 m。从数列首位置开始计数,计数到 m 后,将数列该位置数值替换计数值 m,并将数列 该位置数值出列,然后从下一

10、位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数 值出列的顺序 比如: 输入的随机数列为:3,1,2,4,初始计数值 m=7,从数列首位置开始计数(数值 3 所在位置) 第一轮计数出列数字为 2,计数值更新 m=2,出列后数列为 3,1,4,从数值 4 所在位置从新开始计数 第二轮计数出列数字为 3,计数值更新 m=3,出列后数列为 1,4,从数值 1 所在位置开始计数 第三轮计数出列数字为 1,计数值更新 m=1,出列后数列为 4,从数值 4 所在位置开始计数 最后一轮计数出列数字为 4,计数过程完成。 输出数值出

11、列顺序为:2,3,1,4。 要求实现函数: void array_iterate(int len, int input_array, int m, int output_array) 【输入】 int len:输入数列的长度; int intput_array:输入的初始数列 int m:初始计数值 【输出】 int output_array:输出的数值出列顺序 【返回】 无 示例 输入:int input_array = 3,1,2,4,int len = 4, m=7 输出:output_array = 2,3,1,4 view plain 1. #include “iostream“ 2. using namespace std; 3. struct Node 4. 5. int data; 6. Node *next; 7. ; 8. void array_iterate(in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号