好文档 - 专业文书写作范文服务资料分享网站

华为经典嵌入式面试题集

天下 分享 时间: 加入收藏 我要投稿 点赞

int i,j;

for(i=0; source[i]==dest[i]; i++) {

if(source[i]=='\\0' && dest[i]=='\\0') return 0;

else

return -1;

} } 答案:

二、 int strcmp(char *source, char *dest)

{

while ( (*source != '\\0') && (*source == *dest)) {

source++; dest++; }

return ( (*source) - (*dest) ) ? -1 : 0; }

2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 答案:一、 int fun(char *p) { if(p==NULL) return -1; else { int length = 0; int i = 0; int judge = 1; length = strlen(p); for(i=0; i

华为笔试网络题(3) 2006-09-30 12:48

1.在OSI 7 层模型中,网络层的功能有( )

A.确保数据的传送正确无误 B.确定数据包如何转发与路由 C.在信道上传送比特流 D.纠错与流控 2.FDDI 使用的是___局域网技术。( )

A.以太网; B.快速以太网; C.令牌环; D.令牌总线。

3.下面那种LAN 是应用CSMA/CD协议的()

A.令牌环 B.FDDI C.ETHERNET D.NOVELL 4.TCP 和UDP 协议的相似之处是 ( )

A.面向连接的协议 B.面向非连接的协议 C.传输层协议 D.以上均不对

5.应用程序PING 发出的是___报文.( )

A.TCP 请求报文。 B.TCP 应答报文。 C.ICMP 请求报文。 D.ICMP 应答报文。 6.以下说法错误的是(多) ( )

A.中继器是工作在物理层的设备 B.集线器和以太网交换机工作在数据连路层 C.路由器是工作在网络层的设备 D.桥能隔离网络层广播

7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( )

A.丢掉该分组 B.将该分组分片 C.向其他端口广播该分组 D.以上答案均不对

8.LAN Switch 在网络层次模型中的地位( )

A.物理层 B.链路层 C.网络层 D.以上都不是 9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( )

A.199 B.100 C.1024 D.2048 10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( )

A.必须改变它的IP 地址和MAC 地址 B.必须改变它的IP 地址,但不需改动MAC 地址 C.必须改变它的MAC 地址,但不需改动IP 地址 D.MAC 地址.IP 地址都不需改动

答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.

华为笔试题(4) 2006-09-30 13:00

1. 找错 void test1() {

char string[10]; char* str1=\ strcpy(string, str1); } 答:表面上并且编译都不会错误。但如果string数组原意表示的是字符串的话,那这个赋值就没有达到意图。最好定义为char string[11],这样最后一个元素可以存储字符串结尾符'\\0'; void test2() { char string[10], str1[10]; for(int I=0; I <10;I++) { str1[I] ='a'; } strcpy(string, str1); } 答:strcpy使用错误,strcpy只有遇到字符串末尾的'\\0'才会结束,而str1并没有结尾标志,导致strcpy函数越界访问,不妨让str1[9]='\\0',这样就正常了。 void test3(char* str1) { char string[10]; if(strlen(str1) <=10) { strcpy(string, str1); } } 答:这又会出现第一道改错题的错误了。strlen(str1)算出来的值是不包含结尾符'\\0'的,如果str1刚好为10个字符+1结尾符,string就得不到结尾符了。可将strlen(str1) <=10改为strlen(str1) <10。 2. 找错

#define MAX_SRM 256 DSN get_SRM_no() { static int SRM_no;

int I;

for(I=0;I

SRM_no%=MAX_SRM; if(MY_SRM.state==IDLE) { break; } } if(I>=MAX_SRM)

return (NULL_SRM); else

return SRM_no;

} 答:我不知道这段代码的具体功能,但明显有两个错误 1,SRM_no没有赋初值 2,由于static的声明,使该函数成为不可重入(即不可预测结果)函数,因为SRM_no变量放在程序的全局存储区中,每次调用的时候还可以保持原来的赋值。这里应该去掉static声明。 3. 写出程序运行结果 int sum(int a) {

auto int c=0; static int b=3; c+=1; b+=2; return(a+b+c); } void main() {

int I; int a=2; for(I=0;I <5;I++) {

printf(\ }

} 答:8,10,12,14,16 该题比较简单。只要注意b声明为static静态全局变量,其值在下次调用时是可以保持住原来的赋值的就可以。 4. int func(int a) {

int b; switch(a)

{

case 1: b=30; case 2: b=20; case 3: b=16; default: b=0; } return b; } 则func(1)=?

答:func(1)=0,因为没有break语句,switch中会一直计算到b=0。这是提醒我们不要忘了break。呵呵。 5: int a[3]; a[0]=0; a[1]=1; a[2]=2; int *p, *q; p=a; q=&a[2]; 则a[q-p]=?

答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点 6. 定义 int **a[3][4], 则变量占有的内存空间为:_____

答:此处定义的是指向指针的指针数组,对于32位系统,指针占内存空间4字节,因此总空间为3×4×4=48。

7. 编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

答: /*输入年月日时分秒,输出年月日时分秒的下一秒,输出仍然在原内存空间*/

void NextMinute(int *nYear,int *nMonth,int *nDate,int *nHour,int *nMinute,int *nSecond)

{

int nDays;

(*nSecond)++; // 秒加1

if(*nSecond>=60) // 秒满60,做出特殊处理,下面时,日,月等类同 {

*nSecond=0;

(*nMinute)++; {

if(*nMinute>=60)

*nMinute=0;

(*nHour)++; {

if(*nHour>=24)

*nHour=0;

(*nDate)++; {

switch(*nMonth)

case 1: case 3: case 5: case 7: case 8:

case 10:

case 12: nDays=31;

break;

case 2:// 判断闰年

{ }

if(*nYear@0==0||*nYear0!=0&&*nYear%4==0)

nDays=29; else { }

nDays=28; break; default:

break;

}

nDays=30;

if(*nDate>nDays) {

*nDate=1;

(*nMonth)++; {

if(*nMonth>12)

*nMonth=1; (*nYear)++; } }

华为经典嵌入式面试题集

inti,j;for(i=0;source[i]==dest[i];i++){if(source[i]=='\\0'&&dest[i]=='\\0')return0;elsereturn-1;}}答案:二、intst
推荐度:
点击下载文档文档为doc格式
6aspj9eawr9vfqx3d4pq7px008twlp015fb
领取福利

微信扫码领取福利

微信扫码分享