华为面试题C语言软件工程师范文_第1页
华为面试题C语言软件工程师范文_第2页
华为面试题C语言软件工程师范文_第3页
华为面试题C语言软件工程师范文_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华为面试题C语言软件工程师范文那就是变量i没有定义,这在代码编译阶段编译器可以帮你发现,很容易搞定。然而很多问题是自己造成的漏洞,编译器是帮不上什么忙的。这里最大的问题还是str1没有结束符,因为strcpy的第二个参数应该是一个字符串常量。该函数就是利用判断第二个参数的结束符来得到是否拷贝完毕。所以在for循环后面应加上str1p[9]=‘’;

pS:字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符’’。

voidtest3(char*str1)

{

charstring[10];

if(strlen(str1){

strcpy(string,str1);

}

}

这里的问题仍是越界问题。strlen函数得到字符串除结束符外的长度。如果这里是小结:上面的三个找错的函数,主要是考查对字符串和字符数组的概念的掌握以及对strcpy函数和strlen函数的理解。

2、找错

DSNget_SRM_no()

{

staticintSRM_no;

intI;

">for(I=0;I

{

SRM_no%=MAX_SRM;

if(MY_e==IDLE)

{

break;

}

}

if(I>=MAX_SRM)

return(NULL_SRM);

else

returnSRM_no;

}

这里for循环的判断语句是后来我加上的,估计在网上流传的时候被人给弄丢了,根据对程序的分析,给补上了。估计错误应该不是这儿。

简单的阅读一下这个函数,可以大略的可以猜想出这个函数的功能是分配一个空闲的SRAM块。办法:从上次分配的RAM块后的RAM块开始检测SRAM每个RAM块,看是否是IDLE状态,如果是IDLE那么返回当前的RAM块的号SRM_no。如果所有的RAM块都不是IDLE状态,那么意味着无法分配一个RAM给函数调用者,返回一个表示没有RAM可分配的'标志(NULL_SRM)。

经过上面的分析,那么这里可以知道,这个函数的错误是for循环里面没有给SRM_no这个变量累加1。

3、写出程序运行结果

intsum(inta)

{

autointc=0;

staticintb=3;

c+=1;

b+=2;

return(a+b+c);

}

voidmain()

{

intI;

inta=2;

for(I=0;I{

printf("%d,",sum(a));

}

}

运行结果是:8,10,12,14,16,

在求和函数sum里面c是auto变量,根据auto变量特性知每次调用sum函数时变量c都会自动赋值为0。b是static变量,根据static变量特性知每次调用sum函数时变量b都会使用上次调用sum函数时b保留的值。

简单的分析一下函数,可以知道,假设传入的参数不变,那么每次调用sum函数返回的结果,都比上次多2。所以答案是:8,10,12,14,16,

4、func(1)=《

intfunc(inta)

{

intb;

switch(a)

{

case1:30;

case2:20;

case3:16;

default:0;

}

returnb;

}

在case语句中可能忘记了对变量b赋值。如果改为下面的代码:

intfunc(inta)

{

intb;

switch(a)

{

case1:b=30;

case2:b=20;

case3:b=16;

default:b=0;

}

returnb;

}

因为case语句中漏掉了break语句,所以无论传给函数的参数是多少,运行结果均为0。

5、a[q-p]=《

inta[3];

a[0]=0;a[1]=1;a[2]=2;

int*p,*q;

p=a;

q=&a[2];

很明显:a[q-p]=a[2]=2;

6、内存空间占用问题

定义int**a[3][4],那么变量占有的内存空间为:16位系统24,32位编译系统中是48。

pS:公式:3*4*sizeof(int**)。

7、程序编写

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2022年12月31日23时59分59秒,那么输出2022年1月1日0时0分0秒。

voidResetTheTime(int*year,int*month,int*date,int*hour,int*minute,int*second)

{

intdayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};

if(*year12||

*date31||*hour23||

*minute59||*second60)

return;

if(*year%400==0||*year%100!=0&&*year%4==0)

dayOfMonth[1]=29;

if(*second>=60)

{

*second=0;

*minute+=1;

if(*minute>=60)

{

*minute=0;

*hour+=1;

if(*hour>=24)

{

*hour=0;

*date+=1;

if(*dat

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论