华为机试及个人答案.docx

上传人:b****1 文档编号:2061913 上传时间:2023-05-02 格式:DOCX 页数:9 大小:16.59KB
下载 相关 举报
华为机试及个人答案.docx_第1页
第1页 / 共9页
华为机试及个人答案.docx_第2页
第2页 / 共9页
华为机试及个人答案.docx_第3页
第3页 / 共9页
华为机试及个人答案.docx_第4页
第4页 / 共9页
华为机试及个人答案.docx_第5页
第5页 / 共9页
华为机试及个人答案.docx_第6页
第6页 / 共9页
华为机试及个人答案.docx_第7页
第7页 / 共9页
华为机试及个人答案.docx_第8页
第8页 / 共9页
华为机试及个人答案.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

华为机试及个人答案.docx

《华为机试及个人答案.docx》由会员分享,可在线阅读,更多相关《华为机试及个人答案.docx(9页珍藏版)》请在冰点文库上搜索。

华为机试及个人答案.docx

华为机试及个人答案

华为2014校园招聘的机试题目和2013年的完全一样。

一、题目描述(60分):

通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:

voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr);

【输入】pInputStr:

 输入字符串

          lInputLen:

 输入字符串长度        

【输出】pOutputStr:

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

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

示例

输入:

“deefd”       输出:

“def”

输入:

“afafafaf”    输出:

“af”

输入:

“pppppppp”    输出:

“p”

main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出

当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。

一定要保证编译运行不受影响。

我的答案:

#include

#include

#include

#defineMAXSIZE256

voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr);

intmain(void)

{

char*In_str=(char*)malloc(MAXSIZE);

char*Out_str=(char*)malloc(MAXSIZE);

printf("pleaseinputstring:

\n");

scanf("%s",In_str);

stringFilter(In_str,strlen(In_str),Out_str);

printf("%s\n",Out_str);

return0;

}

voidstringFilter(constchar*pInputStr,longlInputLen,char*pOutputStr)

{

intj=0;

boolch[26]={0};

for(inti=0;i

{

if(false==ch[pInputStr[i]-'a'])

{

ch[pInputStr[i]-'a']=true;

pOutputStr[j++]=pInputStr[i];

}

pOutputStr[j]='\0';

}

}

 

二、题目描述(40分):

通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

压缩规则:

1、仅压缩连续重复出现的字符。

比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。

2、压缩字段的格式为"字符重复的次数+字符"。

例如:

字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

要求实现函数:

voidstringZip(constchar*pInputStr,longlInputLen,char*pOutputStr);

【输入】pInputStr:

 输入字符串

           lInputLen:

 输入字符串长度

【输出】pOutputStr:

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

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

示例

输入:

“cccddecc”  输出:

“3c2de2c”

输入:

“adef”    输出:

“adef”

输入:

“pppppppp”输出:

“8p”

我的答案:

#include

#include

#include

#defineMAXSIZE256

voidstringZip(constchar*pInputStr,longlInputLen,char*pOutputStr);

 

intmain(void)

{

charIn_str[MAXSIZE];

charOut_str[MAXSIZE];

printf("pleaseinputastring\n");

scanf("%s",In_str);

stringZip(In_str,strlen(In_str),Out_str);

printf("%s",Out_str);

return0;

}

 

voidstringZip(constchar*pInputStr,longlInputLen,char*pOutputStr)

{

inti,j,k=0;

intnum;

charbuffer[20];

for(i=0;i

{

num=0;

for(j=i+1;j

{

//if(pInputStr[i]==pInputStr[j])

if(pInputStr[i]==pInputStr[j])

num++;

else

break;

}

if(num)

{

memset(buffer,0,sizeof(buffer));

itoa(num+1,buffer,10);//10进制转换字符串

strcpy(pOutputStr+k,buffer);//可能为3位也可能4位等

k+=strlen(buffer);

}

pOutputStr[k++]=pInputStr[i];

i=i+num+1;

}

pOutputStr[k]='\0';

}

三、题目描述(50分):

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

输入字符串的格式为:

“操作数1运算符操作数2”,“操作数”与“运算符”之间以一个空格隔开。

补充说明:

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

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

要求实现函数:

voidarithmetic(constchar*pInputStr,longlInputLen,char*pOutputStr);

【输入】pInputStr:

 输入字符串

            lInputLen:

 输入字符串长度        

【输出】pOutputStr:

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

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

示例

输入:

“4+7” 输出:

“11”

输入:

“4-7” 输出:

“-3”

输入:

“9++7” 输出:

“0”注:

格式错误

我的答案:

#include

#include

#include

#defineMAXSIZE256

voidarithmetic(constchar*pInputStr,longlInputLen,char*pOutputStr);

intmain(void)

{

charIn_str[MAXSIZE]="1++3";

charOut_str[MAXSIZE];

//printf("pleaseinputstring:

\n");

//scanf("%s",In_str);

arithmetic(In_str,strlen(In_str),Out_str);

printf("%s\n",Out_str);

return0;

}

voidarithmetic(constchar*pInputStr,longlInputLen,char*pOutputStr)

{

inti,j,num1=0,num2=0,num_space,resule;

booladd=false,sub=false;

charbuffer[MAXSIZE];

for(i=0,num_space=0;i

{

if(pInputStr[i]=='')

num_space++;

}

if(2!

=num_space)//空格数错

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

//return;

}

for(i=0;pInputStr[i]!

='';i++)

{

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

num1=num1*10+pInputStr[i]-'0';

else//有非法字符

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

return;

}

}

for(j=i+1;pInputStr[j]!

='';j++);

if(1!

=j-i-1)//运算符号数量非法

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

return;

}

else

{

if('+'!

=pInputStr[i+1]&&'-'!

=pInputStr[i+1])//运算符号非法

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

//return;

}

else

{

if('+'==pInputStr[i+1])

add=true;

if('-'==pInputStr[i+1])

sub=true;

for(i=j+1;i

{

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

num2=num2*10+pInputStr[i]-'0';

else//有非法字符

{

pOutputStr[0]='0';

pOutputStr[1]='\0';

//return;

}

}

if(add)

resule=num1+num2;

elseif(sub)

resule=num1-num2;

memset(buffer,0,sizeof(buffer));

itoa(resule,buffer,10);

strcpy(pOutputStr,buffer);

}

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2