搜档网
当前位置:搜档网 › 华为上机题——2012

华为上机题——2012

华为上机题——2012
华为上机题——2012

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)

1.#include "iostream"

https://www.sodocs.net/doc/f09690621.html,ing 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

13. {

14. if (judge_type[i]==1)

15. {

16. sum1=sum1+score[i];

17. count1++;

18. }

19. else

20. {

21. sum2=sum2+score[i];

22. count2++;

23. }

24. }

25. if(0==count2)

26. sum=sum1/count1;

27. else

28. sum=(sum1/count1)*0.6+(sum2/count2)*0.4;

29. return sum;

31.void main()

32.{

33.int score[3]={12,13,15};

34.int judge_type[3]={1,1,2};

35. printf("%d",cal_score(score, judge_type, 3) );

36.

37.}

//2. 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}

函数接口void sort(int input[[, int n, int output[])

print?

1.#include "iostream"

https://www.sodocs.net/doc/f09690621.html,ing namespace std;

3.void bubblesort(int data[],int n)

4.{

5.int temp=0;

6. for(int i=0;i

7. {

8. for (int j=i+1;j

9. {

10. if (data[i]

11. {

12. temp=data[i];

13. data[i]=data[j];

14. data[j]=temp;

15. }

16. }

17. }

18.}

20.void sort(int input[], int n, int output[])

21.{

22.int *sort_input=new int[n];

23. for(int i=0;i

24. {

25. sort_input[i]=input[i];

26. }

27. bubblesort(sort_input,n);

28. if (1==n%2)

29. {

30.int mid=n/2;

31.int k=0;

32. output[mid]=sort_input[k++];

33. for(int j=1;j<=n/2;j++)

34. {

35. output[mid-j]=sort_input[k++];

36. output[mid+j]=sort_input[k++];

37. }

38.

39. }

40. else

41. {

42.int mid=n/2;

43.int k=0;

44. output[mid]=sort_input[k++];

45. for(int j=1;j

46. {

47. output[mid-j]=sort_input[k++];

48. output[mid+j]=sort_input[k++];

49. }

50. output[0]=sort_input[k++];

51.

52. }

53.

54. delete sort_input;

55.}

56.

57.

58.void main()

59.{

60.int input1[] = {3, 6, 1, 9, 7};

61.int output1[5];

62. memset(output1,0,5*sizeof(int));

63.int input2[] = {3, 6, 1, 9, 7, 8} ;

64.int output2[6];

65. memset(output2,0,6*sizeof(int));

66.

67. sort(input1, 5, output1);

68. sort(input2, 6, output2);

69. for(int k=0;k<5;k++)

70. printf("%d ",output1[k]);

71. for(k=0;k<6;k++)

72. printf("%d ",output2[k]);

73.}

// 3.操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级< 50,用户任务的优先级>= 50且<= 255。优先级大于255的为非法任

务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任

务用户任务依次存放到system_task[] 数组和user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按

照入//队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2, 6, -1}

// 函数接口void scheduler(int task[], int n, int system_task[], int user_task[])

1.#include "iostream"

https://www.sodocs.net/doc/f09690621.html,ing namespace std;

3.void change(int *a,int *b)

4.{

5.int temp=*a;

6. *a=*b;

7. *b=temp;

8.}

9.

10.void bubblesort(int data[],int n,int index[])//冒泡排序并记录排序后下标

11.{

12.int temp=0;

13. for(int j=0;j

14. index[j]=j;

15. for(int i=0;i

16. {

17. for (int j=i+1;j

18. {

19. if (data[i]>data[j])

20. {

21. change(&data[i],&data[j]);

22. change(&index[i],&index[j]);

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 int[n];

33.int *index=new int[n];

34. for(int i=0;i

35. {

36. sort_task[i]=task[i];

37. }

38. bubblesort(sort_task,n,index);

39. i=0;

40. while (sort_task[i]<50)

41. {

42. system_task[i]=index[i];

43. i++;

44. }

45.

46. system_task[i]=-1;

47.

48.int k=0;

49. while (sort_task[i]>50&&sort_task[i]<=255)

50. {

51. user_task[k++]=index[i++];

52. }

53.

54. user_task[k]=-1;

55. delete sort_task;

56. delete index;

57.

58.

59.}

60.void main()

61.{

62.int task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} ;

63.int n=sizeof(task)/sizeof(int);

64.int *system_task=new int[n];

65.int *user_task=new int[n];

66.

67. scheduler(task, n, system_task, user_task);

68.

69. for(int k=0;k

70. {

71.

72. printf("%d ",system_task[k]);

73. if (system_task[k]!=-1)

74. {

75. printf("%d ",system_task[k]);

76. }

77. else

78. {

79. printf("%d ",system_task[k]);

80. break;}

81.

82. }

83. printf("\n");

84. for(k=0;k

85. {

86. printf("%d ",user_task[k]);

87. if (user_task[k]!=-1)

88. {

89. printf("%d ",user_task[k]);

90. }

91. else{

92. printf("%d ",system_task[k]);

93. break;}

94.

95. }

96.}

4.删除字符串中所有给定的子串

问题描述:

在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数:

int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【输入】str:输入的被操作字符串

sub_str:需要查找并删除的特定子字符串

【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果

【返回】删除的子字符串的个数

[cpp]view plaincopyprint?

1.#include

2.#include

3.#include "string"

4.int delete_sub_str(const char *str, const char *sub_str, char *result_str

)

5.{

6.int count = 0;

7.int k=0;

8.int n=strlen(str);

9. for (int i=0;i

10. {

11. while (str[i]!=sub_str[0]&&str[i]!='\0')

12. {

13. result_str[k++]=str[i];

14. i++;

15. }

16.int j=0;

17.int temp=i;

18. while (str[i]==sub_str[j]&&str[i]!='\0'&&sub_str[j]!='\0')

19. {

20. i++;

21. j++;

22. }

23. if (sub_str[j]=='\0')

24. {

25. count++;

26. }

27. else

28. {

29. while (temp

30. {

31. result_str[k++]=str[temp];

32. temp++;

33. }

34.

35.

36. }

37.

38. i--;

39. }

40. result_str[k]='\0';

41. return count;

42.

43.}

44.

45.int main()

46.{

47.char *str = "aadde";

48.char *sub = "ad";

49.char res[50] ="";

50.int count = delete_sub_str(str, sub, res);

51. printf("子字符串的个数是:%d\n", count);

52. printf("删除子字符串后:%s\n", res);

53. return 0;

54.}

55.

56.

6.数组比较

问题描述:

比较两个数组,要求从数组最后一个元素开始逐个元素向前比较,如果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[])

【输入】int len1:输入被比较数组1的元素个数;

int array1[]:输入被比较数组1;

int len2:输入被比较数组2的元素个数;

int array2[]:输入被比较数组2;

【输出】无

【返回】不相等元素的个数,类型为int

示例

1)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5},int len2 = 5 函数返回:0

2)输入:int array1[] = {1,3,5},int len1 = 3,int array2[] = {77,21,1,3,5,7},int len2 = 6 函数返回:3

[cpp]view plaincopyprint?

1.#include

2.#include

3.#include "string"

4.#include "assert.h"

5.int array_compare(int len1, int array1[], int len2, int array2[])

6.{

7. assert(array1!=NULL&&array1!=NULL);

8.int count=0;

9. while (len1!=0&&len2!=0)

10. {

11. if (array1[len1-1]!=array2[len2-1])

12. {

13. count++;

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",array_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,并将数列

该位置数值出列,然后从下一位置从新开始计数,直到数列所有数值出列为止。如果计数到达数列尾段,则返回数列首位置继续计数。请编程实现上述计数过程,同时输出数

值出列的顺序

比如:输入的随机数列为: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,计数过程完成。

输出数值出列顺序为: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}

[cpp]view plaincopyprint?

1.#include "iostream"

https://www.sodocs.net/doc/f09690621.html,ing namespace std;

3.struct Node

4.{

5.int data;

6. Node *next;

7.};

8.void array_iterate(int len, int input_array[], int m, int output_array[])

9.{

10. if (NULL==input_array||0==m||0==len)

11. return 0;

12. Node *node=new Node;

13. Node *head=new Node;

14. head->data=input_array[0];

15. Node *p=head;

16.int k=0;

17. for (int i=1;i

18. {

19. node=new Node;

20. node->data=input_array[i];

21. p->next=node;

22. p=node;

23. }

24. p->next=head;

25. p=head;

26. Node *q=new Node;

27.int count;

28. while (p->next!=p)

29. {

30. count=1;

31. while (count

32. {

33. q=p;

34. p=p->next;

35. count++;

36. }

37. m=p->data;

38. output_array[k++]=m;

39. q->next=p->next;

40. p=q->next;

41. }

42. output_array[k]=p->data;

43.}

44.void main()

45.{

46.int a[]={3,1,2,4};

47.int b[4];

48. memset(b,0,4*sizeof(int));

49. array_iterate(4, a, 7,b);

50. printf("%d,%d,%d,%d",b[0],b[1],b[2],b[3]);

51.}

8. 简单四则运算

问题描述:

输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值

注:1、表达式只含+, -, *, / 四则运算符,不含括号

2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况

3、要考虑加减乘除按通常四则运算规定的计算优先级

4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生

5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况

要求实现函数:

int calculate(int len,char *expStr)

【输入】int len: 字符串长度;

char *expStr: 表达式字符串;

【输出】无

【返回】计算结果

示例

1)输入:char *expStr = “1+4*5-8/3”

函数返回:19

2)输入:char *expStr = “8/3*3”

函数返回:6

[cpp]view plaincopyprint?

1.#include

2.#include

3.#include "string"

4.#include "assert.h"

5.struct stack{ //存放后续排列的表达式,模拟栈

6.char str[80];

7.int top;

8.};

9.struct sstack{ //存放计算表达式的值,模拟栈

10.int str[80];

11.int top;

12.};

13.int calculate(int len,char *expStr)

14.{

15.char *postexp=new char[len+1];

16. stack opstack;

17. sstack calstack;

18. calstack.top=-1;

19. opstack.top=-1;

20.int i=0;

21.int k=0;

22. while(expStr[i]!='\0')

23. {

24. if (expStr[i]>='0'&&expStr[i]<='9')

25. {

26. postexp[k++]=expStr[i];

27. }

28. else if (expStr[i]=='+'||expStr[i]=='-')

29. {

30. while (opstack.top>=0)

31. {

32. postexp[k++]=opstack.str[opstack.top--];

33. }

34. opstack.top++;

35. opstack.str[opstack.top]=expStr[i];

36.

37. }

38. else if (expStr[i]=='*'||expStr[i]=='/')

39. {

40. while (opstack.top>=0&&(opstack.str[opstack.top]=='*'||opstac

k.str[opstack.top]=='/'))

41. {

42. postexp[k++]=opstack.str[opstack.top--];

43. }

44. opstack.top++;

45. opstack.str[opstack.top]=expStr[i];

46. }

47.

48. i++;

49. }

50. while (opstack.top>=0)

51. {

52. postexp[k++]=opstack.str[opstack.top--];

53. }

54.int temp1=0;

55.int temp2=0;

56. for (i=0;i

57. {

58. if (postexp[i]>='0'&&postexp[i]<='9')

59. {

60. calstack.top++;

61. calstack.str[calstack.top]=postexp[i]-'0';

62. }

63. else if (postexp[i]=='+')

64. {

65. temp1=calstack.str[calstack.top--];

66. temp2=calstack.str[calstack.top];

67. calstack.str[calstack.top]=temp2+temp1;

68. }

69. else if (postexp[i]=='-')

70. {

71. temp1=calstack.str[calstack.top--];

72. temp2=calstack.str[calstack.top];

73. calstack.str[calstack.top]=temp2-temp1;

74. }

75. else if (postexp[i]=='*')

76. {

77. temp1=calstack.str[calstack.top--];

78. temp2=calstack.str[calstack.top];

79. calstack.str[calstack.top]=temp2*temp1;

80. }

81. else if (postexp[i]=='/')

82. {

83. temp1=calstack.str[calstack.top--];

84. temp2=calstack.str[calstack.top];

85. calstack.str[calstack.top]=temp2/temp1;

86. }

87. }

88. printf("%d",calstack.str[calstack.top]);

89. return calstack.str[calstack.top];

90.

91.}

92.int main()

93.{

94.char *expStr = "1+4*5-8/3";

95.int len=strlen(expStr);

96. calculate(len,expStr);

97.

98.}

9.

一副牌中发五张扑克牌给你:让你判断数字的组成:

有以下几种情况:

1:四条:即四张一样数值的牌(牌均不论花色)2:三条带一对

3:三条带两张不相同数值的牌

4:两对

5:顺子包括10,J,Q,K,A

6:什么都不是

7:只有一对

[cpp]view plaincopyprint?

1.void sort(int data[],int n)

2.{

3.int temp=0;

4. for(int i=0;i

5. {

6. for (int j=i+1;j

7. {

8. if (data[i]

9. {

10. temp=data[i];

11. data[i]=data[j];

12. data[j]=temp;

13. }

14. }

15. }

16.}

17.

18.void test(int a[],int len)

19.{

20.int *b=new int[len];

21.int count=0;

22.bool temp=false;

23. for (int i=0;i

24. {

25. b[i]=a[i];

26. }

27. sort(b,5);

28. for (i=0;i

29. {

30. if (b[i]==b[i+1])

31. count++;

32. }

33. switch (count)

34. {

35. case 0:

36. if (b[0]-b[4]==4||(b[0]-b[3]==3&&b[4]==1))

37. {

38. printf("顺子");

39. }

40. else

41. printf("什么都不是");

42. break;

43. case 1:

44. printf("只有一对");

45. break;

46. case 2:

47. for (i=0;i<3;i++)

48. {

49. if (b[i]==b[i+2])

50. {

51. printf("三条带两张不相同数值的牌");

52. temp=true;

53. break;

54. }

55. }

56. if (!temp)

57. {

58. printf("两对");

59. }

60. break;

61. case 3:

62. if (b[1]==b[3])

63. printf("四条:即四张一样数值的牌");

64. else

65. printf("三条带一对");

66.

67. break;

68.

69. }

70.}

71.

72.int main()

73.{

74.int a[5]={1,10,11,12,13};

75. test(a,5);

76.}

华为校园招聘上机题

目录 样题-初级题:从考试成绩中划出及格线 (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 B15 8.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。 (其中最大值与最小值可能有多个) Smple input:3,3,5,3,6,9,7,9 Sample outPut: 3 8.29从5个人中选取2个人作为礼仪 2、要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要

华为上机题汇总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 #include #include using namespace std; void stringchang(const char*,char*); int main() { char input[100],output[100]; cin.getline(input,100); stringchang(input,output); cout<

华为校园招聘电子科大上机题目

华为校园招聘电子科大上机题目 一.题目描述(60分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个 相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串 等长;【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输 出示例输入:“deefd” 输出:“def” 输入:“afafafaf” 输出:“af” 输入:“pppppppp” 输出:“p” main函数已经 隐藏,这里保留给用户的测试入口,在这里测试你的实现函数, 可以调用printf打印输出当前你可以使用其他方法测试,只要 保证最终程序能正确执行即可,该函数实现可以任意修改,但是 不要改变函数原型。一定要保证编译运行不受影响。 二.题目描述(40分):通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席 的重复字母进行压缩,并输出压缩后的字符串。

压缩规则: 1.仅压缩连续重复出现的字符。比如字符串“abcbc“由于无连续重复字符,压缩后的字符串还是“abcbc“。 2.压缩字段的格式为“字符重复的次数+字符“。例如:字符串“xxxyyyyyyz“压缩后就成为“3x6yz“。 要求实现函数: void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长;【注意】 只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例输入:“cccddecc” 输出:“3c2de2c” 输入:“adef” 输出:“adef” 输入:“pppppppp” 输出:“8p” 三.题目描述(50分):通过键盘输入100以内正整数的加.减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。 补充说明: 1.操作数为正整数,不需要考虑计算结果溢出的情况。 2.若输入算式格式错误,输出结果为“0”。

华为机试题目参考1

华为南京地区校园招聘软件类上机考试说明同学您好! 欢迎您应聘华为公司。软件研发类岗位(软件研发、云计算、操作系统开发、数据库开发)需要提前进行上机考试。现将上机考试做如下说明。 一、题目类别 本次上机考试题目设置C/C++、Java两个类别,根据个人情况选作一个类别。 二、题目数量 每个考生有三道题,第一二道题必答,第三道题为附加题可以选作,附加题做出,成绩会计入总分。 三、考试时间安排 1、简历筛选后,从9月17日开始分批安排上机考试 2、每个考生上机考试时间为2小时 一、上机考试步骤 1、打开IE输入服务器的IP地址或者直接打开收藏夹中已经收藏好的地址; 2、输入姓名和手机号,选择考试语言,提交登录: 3、登录后会进入试题说明页面,考试阅读完试题要求后,在页面下方点击下载试题框架并解压到D盘。如果是C/C++则用VC打开工程进行编程,只在func.cpp文件中进行函数编写,函数名已经定义好;如果是Java则用Eclips打开Java工程进行编程,只在SWTest.java文件中进行函数编写,函数名已经定义好。注意,考生不要进行任何IO输入输出的处理(题目说明中已经有写了),否则会得0分。 4、编完代码并编译和调试通过后,点击试题页面下方的按钮,在弹出的窗口中,如果是C/C++则将test.exe和func.cpp拷贝到一个名为test的目录中然后打包该目录上传,如果是Java则将工程仍然打包为SWTest.rar一次性上传(这个过程非常重要,否则会因无法自动判卷而得0分)。上传之后页面会显示“提交成功”,然后关闭所有IE窗口并清空客户机中您所创建的所有内容后结束考试离开考场。 二、如何阅卷 1、考生提交试卷后,我们在服务器后台执行系统阅卷程序,进行自动判卷,不进行人工阅卷。 2、系统设置了多个测试用例,根据用例执行的情况判断考生所上机考试的分数。 三、样题 编写一个函数,统计出具有n个元素的一维数组中大于等于所有元素平均值的元素的个数并返回。 预祝您上机考试顺利! 华为南京校园招聘组 2011年9月 2012华为校园招聘机试(成都) 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 #include

华为成都上机笔试题

2010年华为软件校园招聘编程测 类别:软件C语言 编程题(共2题,第一题40分,第二题60分,共100分。请上机编写程序,按题目要求提交文件。[详见考试说明] 本试题采用自动测试用例进行评分,测试用例不对考生公开,凡不满足提交要求导致不能运行或用例不通过,不予评分)。 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 2. 高精度整数加法(60分) 问题描述: 在计算机中,由于处理器位宽限制,只能处理有限精度的十进制整数加减法,比如在32位宽处理器计算机中,参与运算的操作数和结果必须在-231~231-1之间。如果需要进行更大范围的十进制整数加法,需要使用特殊的方式实现,比如使用字符串保存操作数和结果,采取逐位运算的方式。如下: 9876543210 + 1234567890 = ? 让字符串num1="9876543210",字符串num2="1234567890",结果保存在字符串result = "11111111100"。 -9876543210 + (-1234567890) = ? 让字符串num1="-9876543210",字符串num2="-1234567890",结果保存在字符串result = "-11111111100"。 要求编程实现上述高精度的十进制加法。

华为机试试题汇总解析

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;inum[j]) min_num=num[j]; } intsum=min_num+max_num; printf("数组中最大与最小值之和:%d\n",sum); return0; } 2.求两个长长整型的数据的和并输出,例如输入1233333333333333。。。3111111111111111111111111.。。。,则输出。。。。

#include #include #include main() { char*num1,*num2; //两个长长整型数据 char*sum; // inttemp; int len_num1,len_num2; // 两个长长整型数据的长度 intlen_max,len_min; num1=(char*)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_num1<=len_num2)?len_num1:len_num2; int len_max1=len_max; sum=(char*)malloc(sizeof(char)*len_max); memset(sum,0x00,len_max+1);//切忌初始化 for(;len_num1>0&&len_num2>0;len_num1--,len_num2--) { sum[len_max--]=((num1[len_num1-1]-'0')+(num2[len_num2-1]-'0')); } if(len_num1>0) { sum[len_max--]=num1[len_num1- 1 ]-'0'; len_num1--; } if(len_num2>0) {

2014华为上机题

样题-初级题:从考试成绩中划出及格线 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 B15 8.29去掉最大值、最小值之后剩下的个数1、输入一串数,以','分隔,输出所有数中去掉最大值、最小值之后剩下的个数。 (其中最大值与最小值可能有多个) Smple input:3,3,5,3,6,9,7,9 Sample outPut: 3

华为机试试题汇总

1 ?第一题的题目大概是输入整型数组求数组的最小数和最大数之和,例如输入1,2,3,4则输出为5,当输入只有一个数的时候,则最小数和最大数都是该数,例如只输入1,则输出为2;另外数组的长度不超过50 #i nclude mai n() { intn um[50]={0}; in ti, n; printf("请输入整型数组的长度(1~50):"); scan f("%d",&n); printf("请输入整型数组的元素:"); for(i=0;i nu m[j]) min_num=nu m[j]; } in tsum=min_nu m+max_ num; printf("数组中最大与最小值之和:%d\n",sum); return。; } 2. 求两个长长整型的数据的和并输出,例如输入123333333333333 3.OO

3111111111111111111111111。。O,则输出。OOO #i nclude #i ncludevstri ng.h> #i nclude mai n() { char* nu ml,* num2; //两个长长整型数据 char*sum; // in ttemp; int Ien_num1,len_num2; //两个长长整型数据的长度 in tle n_ max,le n_min; nu m1=(char*)malloc(sizeof(char)); nu m2=(char*)malloc(sizeof(char)); printf("输入两个长长整型数据:"); scan f("%s", nu m1); printf("输入两个长长整型数据:"); scan f("%s", nu m2); len_nu m仁strle n(nu m1); len_nu m2=strle n(nu m2); len_ max=(le n_nu m1>=le n_nu m2)?le n_nu m1:le n_nu m2; len_ mi n=(le n_nu m1<=le n_nu m2)?le n_nu m1:le n_nu m2; int len _max1=le n_max; sum=(char*)malloc(sizeof(char)*le n_max); memset(sum,OxOO,len_max+1);〃切忌初始化 for(;le n_nu m1> 0&&le n_nu m2>0;le n_nu m1--,le n_nu m2--) { sum[len_max--]=(( nu m1[len_num1-1]-'0')+( nu m2[len_num2-1]-'0')); } if(len_num1>0) { sum[le n_max--]=nu m1[le n_nu m1- 1 ]-'0'; len_nu m1--; } if(len_num2>0) {

华为面试的上机题(原创)

2011年华为软件校园招聘编程测验 类别:软件C/C++语言 编程题(共3题,第一题20分,第二题30分,第三题50分,共100分) 注意: 1、请上机编写程序,按题目要求提交文件。[详见考试说明,点击进入考试说明] 2、本试题采用自动执行测试用例进行评分,测试用例不对考生公开 3、评卷通过在给定用例输入下,严格按照试题要求比较考生实现函数的输出与预设 输出。两者相同则得分,不同则不得分。 4、评卷人保证测试用例输入参数的合法性,考生不用考虑输入参数非法或异常的情 况 5、评卷人保证测试用例输入在被测函数正常合法情况下使用不会导致程序错误 6、被要求实现的函数如果包含返回参数,该返回参数涉及的空间分配和释放均在函 数外完成,在被要求实现函数内部可以直接使用返回参数 7、如果考生函数异常导致程序崩溃或死循环,则自动评卷可能会被人为终止,剩余 用例不被执行,无法得分 8、基于上述阅卷规则,请考生严格按照题目要求功能实现程序,尽量保证实现函数 的稳健性,同时建议完成一道题并调试保证正确性后,再考虑并实现下一题目 1.评委打分(20分) ?问题描述: 在评委打分的比赛中,通常采取去掉一个最高分和最低分,再求平均分的做法, 主要是为了公平,公正和公开的原则,防止有人买通评委,有特别的高分出现, 另外,也可以防止因为评委个人原因,对选手有“低见”给特别低的分。去掉最高 分最低分能够求出较为准确的平均分。请编写程序实现上述计分过程 ?要求实现函数: int score_calc(int n, int score[]) 【输入】int n,评委人数n(n>=3) int score[],每个评委的打分(百分制) 【输出】无 【返回】选手最终得分(取整) 注: 取整和四舍五入不同,取整只保留数值的整数部分,小数部分丢弃。比如7.3和7.6,取整后都为7 ?示例 输入:int n = 5;int score[] = {75, 80, 75, 70, 80} 输出:无 返回:76

2014华为校园招聘笔试算法题汇总

华为2014笔试算法题汇总 1.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“deefd”输出:“def” 输入:“afafafaf”输出:“af” 输入:“pppppppp”输出:“p” main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。 一定要保证编译运行不受影响 [cpp] view plaincopy ////////////////////////////////////////////////////////////////////////// #include #include

using namespace std; bool g_flag[26]; void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr) { assert(pInputStr != NULL); int i = 0; if (pInputStr == NULL || lInputLen <= 1) { return; } const char *p = pInputStr; while(*p != '\0') { if (g_flag[(*p - 'a')]) { p++; }else{ pOutputStr[i++] = *p; g_flag[*p - 'a'] = 1; p++; } }

华为机试题及答案

华为机试题及答案 1、通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子串存储。 测试:输入:“abc def gh i d”输出:“abc,def,gh,i,d,” #include #include void DivideString(const char *pInputStr, long lInputLen, char *pOutputStr) { int i=0,j=0; int flag=0; while(pInputStr[i]==' ') { i++; } for(;i

continue; } if(flag==1) { flag=0; pOutputStr[j++]=','; } pOutputStr[j++]=pInputStr[i]; } pOutputStr[j++]=','; pOutputStr[j]='\0'; } int main() { char test[40]; char re[40]; gets(test); DivideString(test, strlen(test), re); printf("%s",re); return 0; } 2、将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循

环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。 测试:输入:char*input="abbbcd" 输出:char*output="bcdcde" #include #include void convert(char *input,char* output) { int i; for(i=0;i

2014华为机试笔试题目

2014华为机试笔试题目 1.输入摸一个数,然后将其倒过来相加,如果和不是回文串,那么将和再采取同样的操作,在判断得到的是否为回文串,这样往返7次,如果其中有一次是回文就直接打出来,若都没有,那么输出0; 也很简单!用库函数更简单,itoa这个!整数转成字符,然后判断回文! 2.关于匹配的字符串的个数的最大值,即目标字符串与多个字符串比配,找出匹配最多的那个字符串。 其实代码很简单,我当时用2个数组,下标即为字符,值为出

现次数,这样比较即可; 可是我输入字符的代码写错了比如要输入Li si;到一个字符数组里面,我写成了 char a[200]; cin a;//这里错了,应该写为cin.getline(a,200);因为cin输入遇到空格就认为输入结束,所以只有li,没有si 3.输入一个十进制的数,与一个n整数,求输出这个十进制数的n进制的数! 分析:哎,真倒霉,可以用atoi函数啊 itoa函数

#include cstdlib #include cstdio int main() { int num = 10; char str[100]; itoa(num, str, 2);

printf( %s\n , str); return 0; } itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数。在上例中,转换基数为10。10:十进制;2:二进制 于是想到了一个十进制转二进制的方法: #include cstdlib #include cstdio

int main() { int num = 10; char str[100]; int n = atoi(itoa(num, str, 2)); printf( %d\n ,n); return 0;

华为上机题目总结

试题一:输入字符串长度len1,字符串s1,字符串长度len2,字符串s2。从后向前比较,以最短字符串为标准,输出不同的元素的个数。 例如: 输入:s1="1,3,5" len1=3 s2="2,4,1,7,5" len2=5 输出:1 public class Test1 { public static void main(String[] args) { String str1 = "1,3,5"; String str2 = "2,1,6,5"; System.out.println(getDifferentNumber(str1, 3, str2, 4)); } public static int getDifferentNumber(String str1, int len1, String str2, int len2) { int count = 0; int len = 0; len = (len1

(完整版)华为试题答案

1)在计算机局域网中,常用通信设备有(abd ), A、集线器(HUB) B、交换机(Switch) C、调制解调器(Modem) D、路由器(Router) 2)线缆标准化工作主要由哪一个协会制定? (c ) A、OSI B、ITU-T C、EIA D、IEEE 3)802协议族是由下面的哪——个组织定义? (c ) A、OSI B、EIA C、IEEE D、ANSI )衡量网络性能的两个主要指标为(AC) A、带宽 B、可信度 C、延迟 D、距离 )局域网区别与其他网络主要体现在以下(ABCD)方面 A、网络所覆盖的物理范围 B、网络所使用的传输技术 C、网络的拓扑结构 D、带宽 )不会产生单点故障的是下列(ABC)拓扑结构。 A、总线型 B、环型 C、网状结构 D、星形 4)数据交换技术包括(abc ) A、电路交换(Circuit switching) B、报文交换(Message switching) C、分组交换(Packet switching) D、文件交换(File switching) 5)(b )拓扑结构会受到网络中信号反射的影响? A、网型 B、总线型 C、环型 D、星型 6)OSI参考模型按顺序有哪些?(c ) A、应用层、传输层、数据链路层、网络层、物理层 B、应用层、表示层、会话层、传输层、数据链路层、网络层、物理层 C、应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 D、应用层、表示层、传输层、网络层、数据链路层、物理层 7)在OSI七层模型中,网络层的功能有(b ) A、确保数据的传输正确无误 B、确定数据包如何转发与路由

华为上机题

华为实习上机题 C\C++ 2009-06-29 21:51:58 阅读157 评论0 字号:大中小订阅 input.txt文件中包含若干英语单词(由小写字母组成),读取全部单词,并将其按字典序输出到output.txt 文件中.重复的单词只允许输出一次.单词最大长度不超过63个字符. 1,程序编译后生成的可执行文件名称test.exe,命令行执行方式是test.exe input-file-name output-file-name,命令行的解析由程序框架处理,大家不要修改。 2,文件的读写由框架程序提供封装好的函数read_nextword()和write_word(),大家不需要去考虑读写文件的具体细节。注意仔细阅读在numlib.h里面两个函数的注释, 3,内存的申请、释放请使用封装好的函数pmalloc()和pfree(),大家不要直接使用系统的malloc()、free()和calloc()等,否则可能被判0分。注意仔细阅读在numlib.h里面两个函数的注释。 4,当你发现处理中出现任何异常或者错误时,请调用log_record()记录日志,参数是你自己定的一个字符串。但是大家千万不要调用exit()之类的函数直接结束程序运行,否则可能判0分。 5,main()函数已经编写完整,大家不用再修改。大家要做的就是实现data_process()函数。当然,你可以根据需要定制自己的数据结构、宏、其他处理函数等等。 l框架程序 include "numlib.h" /* 此函数由考试者填写,参数是输入、输出文件的指针 * 1、考试者不必处理文件指针的关闭,由主程序处理。 * 2、考试者不要直接调用exit()等退出程序 * 3、读文件请使用read_nextword(),写文件请使用write_word(),注意返回值 * 4、申请内存请调用pmalloc(),释放内存请调用pfree(),不要自己直接调用malloc/free * 5、当遇到任何异常时,请先调用log_record()记录异常,再作其他处理,不许调用EXIT() */ /* 考试者可以自行定义数据结构、变量和函数等,并实现以下data_process函数即可*/ typedef struct Node{ char a[64]; struct Node *next; }Node; void data_process(FILE *fpInput, FILE *fpOutput) { char word[64]; Node *head=NULL; Node *q=head; Node *t=NULL; Node *p; int i=0; while(SUCCESS_E==read_nextword(fpInput,word)) {

2012华为校园招聘上机笔试题+机试+自己做出来的

1. 从两个数组的最后一个元素比较两个数组中不同元素的个数,如有 array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]与array2[2]比较开始,到array1[2]与array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3。 函数原型为int compare_array( int len1, int array1[], int len2, int array2[] ); 其中,len1与len2分别为数组array1[]和array2[]的长度,函数返回值为两个数组不同元素的个数。 以下是上题的函数完整实现: //diff_num.cpp #include int compare_array(int len1,int array1[],int len2,int array2[]) { int i,t,small,num=0; //把两数组倒置 for(i=0;i

//输出倒置后的两数组 /* for(i=0;ilen2) small=len2; else small=len1; num=small; for(i=0;i

华为上机题

前段时间参加华为机试,机试通过的可以优先录取,优先选择岗位和工作地,关键是面的好,还可以谈更高的工资,最多在西安可以拿到18W。好处还是蛮多的,抱着试试看的态度就去了。疗效还不错。 提前在网上交了简历,周围同学只要报了软件研发类的相关岗位都收到短信通知,需要用到编程的同学基本上都受到短信了。一天三波,在西工大毅字楼三楼机房,南门进去直走左拐就到了,我是第二天早上的机试,前一天已经听机试过的同学考的内容涉及数组、链表、指针、字符串、循环、枚举、排序等吧,这个估计要看人品,平时出门多扶老奶奶过马路吧。其实考过后发现这个机试跟平时做项目不一样,项目可能更多的注重实现研究所需要的某个功能不会去注意这么多细节,但是机试考的更多的是基本功。下面重点跟大家分享下上机题吧,我只列举了我抽到的三个,其他同学抽到的跟这个大同小异吧。大家自己编写下,对即将开始的面试都会有帮助的。 考试内容:数组、链表、指针、字符串、循环、枚举、排序等(从考过的同学那儿总结的可能不全) 试题结构:考试总共三道题,说是难中易,初级题(60分)、中级题(100分)、高级题(160分),最难的接近一百行,说多不多,但自己敲出来还是费了点劲, 考试时间:两个小时。平时练得少可能稍微捉鸡点。 最简单的一个 描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下: (1) 及格线是10的倍数; (2) 保证至少有60%的学生及格; (3) 如果所有的学生都高于60分,则及格线为60分 输入:输入10个整数,取值0~100 输出:输出及格线,10的倍数 输入样例:61 51 49 3020 10 70 80 90 99 输出样例:50 自己编写代码简单如下: 1. #include 2. 3. 4. void bubbleSort(int arr[]) 5. { 6. int i = 0; 7. int j = 0; 8. int t = 0; 9. 10. for(i = 0;i < 10; i++) 11. { 12. for(j = 0; j < (9 - i); j++)

2014年华为电子科大校园招聘机试题

2014年华为电子科大校园招聘机试题 一、题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“deefd”输出:“def” 输入:“afafafaf”输出:“af” 输入:“pppppppp”输出:“p” main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响。 二、题目描述(40分): 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。 要求实现函数: void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr:输入字符串 lInputLen:输入字符串长度 【输出】 pOutputStr:输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“cccddecc”输出:“3c2de2c” 输入:“adef”输出:“adef” 输入:“pppppppp”输出:“8p” 三、题目描述(50分): 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。 输入字符串的格式为:“操作数1 运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

相关主题