- 相关推荐
微软电话面试技巧
微软电话面试程序题
1将一个句子按单词反序,将一个句子按单词反序 1. #include "iostream"2. #include <http://www.oh100.com
3. using namespace std;
4. const int max=180; //一句话的长度
5. const int num=20; //一个单词的长度
6. p=new char
7. void inversion(char a[],int size)
8. {
9. assert(a!=NULL);
10. char temp;
11. for (int i=0;i<size/2;i++)
12. {
13. temp=a[i];
14. a[i]=a[size-1-i];
15. a[size-1-i]=temp;
16. }
17. }
18. void main()
19. {
20. char str[max];
21. int i,j,size;
22. char *p;
23. p=new char[20];
24. if (!p)
25. {
26. return;
27. }
28. else
29. {
30. memset(p,0,num);
31. }
32. http://www.oh100.com(str,max);
33. size=strlen(str);
34. inversion(str,size);
35. i=0;
36. while (i<size)
37. {
38. p=str+i;
39. j=i;
40. while (str[j]!=' '&&j<size)
41. {
42. j++;
43. }
44. inversion(p,j-i);
45. i=j+1;
46. }
47. cout<<str<<endl;
48. // delete p; //添加这句话会出错?
49. }
2 计算某年某月某日之后的第n天是某年某月某日 1. #include "iostream"
2. using namespace std;
3. class CDate
4. {
5. public:
6. int m_year;
7. int m_mouth;
8. int m_date;
9. };
10.
11. bool Isrun(int year) //判断闰年,366天
12. {
13. if((year%4==0 && year%100!=0) || year%400==0)
14. return true;
15. else
16. return false;
17.
18. }
19.
20. int mouth_cout(int m,int n)
21. {
22. int resual;
23. switch (m)
24. {
25. case 1: resual=31 ; break;
26. case 2: resual=28+Isrun(n); break;
27. case 3: resual=31 ; break;
28. case 4: resual=30 ; break;
29. case 5: resual=31 ; break;
30. case 6: resual=30 ; break;
31. case 7: resual=31 ; break;
32. case 8: resual=31 ; break;
33. case 9: resual=30 ; break;
第2/6页
34. case 10: resual=31 ; break;
35. case 11: resual=30 ; break;
36. case 12: resual=31 ; break;
37. default :resual=0; break;
38. }
39. return resual;
40.
41. }
42.
43. void main()
44. {
45. CDate d;
46. int num;
47. cout<<"请输入年,月,日:";
48. cin>>http://www.oh100.com
49. if (http://www.oh100.com||http://www.oh100.com||(mouth_cout(http://www.oh100.com)http://www.oh100.com)<0)
50. {
51. cout<<"输入有误,请重新输入"<<endl;
52. cout<<"请输入年,月,日:";
53. cin>>http://www.oh100.com
54. }
55. cout<<"请输入天数:";
56. cin>>num;
57. cout<<"距离"<<http://www.oh100.com"年"<<http://www.oh100.com"月"<<http://www.oh100.com"日后"<<num<<"天
是:"<<endl;
58. int i=0,j=0,k=0;
59. //计算年
60. if(http://www.oh100.com)
61. {
62. while (i<=num)
63. {
64. if(Isrun(http://www.oh100.com)) i+=366;
65. else i+=365;
66. http://www.oh100.com
67. }
68. http://www.oh100.com
69. num=num-i+365+Isrun(http://www.oh100.com); //剩余天数
70. }
71. else
72. {
73. while (i<=num)
74. {
75. if(Isrun(http://www.oh100.com)) i+=366;
76. else i+=365;
77. http://www.oh100.com
78. }
79. http://www.oh100.com
80. num=num-i+365+Isrun(http://www.oh100.com); //剩余天数
81. }
82. //计算月份
83. while (j<=num)
84. {
85. j+=mouth_cout(http://www.oh100.com);
86. http://www.oh100.com
87. if (http://www.oh100.com)
88. {
89. http://www.oh100.com
90. http://www.oh100.com
91. }
92. }
93. http://www.oh100.com
94. if (http://www.oh100.com)
95. {
96. http://www.oh100.com
97. http://www.oh100.com
98. }
99. num=num-j+mouth_cout(http://www.oh100.com);
100.
101. //计算天数
102. if(mouth_cout(http://www.oh100.com)http://www.oh100.com)
103. http://www.oh100.com
104. else
105. {
106. http://www.oh100.com(http://www.oh100.com)+http://www.oh100.com
107. http://www.oh100.com
108. if (http://www.oh100.com)
109. {
110. http://www.oh100.com
111. http://www.oh100.com
112. }
113. }
114.
115. cout<<http://www.oh100.com"年"<<http://www.oh100.com"月"<<http://www.oh100.com"日"<<endl;
116.
117. }
3 计算一个字符数组中的逆序对个数,要求时间复杂度最低 1. #include <http://www.oh100.com
2. #include <http://www.oh100.com
3.
4. /**///////////////////////////////////////////////////////////////////////////
5. //求逆序数
6. //最快的算法是归并排序时计算逆序个数,时间复杂度是nlog2n, 空间复杂度是2n
7. //a为字符数组,len为字符数组的长度
8. int number = 0; //number表示逆序对的个数
9. void mergePass(char *, char *, int, int);
10. void merge(char*, char*, int, int, int);
11. void copy(char *dest, char *src, int l, int r)
12. {
13. while(l <= r)
14. {
15. dest[l] = src[l];
16. l++;
17. }
18. }
19. void mergeSort(char *a, int size)
20. {
21. char *b = (char*)malloc(sizeof(char) * size);
22. mergePass(a, b, 0, size - 1);
23. free(b);
24. }
25.
26.
27. void mergePass(char *a, char *b, int l, int r)
28. {
29. int m;
30. if(l < r)
31. {
32. m = (l + r) / 2;
33. mergePass(a,b,l,m); //a分段有序,b也分段有序
34. mergePass(a,b,m+1,r);
35. merge(a,b,l,m,r); //a归并排序到b
36. copy(a,b,l,r); //排序后的b复制到a
37.
38. }
39. }
40.
41. void merge(char *a, char *b, int l, int m, int r)
42. {
43. int i = l, j = m + 1;
44. while( i <= m && j <= r)
45. {
46. if(a[i] <= a[j])
47. b[l++] = a[i++];
48. else
49. {
50. b[l++] = a[j++];
51. //a[i] > a[j], 表示出现了逆序对,此时由于
52. //a[i..m]是已经有序了,那么a[i+1], a[i+2], ... a[m]都是大于a[j]的,
53. //都可以和a[j]组成逆序对,因此number += m - i + 1
54. number += m-i+1;
55. }
56. }
57. while(i <= m)
58. b[l++] = a[i++];
59. while(j <= r)
60. b[l++] = a[j++];
61. }
62.
63.
64. int main()
65. {
66. char b[5] = {'F', 'D', 'C', 'B','A'};
67. mergeSort(b, 5);
68. for(int i = 0; i < 5; i++)
69. printf("%c ",b[i]);
70. printf("%d ", number);
71. system("pause");
72. return 0;
73. }
【微软电话面试技巧】相关文章:
微软校园大使面试技巧04-17
电话的面试技巧03-22
电话面试技巧05-10
电话面试技巧02-07
面试技巧之电话面试04-29
电话销售面试技巧05-14
电话邀约面试技巧05-12
英语电话面试技巧05-11
面试电话销售技巧05-18
面试电话销售的技巧05-18