华为认证 百分网手机站

华为认证考试题及答案

时间:2018-03-17 09:21:17 华为认证 我要投稿

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

  华为认证考试由Prometric考试服务公司代理。华为认证不同级别与方向的认证考试项目具有不同的考试要求与流程。要获得HCNA、HCNP、HCIE等华为认证,需参加并通过一门或多门与认证项目对应的考试。本文为大家推荐的是华为认证的上机考试题及答案,希望能给予大家帮助!

  1、通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。

  输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。

  补充说明:

  1. 操作数为正整数,不需要考虑计算结果溢出的情况。

  2. 若输入算式格式错误,输出结果为“0”。

  要求实现函数:

  void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);

  【输入】 pInputStr: 输入字符串

  lInputLen: 输入字符串长度

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

  【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

  示例

  输入:“4 + 7” 输出:“11”

  输入:“4 - 7” 输出:“-3”

  输入:“9 ++ 7” 输出:“0” 注:格式错误

  复制代码

  1 void arithmetic(const char *pInputStr,long lInputLen,char *pOutputStr)

  2 {

  3 assert(pInputStr!=NULL && pOutputStr!=NULL && lInputLen>0);

  4 int iOperand1=0;

  5 int iOperand2=0;

  6 char cSymbol;

  7 long i;

  8 for (i=0;;i++)

  9 {

  10 if (pInputStr[i]>='0' && pInputStr[i]<='9')

  11 {

  12 iOperand1=iOperand1*10+(pInputStr[i]-'0');

  13 }

  14 else if (pInputStr[i]==' ')

  15 {

  16 break;

  17 }

  18 else

  19 {

  20 return;

  21 }

  22 }

  23

  24 for (++i;;i++)

  25 {

  26 if (pInputStr[i]=='+' || pInputStr[i]=='-')

  27 {

  28 cSymbol=pInputStr[i];

  29 }

  30 else if (pInputStr[i]==' ')

  31 {

  32 break;

  33 }

  34 else

  35 {

  36 return;

  37 }

  38 }

  39

  40 for (++i;i

  41 {

  42 if (pInputStr[i]>='0' && pInputStr[i]<='9')

  43 {

  44 iOperand2=iOperand2*10+(pInputStr[i]-'0');

  45 }

  46 else

  47 {

  48 break;

  49 }

  50 }

  51 int iTemp;

  52 switch(cSymbol)

  53 {

  54 case '+':

  55 iTemp=iOperand1+iOperand2;

  56 break;

  57 case '-':

  58 iTemp=iOperand1-iOperand2;

  59 break;

  60 default:

  61 break;

  62 }

  63

  64 int k=0;

  65 if (iTemp<0)

  66 {

  67 iTemp=-iTemp;

  68 pOutputStr[0]='-';

  69 k++;

  70 }

  71

  72 char cTemp[10];

  73 itoa(iTemp,cTemp,10);

  74 int j=0;

  75 while(cTemp[j])

  76 {

  77 pOutputStr[k++]=cTemp[j++];

  78 }

  79

  80 pOutputStr[k]='\0';

  81

  82 }

  复制代码

  2、手机号码合法性判断(20分)

  问题描述:

  我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:

  1、 长度13位;

  2、 以86的国家码打头;

  3、 手机号码的每一位都是数字。

  请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求:

  1) 如果手机号码合法,返回0;

  2) 如果手机号码长度不合法,返回1

  3) 如果手机号码中包含非数字的字符,返回2;

  4) 如果手机号码不是以86打头的,返回3;

  【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

  要求实现函数:

  int verifyMsisdn(char* inMsisdn)

  【输入】 char* inMsisdn,表示输入的手机号码字符串。

  【输出】 无

  【返回】 判断的结果,类型为int。

  示例

  输入: inMsisdn = “869123456789“

  输出: 无

  返回: 1

  输入: inMsisdn = “88139123456789“

  输出: 无

  返回: 3

  输入: inMsisdn = “86139123456789“

  输出: 无

  返回: 0

  复制代码

  1 int verifyMsisdn(char *inMsisdn)

  2 {

  3 assert(inMsisdn!=NULL);

  4

  5 int iLen=strlen(inMsisdn);

  6 if (iLen!=13)

  7 {

  8 return 1;

  9 }

  10

  11 for (int i=0;i

  12 {

  13 if (inMsisdn[i]<'0' || inMsisdn[i]>'9')

  14 {

  15 return 2;

  16 }

  17 }

  18

  19 if (inMsisdn[0]!='8' || inMsisdn[1]!='6')

  20 {

  21 return 3;

  22 }

  23

  24 return 0;

  25

  26 }

  复制代码

  3、将一个字符串的元音字母复制到另一个字符串,并排序(30分)

  问题描述:

  有一字符串,里面可能包含英文字母(大写、小写)、数字、特殊字符,现在需要实现一函数,将此字符串中的元音字母挑选出来,存入另一个字符串中,并对字符串中的字母进行从小到大的排序(小写的元音字母在前,大写的元音字母在后,依次有序)。

  说明:

  1、 元音字母是a,e,i,o,u,A,E,I,O,U。

  2、 筛选出来的元音字母,不需要剔重(chong);

  最终输出的'字符串,小写元音字母排在前面,大写元音字母排在后面,依次有序。

  要求实现函数:

  void sortVowel (char* input, char* output);

  【输入】 char* input,表示输入的字符串

  【输出】 char* output,排好序之后的元音字符串。

  【返回】 无

  示例

  输入:char *input = “Abort!May Be Some Errors In Out System. “

  输出:char *output =“aeeeooouAEIO “

  复制代码

  1 void sortVowel(char *pInput,char *pOutput)

  2 {

  3 assert(pInput!=NULL && pOutput!=NULL);

  4

  5 int iLen=strlen(pInput);

  6 char *pSmall=new char[iLen+1];

  7 char *pLarge=new char[iLen+1];

  8

  9 int iSmallCount=0;

  10 int iLargeCount=0;

  11

  12 for (int i=0;i

  13 {

  14 if (pInput[i]=='a' || pInput[i]=='e' || pInput[i]=='i' || pInput[i]=='o' || pInput[i]=='u')

  15 {

  16 pSmall[iSmallCount++]=pInput[i];

  17

  18 }

  19 else if (pInput[i]=='A' || pInput[i]=='E' || pInput[i]=='I' || pInput[i]=='O' || pInput[i]=='U')

  20 {

  21 pLarge[iLargeCount++]=pInput[i];

  22 }

  23 }

  24

  25 sort(pSmall,pSmall+iSmallCount);

  26 sort(pLarge,pLarge+iLargeCount);

  27

  28 int j,k=0;

  29 for (j=0;j

  30 {

  31 pOutput[k++]=pSmall[j];

  32 }

  33 for (j=0;j

  34 {

  35 pOutput[k++]=pLarge[j];

  36 }

  37

  38 pOutput[k]='\0';

  39

  40 delete []pSmall;

  41 delete []pLarge;

  42 }

  复制代码

  4、我国公民的身份证号码特点如下:

  1、 长度为18位;

  2、 第1~17位只能为数字;

  3、 第18位可以是数字或者小写英文字母x。

  4、 身份证号码的第7~14位表示持有人生日的年、月、日信息。

  例如:511002198808080111或51100219880808011x。

  请实现身份证号码合法性判断的函数。除满足以上要求外,需要对持有人生日的年、月、日信息进行校验。年份大于等于1900年,小于等于2100年。 需要考虑闰年、大小月的情况。所谓闰年,能被4整除且不能被100整除 或 能被400整除的年份,闰年的2月份为29天,非闰年的2月份为28天。其他情况的合法性校验,考生不用考虑。

  函数返回值:

  1) 如果身份证号合法,返回0;

  2) 如果身份证号长度不合法,返回1;

  3) 如果身份证号第1~17位含有非数字的字符,返回2;

  4) 如果身份证号第18位既不是数字也不是英文小写字母x,返回3;

  5) 如果身份证号的年信息非法,返回4;

  6) 如果身份证号的月信息非法,返回5;

  7) 如果身份证号的日信息非法,返回6(请注意闰年的情况);

  【注】除成功的情况外,以上其他合法性判断的优先级依次降低。也就是说,如果判断出长度不合法,直接返回1即可,不需要再做其他合法性判断。

  要求实现函数:

  int verifyIDCard(char* input)

  【输入】 char* input,表示输入的身份证号码字符串

  【输出】 无

  【返回】 判断的结果,类型为int

  示例

  1) 输入:”511002111222”,函数返回值:1;

  2) 输入:”511002abc123456789”,函数返回值:2;

  3) 输入:”51100219880808123a”,函数返回值:3;

  4) 输入:”511002188808081234”,函数返回值:4;