华为认证 百分网手机站

华为认证考试题库(5)

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

2016年华为认证考试题库

  //#include "stdafx.h"

  #include "stdio.h"

  #include "stdlib.h"

  #include

  typedef struct Node{

  intvalue;

  Node*next;

  }LinkList;

  void Converse(LinkList* pPre,LinkList*pCur)

  { //链表逆转

  LinkList*p = NULL;

  LinkList*pNext = NULL;

  p= pPre->next;

  LinkList*p1 = NULL;

  if(pCur!=NULL)

  pNext= pCur->next;

  while(p!=pNext)

  {

  p1= p->next;

  p->next= pPre;

  pPre= p;

  p= p1;

  }

  }

  int main()

  {

  intcount = 0, k,i=0,j=0,flag = 1,length=0,groups = 0;

  scanf("%d",&k);

  LinkList*pPre = (LinkList*)malloc(sizeof(LinkList));

  LinkList*pCur = (LinkList*)malloc(sizeof(LinkList));

  LinkList*pNext = (LinkList*)malloc(sizeof(LinkList));

  LinkList*head = NULL;

  LinkList* pTempTail = NULL; //指向逆转之后的尾部

  LinkList*pTempHead = NULL;

  pCur->value= 1;

  pPre= pCur; //创建初始链表

  for(i=2;i<=6;i++){

  LinkList*node = (LinkList*)malloc(sizeof(LinkList));

  node->value= i;

  pCur->next= node;

  pCur= node;

  }

  pCur->next= NULL;//最后一定要置NULL,c++中用new则无须置NULL

  pCur= pPre;

  while(pCur!=NULL)

  {

  length++;

  pCur= pCur->next;

  }

  i=0;

  groups= length/k; //分成K段

  pCur= pPre;

  while(i<=groups)

  {

  count= 0;

  while(count

  {

  pCur= pCur->next;

  count++;

  }

  if(i

  {

  pNext= pCur->next;

  pTempHead= pCur; /*没做翻转之前的头部,变成了翻转之后的尾部*/

  if(flag== 0)

  {

  pTempTail->next= pTempHead;

  }

  pTempTail= pPre;

  Converse(pPre,pCur);

  //pTempTail= pPre;

  if(flag==1)

  {

  head= pCur;

  flag= 0;

  }

  pCur= pNext;

  }

  else

  {

  pTempTail->next= pNext;

  }

  pPre= pCur;

  i++;

  }

  pCur= head;

  while(j

  j++;

  printf("%d",pCur->value);

  pCur= pCur->next;

  }

  printf("\n");

  // system("pause");

  return0;

  }

  19. 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g

  #include

  #include

  #include

  typedef struct node{

  charval;

  structnode* pNext;

  }Node;

  Node* CreateList(int n);

  void Traverslist(Node* pHead);

  Node* TransNeighbor(Node* pHead);

  int main(){

  Node*pHead = CreateList(7);

  printf("beforetransform\n");

  Traverslist(pHead);

  TransNeighbor(pHead);

  printf("\naftertransform\n");

  Traverslist(pHead);

  getchar();

  return1;

  }

  //创建新链表

  Node* CreateList(int n){

  Node*pHead = (Node*)malloc(sizeof(Node));

  Node*pTail = pHead;

  pTail->pNext=NULL;

  inti;

  for(i=0;i < n; i++){

  Node* pNew = (Node*)malloc(sizeof(Node));

  pNew->val = 'a'+i;

  pTail->pNext = pNew;

  pNew->pNext = NULL;

  pTail = pNew;

  }

  returnpHead;

  }

  void Traverslist(Node* pHead){

  Node*p = pHead->pNext;

  intisFirst = 0;

  while(p!=NULL)

  {

  if(isFirst==0)

  {

  printf("%c",p->val);

  isFirst=1;

  }else{

  printf("->%c",p->val);

  }

  p= p->pNext;

  }

  return;

  }

  Node* TransNeighbor(Node* pHead){

  Node*p = pHead->pNext;

  while(p->pNext!=NULL &&p->pNext->pNext!=NULL)

  {

  charvalue = p->val;

  p->val=p->pNext->val;

  p->pNext->val=value;

  p=p->pNext->pNext;

  }

  returnpHead;

  }

  20. 输入一串字符串,其中有普通的字符与括号组成(包括‘(’、‘)’、‘[’,']'),要求验证括号是否匹配,如果匹配则输出0、否则输出1.

  #include

  #include

  //#define MAX 100

  int main()

  {

  chara[100],c[]="(((1+2))";

  int i=0,j=0;;

  int flag=0;

  while(c[i]!=NULL&&flag==0)

  {

  switch(c[i])

  {

  case('('):

  case('['):

  a[j++]=c[i];break;

  case(')'):

  if(a[j-1]=='(')

  {

  a[j-1]='\0';

  j--;

  }

  else

  flag=1;

  break;

  case(']'):

  if(a[j-1]=='[')

  {

  a[j-1]='\0';

  j--;

  }

  else

  flag=1;

  break;

  }

  i++;

  }

  if(j!=0) flag=1;

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

  return 0;

  }

  方法2:#include

  #include

  #include // !!!分配内存头文件

  #define m 20

  typedef char ElemType;

  typedef struct

  {

  ElemType stack[m];

  int top;

  }stacknode;

  stacknode *sp;

  Init(stacknode *st)

  {

  st->top=0;

  return 0;

  }

  void Push(stacknode *st,ElemType x)

  {

  if(st->top==m)

  printf("The stack isoverflow!\n");

  else

  {

  st->top=st->top+1;

  st->stack[st->top]=x;

  }

  }

  void Pop(stacknode *st)

  {

  st->top=st->top-1;

  }

  main()

  {

  char s[m]="(()";

  int i;

  printf("Creat astack!\n");

  sp = (stacknode*)malloc(sizeof(stacknode)); // !!!添加的语句

  Init(sp);

  printf("Input aexpression:\n");

  // gets(s);

  for(i=0;i

  {

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

  Push(sp,s[i]);

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

  Pop(sp);

  }

  if(sp->top==0)

  printf("左右括号是匹配的!\n");

  else

  printf("左右括号是不匹配的!\n");

  return 0;

  }

  21.将第一行中含有第二行中“23”的数输出并排序

  2.输入一行数字:123 423 5645 875 186523

  在输入第二行:23

  将第一行中含有第二行中“23”的数输出并排序

  结果即:123 423 186523

  #include

  #define M 20

  int main()

  {

  int a[M];

  int i,j,s,temp;

  int sort[M],t=0;

  char c=' ';

  i=0;

  while(c!='\n')

  {

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

  a[i++]=temp;

  }

  scanf("%d",&s);

  for(j=0;j

  {

  temp=a[j];

  if(temp%100==s)

  {

  sort[t++]=a[j];

  }

  else

  temp/=10;

  }

  for(i=0;i

  for(j=0;j

  {

  if(sort[j]>sort[j+1])

  {

  temp=sort[j+1];

  sort[j+1]=sort[j];

  sort[j]=temp;

  }

  }

  for(i=0;i

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

  printf("\n");

  return 0;

  }

  22输入m个字符串 和一个整数n, 把字符串M化成以N为单位的段,不足的位数用0补齐。

  如 n=8 m=9 ,

  123456789划分为:12345678

  90000000

  123化为 :12300000

  #include

  #include

  int main()

  {

  char c[200]={'\0'};

  scanf("%s",&c);

  int n,i,j;

  int len=strlen(c);

  scanf("%d",&n);

  for(i=1;i<=len;i++)

  {

  j=i%n;

  printf("%c",c[i-1]);

  if(j==0)

  printf("\n");

  }

  if(j!=0)

  for(i=j+1;i<=n;i++)

更多相关文章推荐阅读:

1.2016年华为认证考试题库

2.2016年华为hcie认证考试题库

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

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

5.2016年华为上机考试题

6.2016年华为HCDA认证考试题库

7.2016年华为笔试题及及答案

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

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