华为认证 百分网手机站

华为认证考试题库(6)

时间:2017-05-12 11:17:29 华为认证 我要投稿

2016年华为认证考试题库

  printf("0");

  return 0;

  }

  23将 电话号码 one two 。。。nine zero

  翻译成1 2 。。9 0

  中间会有double

  例如输入:OneTwoThree

  输出:123

  输入:OneTwoDoubleTwo

  输出:1222

  输入:1Two2 输出:ERROR

  输入:DoubleDoubleTwo 输出:ERROR

  有空格,非法字符,两个Double相连,Double位于最后一个单词都错误

  #include

  #include

  #include

  int main()

  {

  chara[11][11]={"zero","one","two","three","four","five","six","seven","eight","nine","double"};

  char temp[11], c=' ';

  int i,j,f,d=0;

  while(c!='\n')

  {

  scanf("%s%c",&temp,&c);

  f=0;

  for(j=0;j<11;j++)

  {

  if(!strcmp(temp,a[j])&&j<10)

  {

  printf("%d",j);

  f=1;

  if(d==1)

  {

  printf("%d",j);

  d=0;

  }

  }

  elseif(!strcmp(temp,a[j])&&j==10)

  {

  d=1;

  f=1;

  }

  }

  if(f==0)

  break;

  }

  if(d==1||f==0)

  printf("error\n");

  printf("\n");

  return 0;

  }

  24.将整数倒序输出,剔除重复数据

  输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。

  #include

  #include

  #include

  #include

  int main()

  {

  char*input=(char*)malloc(sizeof(char));

  scanf("%s",input);

  inta[10]={0},i,flag=0,flag1=0;

  int len=strlen(input);

  if(input[0]=='-')

  {

  flag=1;

  for(i=0;i

  input[i]=input[i+1];

  }

  intlen1=strlen(input);

  int n[50],temp;

  int count=0;

  for(i=0;i

  {

  temp=input[i]-'0';

  if(a[temp]==0)

  {

  n[count++]=temp;

  a[temp]=1;

  }

  }

  n[count]='\0';

  if(flag==1)

  printf("-");

  for(intii=count-1;ii>=0;ii--)

  {

  if(n[ii]!=0||flag1!=0)

  {

  printf("%d",n[ii]);

  flag1=1;

  }

  }

  printf("\n");

  return 0;

  }

  25.编程的时候,if条件里面的“(”、“)”括号经常出现不匹配的情况导致编译不过,请编写程序检测输入一行if语句中的圆括号是否匹配正确。同时输出语句中出现的左括号和右括号数量,如if((a==1)&&(b==1))是正确的,而if((a==1))&&(b==1))是错误的。注意if语句的最外面至少有一对括号。提示:用堆栈来做。

  输入:if((a==1)&&(b==1))

  输出:RIGTH 3 3

  输入:if((a==1))&&(b==1))

  输出:WRONG 3 4

  #include

  #include

  int main()

  {

  char s[800]={'\0'};

  scanf("%s",&s);

  // char s[]="if(())";

  int len=strlen(s);

  int i,left=0,right=0;

  int a[50],k=0,flag=1;

  for(i=0;i

  {

  if(s[i]=='(')

  {

  left++;

  a[k]=1;

  k++;

  }

  elseif(s[i]==')')

  {

  right++;

  if(a[k-1]==1&&k>0)

  {

  a[k-1]=0;

  k--;

  }

  else

  flag=0;

  }

  if((i==2&&s[i]!='(')||(i==len-1&&s[i]!=')'))

  flag=0;

  }

  if(a[0]==0&&flag!=0)

  printf("RIGHT");

  else

  printf("WRONG");

  printf("%d%d\n",left,right);

  return 0;

  }

  约瑟夫问题

  输入一个由随机数组成的数列(数列中每个数均是大于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}

  解题思路:

  每次出列一个数值,需要对m、input_array、output_array、输出位置outPos、起始位置startPos进行更新;

  对于输出位置outPos的计算是关键!通过分析可知,outPos=(startPos+m-1)%num

  代码实现:

  view plaincopy to clipboardprint?

  #include

  voidprint_array(int len, int array[])

  {

  for(int i=0; i

  printf("%d ", array[i]);

  printf("\n");

  }

  //input_array:a[0]...a[len-1]

  voidarray_iterate(int len, int input_array[], int m, int output_array[])

  {

  int startPos=0;

  int outPos;

  int nIter=len-1;

  int num=len;

  for(; nIter>=0; nIter--)

  {

  outPos=(m+startPos-1)%num;

  m=input_array[outPos];

  startPos=outPos;

  printf("outPos is %d, new m is%d\n", outPos, m);

  output_array[len-nIter-1]=input_array[outPos];

  for(int i=outPos; i

  input_array[i]=input_array[i+1];

  num--;

  print_array(num, input_array);

  }

  }

  voidmain()

  {

  int input_array[]={3,1,2,4};

  int output_array[4]={0};

  array_iterate(4, input_array, 7,output_array);

  print_array(4, output_array);

  }

  27.统计数字出现的次数,最大次数的统计出来

  举例:

  输入:323324423343

  输出:3,6

  #include

  #include

  #include

  int main()

  {

  char*num="323324423343";

  inta[10]={0};

  intlen=strlen(num);

  inti,j,temp,count=0,maxnum=0;

  printf("%d\n",len);

  for(i=0;i

  {

  temp=num[i]-'0';

  a[temp]++;

  }

  inttemp1=a[0];

  for(j=0;j<10;j++)

  {

  if(a[j]!=0)

  {

  count++;

  temp1=(temp1>a[j])?temp1:a[j];

  printf("%d%d\n",a[j],j);

  }

  }

  printf("数字出现次数为:%d\n",count);

  printf("最大次数为:%d\n",temp1);

  return0;

  }

  28. .字符串首字母转换成大写

  举例:

  输入:this is a book

  返回:This Is A Book

  #include

  #include

  #include

  int main()

  {

  charinput[]="this is a book";

  charoutput[256]={'\0'};

  int i,len;

  len=strlen(input);

  printf("变换前的字符串为:%s\n",input);

  for(i=0;i

  {

  if(input[0]!='')

  input[0]-=32;

  if(input[i]=='')

  input[i+1]-=32;

  output[i]=input[i];

  }

  printf("变换后的字符串为:%s\n",output);

  }

  29. 子串分离

  题目描述:

  通过键盘输入任意一个字符串序列,字符串可能包含多个子串,子串以空格分隔。请编写一

  个程序,自动分离出各个子串,并使用’,’将其分隔,并且在最后也补充一个’,’并将子

  串存储。

  如果输入“abc def gh i d”,结果将是abc,def,gh,i,d,

  要求实现函数:

  voidDivideString(const char *pInputStr, long lInputLen, char *pOutputStr);

  【输入】 pInputStr: 输入字符串

  lInputLen: 输入字符串长度

  【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

  #include

  #include

  #include

  #include

更多相关文章推荐阅读:

1.2016年华为认证考试题库

2.2016年华为hcie认证考试题库

3.2016年华为认证认证试题(笔试)

4.2016年华为认证考试题及答案

5.2016年华为上机考试题

6.2016年华为HCDA认证考试题库

7.2016年华为笔试题及及答案

8.2016年华为笔试面试题及答案

9.2016年华为HCDA认证考试笔试题及答案