`
java-mans
  • 浏览: 11454535 次
文章分类
社区版块
存档分类
最新评论

华为机试题(3)

 
阅读更多

1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成bz换成aZ换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数

void Stringchangconst char*inpu,char*output

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

  1. #include<stdio.h>
  2. #include<string.h>
  3. voidStringchange(constchar*input,char*output)
  4. {
  5. while(*input)
  6. {
  7. if(*input>='a'&&*input<='y'||*input>='A'&&*input<='Y')
  8. {
  9. *output=*input+1;
  10. output++;
  11. input++;
  12. }
  13. elseif(*input=='z'||*input=='Z')
  14. {
  15. *output=*input-25;
  16. output++;
  17. input++;
  18. }
  19. else
  20. {
  21. *output=*input;
  22. output++;
  23. input++;
  24. }
  25. }
  26. *output='\0';
  27. }
  28. intmain(/*intargc,char**argv*/)
  29. {
  30. constcharinput[20]="zzzzZZZZabcABC";
  31. charoutput[20];
  32. Stringchange(input,output);
  33. printf("outputis%s",output);
  34. system("pause");
  35. return0;
  36. }

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

函数为 int sameint num

其中num是输入的整型数字

  1. #include<stdio.h>
  2. #include<string.h>
  3. intsame(intnum)
  4. {
  5. inttmp[20];
  6. intm=0;
  7. inti,j;
  8. while(num>0)
  9. {
  10. tmp[m]=num%10;
  11. num/=10;
  12. m++;
  13. }
  14. for(i=0;i<m-3;i++)
  15. for(j=i+2;j<m-1;j++)
  16. if(tmp[i]==tmp[j]&&tmp[i+1]==tmp[j+1])
  17. return1;
  18. return0;
  19. }
  20. intmain(/*intargc,char**argv*/)
  21. {
  22. intret;
  23. ret=same(173654123);
  24. printf("retis%d",ret);
  25. system("pause");
  26. return0;
  27. }



1.从两个数组的最后一个元素比较两个数组中不同元素的个数,如有array1[5]={77,21,1,3,5}, array2[3]={1,3,5},从array1[4]array2[2]比较开始,到array1[2]array[0]比较结束。这样得出它们不同的元素个数为0,若array1[6]={77,21,1,3,5,7},那么他们不同的元素为3

  函数原型为 int compare_array( int len1, int array1[], int len2, int array2[] );

  其中,len1len2分别为数组array1[]array2[]的长度,函数返回值为两个数组不同元素的个数。

  1. #include<stdio.h>
  2. #include<string.h>
  3. intcompare_array(intlen1,intarray1[],intlen2,intarray2[])
  4. {
  5. inti=0;
  6. intcnt=0;
  7. printf("helloincompare_array\n");
  8. while(len1-1-i>=0&&len2-1-i>=0)
  9. {
  10. if(array1[len1-1-i]!=array2[len2-1-i])
  11. cnt++;
  12. i++;
  13. }
  14. returncnt;
  15. }
  16. intmain(/*intargc,char**argv*/)
  17. {
  18. intret;
  19. intarray1[5]={77,21,1,3,5};
  20. intarray2[4]={1,3,5,7};
  21. printf("hello\n");
  22. ret=compare_array(5,array1,4,array2);
  23. printf("retis%d",ret);
  24. system("pause");
  25. return0;
  26. }


判断一个数是不是回文数:

  1. #include<stdio.h>
  2. #include<string.h>
  3. inthuiwen(longnum)
  4. {
  5. inttmp[50];
  6. intm=0;
  7. intbegin;
  8. intend;
  9. while(num>0)
  10. {
  11. tmp[m]=num%10;
  12. num/=10;
  13. m++;
  14. }
  15. begin=0;
  16. end=m-1;
  17. while(begin<end)
  18. {
  19. if(tmp[begin++]!=tmp[end--])
  20. return0;
  21. }
  22. return1;
  23. }
  24. intmain(/*intargc,char**argv*/)
  25. {
  26. intret;
  27. longnum=1234554321;
  28. ret=huiwen(num);
  29. if(ret==0)
  30. printf("nothuiwen\n");
  31. elseif(ret==1)
  32. printf("huiwen\n");
  33. system("pause");
  34. return0;
  35. }


删掉重复的字符,只保留一个。

  1. #include<stdio.h>
  2. #include<string.h>
  3. voidchangestr(constchar*pIn,char*pOut)
  4. {
  5. char*r=pIn;
  6. char*s=pIn;
  7. *pOut++=*pIn;
  8. while(*++pIn!='\0')
  9. {
  10. if(*pIn!=*r++)
  11. *pOut++=*pIn;
  12. }
  13. *pOut='\0';
  14. }
  15. intmain(/*intargc,char**argv*/)
  16. {
  17. charpIn[20]="goorooogllle";
  18. charpOut[20];
  19. changestr(pIn,pOut);
  20. printf("%s",pOut);
  21. system("pause");
  22. return0;
  23. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics