设为首页 收藏本站
查看: 1141|回复: 0

[经验分享] 华为机试题(3)

[复制链接]

尚未签到

发表于 2016-6-6 09:02:45 | 显示全部楼层 |阅读模式
  1. 给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成bz换成aZ换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数
  void Stringchangconst char*inpu,char*output
  其中input是输入字符串,output是输出字符串

[cpp] view plaincopyprint?





  • #include<stdio.h>


  • #include<string.h>



  • voidStringchange(constchar*input,char*output)
  • {
  • while(*input)
  • {
  • if(*input>='a'&&*input<='y'||*input>='A'&&*input<='Y')
  • {
  • *output=*input+1;
  • output++;
  • input++;
  • }
  • elseif(*input=='z'||*input=='Z')
  • {
  • *output=*input-25;
  • output++;
  • input++;
  • }
  • else
  • {
  • *output=*input;
  • output++;
  • input++;
  • }

  • }
  • *output='\0';

  • }

  • intmain(/*intargc,char**argv*/)
  • {
  • constcharinput[20]="zzzzZZZZabcABC";
  • charoutput[20];
  • Stringchange(input,output);
  • printf("outputis%s",output);
  • system("pause");
  • return0;
  • }



#include <stdio.h>
#include <string.h>
void  Stringchange(const  char* input,char* output)
{
while(*input)
{
if(*input>='a'&& *input<= 'y' || *input>='A' && *input<= 'Y')
{
* output = *input+1;
output++;
input++;
}
else if(*input == 'z' || *input == 'Z')
{
* output = *input-25;
output++;
input++;
}
else
{
* output = *input;
output++;
input++;
}
}
*output = '\0';
}
int main(/*int argc, char **argv*/)
{
const char input[20]="zzzzZZZZabcABC";
char output[20];
Stringchange(input,output);
printf("output is %s",output);
system("pause");
return 0;
}

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

[cpp] view plaincopyprint?





  • #include<stdio.h>


  • #include<string.h>



  • intsame(intnum)
  • {
  • inttmp[20];
  • intm=0;
  • inti,j;
  • while(num>0)
  • {
  • tmp[m]=num%10;
  • num/=10;
  • m++;
  • }
  • for(i=0;i<m-3;i++)
  • for(j=i+2;j<m-1;j++)
  • if(tmp==tmp[j]&&tmp[i+1]==tmp[j+1])
  • return1;
  • return0;

  • }

  • intmain(/*intargc,char**argv*/)
  • {
  • intret;
  • ret=same(173654123);
  • printf("retis%d",ret);
  • system("pause");
  • return0;
  • }



#include <stdio.h>
#include <string.h>
int same(int num)
{
int tmp[20];
int m=0;
int i,j;
while(num>0)
{
tmp[m]=num%10;
num/=10;
m++;
}
for(i=0;i<m-3;i++)
for(j=i+2;j<m-1;j++)
if(tmp==tmp[j] && tmp[i+1]==tmp[j+1])
return 1;
return 0;
}
int main(/*int argc, char **argv*/)
{
int ret;
ret=same(173654123);
printf("ret is %d",ret);
system("pause");
return 0;
}

  


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[]的长度,函数返回值为两个数组不同元素的个数。

[cpp] view plaincopyprint?





  • #include<stdio.h>


  • #include<string.h>



  • intcompare_array(intlen1,intarray1[],intlen2,intarray2[])
  • {
  • inti=0;
  • intcnt=0;
  • printf("helloincompare_array\n");
  • while(len1-1-i>=0&&len2-1-i>=0)
  • {
  • if(array1[len1-1-i]!=array2[len2-1-i])
  • cnt++;
  • i++;

  • }
  • returncnt;

  • }

  • intmain(/*intargc,char**argv*/)
  • {

  • intret;
  • intarray1[5]={77,21,1,3,5};
  • intarray2[4]={1,3,5,7};
  • printf("hello\n");
  • ret=compare_array(5,array1,4,array2);
  • printf("retis%d",ret);
  • system("pause");
  • return0;
  • }



#include <stdio.h>
#include <string.h>
int compare_array( int len1, int array1[], int len2, int array2[] )
{
int i=0;
int cnt=0;
printf("hello in compare_array\n");
while (len1-1-i>=0 && len2-1-i>=0)
{
if(array1[len1-1-i]!=array2[len2-1-i])
cnt++;
i++;
}
return cnt;
}
int main(/*int argc, char **argv*/)
{
int ret;
int array1[5]={77,21,1,3,5};
int array2[4]={1,3,5,7};
printf("hello\n");
ret=compare_array(5,array1,4,array2);
printf("ret is %d",ret);
system("pause");
return 0;
}


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

[cpp] view plaincopyprint?





  • #include<stdio.h>


  • #include<string.h>



  • inthuiwen(longnum)
  • {
  • inttmp[50];
  • intm=0;
  • intbegin;
  • intend;
  • while(num>0)
  • {
  • tmp[m]=num%10;
  • num/=10;
  • m++;
  • }
  • begin=0;
  • end=m-1;
  • while(begin<end)
  • {
  • if(tmp[begin++]!=tmp[end--])
  • return0;
  • }
  • return1;
  • }

  • intmain(/*intargc,char**argv*/)
  • {
  • intret;
  • longnum=1234554321;
  • ret=huiwen(num);
  • if(ret==0)
  • printf("nothuiwen\n");
  • elseif(ret==1)
  • printf("huiwen\n");
  • system("pause");
  • return0;
  • }



#include <stdio.h>
#include <string.h>
int huiwen(long num)
{
int tmp[50];
int m=0;
int begin;
int end;
while(num>0)
{
tmp[m]=num%10;
num/=10;
m++;
}
begin = 0;
end= m-1;
while(begin<end)
{
if(tmp[begin++]!=tmp[end--])
return 0;
}
return 1;
}
int main(/*int argc, char **argv*/)
{
int ret;
long num=1234554321;
ret = huiwen(num);
if(ret == 0)
printf("not huiwen\n");
else if(ret == 1)
printf("huiwen\n");
system("pause");
return 0;
}


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

[cpp] view plaincopyprint?





  • #include<stdio.h>


  • #include<string.h>



  • voidchangestr(constchar*pIn,char*pOut)
  • {
  • char*r=pIn;
  • char*s=pIn;

  • *pOut++=*pIn;

  • while(*++pIn!='\0')
  • {
  • if(*pIn!=*r++)
  • *pOut++=*pIn;
  • }
  • *pOut='\0';
  • }


  • intmain(/*intargc,char**argv*/)
  • {

  • charpIn[20]="goorooogllle";
  • charpOut[20];
  • changestr(pIn,pOut);
  • printf("%s",pOut);

  • system("pause");
  • return0;
  • }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-226849-1-1.html 上篇帖子: 华为机试题(4) 下篇帖子: 华为机试题(2)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表