华为上机题汇总111题

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

注:1.本文代码仅保证在visual studio 2005上运行通过!

2.高亮的题目为华为机试第三题左右难度。

3.本文的字符串基本运用C++里的string类,很少使用常规字符数组形式。

4.freopen()为输入重定向,方便测试,具体用法问度娘。

1.给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,

如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数

void Stringchang(const char*inpu,char*output)

其中input是输入字符串,output是输出字符串

#include

#include

#include

using namespace std;

void stringchang(const char*,char*);

int main()

{

char input[100],output[100];

cin.getline(input,100);

stringchang(input,output);

cout<

return 0;

}

void stringchang(const char* input,char* output)

{

int m=strlen(input),n=0;

for(int i=0;i

{

if(isalpha(input[i]))

{

if(input[i]=='z')

output[n++]='a';

else if(input[i]=='Z')

output[n++]='A';

else

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

}

else

output[n++]=input[i];

}

output[n]='\0';

}

2.求一个整型数字中有没有相同的部分,例如12386123这个整型数字中相同的部分是123,相同的

部分至少应该是2位数,如果有相同部分返回1,如果没有则返回0。方法是先将整型数字转换到数组中,再判断。

函数为int same(int num)

其中num是输入的整型数字

写的很差,懒得改了,不要看吧!#include

#include

using namespace std;

int same(int);

int main()

{

int num;

cin>>num;

int m=same(num);

cout<

return 0;

}

int same(int num)

{

int n[100],n1=0,c=0,i1,j1;

while(num>0)

{

n[n1++]=num%10;

num/=10;

}

for(int i=0;i

{

i1=i;

c=0;

j1=0;

for(int j=0;j

{

if(n[i1]==n[j]&&i1!=j)

{

c++;

j1++

if(c>=2)

return 1;

i1++;

}

else

{

c=0;

j=j-j1;

j1=0;

i1=i;

}

}

}

return 0;

}

分别将字符串中的字符转换成整型数字,进行计算后,再转换成字符类型存储起来函数为void mul(char *input1,int n,char *input2, int m,char *output)

其中input1和input2是输入,n是input1的长度,n2是input2的长度。Output是输出#include

#include

#include

using namespace std;

void mul(char*,int,char*,int,char*);

int main()

{

char input1[100],input2[100],output[100];

cin>>input1>>input2;

int n=strlen(input1);

int m=strlen(input2);

mul(input1,n,input2,m,output);

cout<

return 0;

}

void mul(char* input1,int n,char* input2,int m,char* output)

{

int i1=0,i2=0,p1=n,p2=m,p3=0;

for(int i=0;i

{

i1+=(input1[i]-'0')*pow(10.0,--p1);

}

for(int i=0;i

{

i2+=(input2[i]-'0')*pow(10.0,--p2);

}

long long ou=i1*i2;

if(ou==0)

{

output[0]='0';

output[1]='\0';

return;

}

char temp;

while(ou>0)

{

output[p3++]=ou%10+'0';

ou/=10;

}

output[p3]='\0';

for(int i=0;i

{

temp=output[i];

output[i]=output[p3-1-i];

output[p3-1-i]=temp;

相关文档
最新文档