华为机试及个人答案Word文档下载推荐.docx

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

华为机试及个人答案Word文档下载推荐.docx

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

华为机试及个人答案Word文档下载推荐.docx

输出:

“def”

“afafafaf” 

“af”

“pppppppp” 

“p”

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

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

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

我的答案:

#include<

stdio.h>

string.h>

stdlib.h>

#defineMAXSIZE256

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);

%s\n"

Out_str);

return0;

}

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

intj=0;

boolch[26]={0};

for(inti=0;

i<

lInputLen;

i++)

{

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

a'

])

{

ch[pInputStr[i]-'

]=true;

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

}

pOutputStr[j]='

\0'

;

}

二、题目描述(40分):

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

压缩规则:

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

比如字符串"

abcbc"

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

2、压缩字段的格式为"

字符重复的次数+字符"

例如:

字符串"

xxxyyyyyyz"

压缩后就成为"

3x6yz"

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

输入字符串长度

“cccddecc” 

“3c2de2c”

“adef” 

“adef”

“pppppppp”输出:

“8p”

charIn_str[MAXSIZE];

charOut_str[MAXSIZE];

pleaseinputastring\n"

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

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

inti,j,k=0;

intnum;

charbuffer[20];

for(i=0;

{

num=0;

for(j=i+1;

j<

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]='

三、题目描述(50分):

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

输入字符串的格式为:

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

补充说明:

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

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

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

lInputLen:

“4+7” 

“11”

“4-7” 

“-3”

“9++7” 

“0”注:

格式错误

charIn_str[MAXSIZE]="

1++3"

//printf("

//scanf("

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

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;

if(pInputStr[i]=='

'

num_space++;

if(2!

=num_space)//空格数错

pOutputStr[0]='

0'

pOutputStr[1]='

//return;

pInputStr[i]!

='

if(pInputStr[i]>

'

&

pInputStr[i]<

9'

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

else//有非法字符

pOutputStr[0]='

pOutputStr[1]='

return;

for(j=i+1;

pInputStr[j]!

j++);

if(1!

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

{

}

if('

+'

!

=pInputStr[i+1]&

-'

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

{

pOutputStr[0]='

pOutputStr[1]='

//return;

}

else

if('

==pInputStr[i+1])

add=true;

sub=true;

for(i=j+1;

{

if(pInputStr[i]>

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

else//有非法字符

{

pOutputStr[0]='

pOutputStr[1]='

//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