logo资料库

2010年锐捷网络校园招聘嵌入式软件开发笔试真题及答案.doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
2010 年锐捷网络校园招聘嵌入式软件开发笔试真题及答案 1、16 位 short int 类型所能表示的数值下限与上限,如果使用 printf 的格式串”%d,%d” 打印,其结果是__-32768 ,32767 ____; 2、有定义(tip:潜在的级数升级,此处按 int 输出) signed char ch = 127; printf(“%d”,ch+127); 的输出结果是__254_______; 3、多组数组 a[10][10][10]的第一个元素是 a[0][0][0],则其第 245 个元素是 _a[2][4][4]_____;(tip:2*10*10+4*10+4+1) 4、若定义 int a[010],(注:八进制) 则 sizeof(a)的值是___32___; 5、有定义 char *str = “hello\n\0\n”,则 strlen(str)的值是__6____;(tip:’\0’为 字符结束符标志) 6、定义一个函数指针类型 func_ptr,所对应的函数的参数是 void,返回值为 int 指针: typedef_int*(*func_ptr)(void)___; 7、完成宏定义,将 int 型变量 a 的第 0 位到第 n 位取反(右数最低位为第 0 位),其他位 保持不变: 8、如下函数 #define bit_reverse(a,n) ( (a)^ 1<<(n) ) int func(void) { } static int cnt; 第一次运行时,cnt 的值是___0___; 9、若 i = 0,表达式 a[i++] += 4; 运算后,i 的值是___1___;
10、语句 fprintf(stderr,"%x, %d, %c", '1', '1', '1');的输出是_31,49,1_; 11、枚举类型定义 enum boolean {yes, no}; yes 的数值是___0___; 12、有如下程序(tip:宏原样带入展开即可) #define ADD(x) (x) + (x) int main(void) { int a = 5, b = 6, c = 7, d = ADD(a + b) * c; printf(“%d\n”, d); return 0; } 的输出结果是__88____; 13、程序 int main(void) { int i = 16, j, x = 6; j = i++ + 1; (tip:结合顺序,可参考《C 陷阱与缺陷》) x *= i = j; printf(“%d, %d\n”, j, x); return 0; } 输出的是___17, 102___;
14、有以下语句 struct a {int v1, v2;}; struct b { struct a v1; }; { int main(void) int v2, v3; struct b t = {1, 2, 3, 4}; struct a *ap = (struct a*)&t; printf(“%d”, *((int *)(ap + 1))); } 输出结果是__3____;(tip:指针类型及偏移) 15、语句 i = 0, j = 0; for(i++, j++; ++j < 1 && i++ <2; i++, j++) {(tip:逻辑运算符的特点) ;/*void*/ } 当循环退出时,i 的值是___1___; 16、运行 C 语言编写的程序 copy /B a.txt a.bak 时,int main(int argc, char *argv[])中 argv[argc] 指向的内容是__NULL____;(tip:可参考《C 和指针》P265) 17、有定义(tip:算数右移-与编译器相关,左移)
int i=-1; printf("%d,%d",i>>1,i<<1); 的结果是___-1,-2_______。 注:负数在计算机中是以补码的形式参与计算的 ,因为-1 的原码是(以八位为例)1000 0001, 所以补码是 1111 1111,右移一位的得到的还是 1111 1111 ,因为是负数,所以在左端补 1,而不是 0。再把 1111 1111,转化为原码即减 1 取反得 1000 0001,化为十进制就是-1。 左移同理可得。 总结:只要记住负数是以补码的形式参与计算的。这类题目就不会模糊。 18、程序 char buf[256]; int main(void) { “efg%%d”); sprintf(buf+ sprintf(buf, “%s”, “abc%d”), “%s”, printf(buf,100); } 的输出是__abc100efg%d____。 注: 两个% 就只输出一个%,还有 sprintf 的返回值为输出元素的个数,100 在碰到的第 一个%d 处输出。 19、已知一棵二叉树 s 前序遍历和中序遍历分别为 ABDEGCFH 和 DBGEACHF,则该二叉树的后 序遍历为__DGEBHFCA_____。 20、向一个长度为 n 的向量的第 i 个元素(1=i=n+1)之前插入一个元素时,需向后移动 _n-i+1___个元素。(tip:可以考虑 i 为 0 和 n 的情况,较容易) 21~25、 算法:函数 psort()将含 n 个整数的数组 a[]的不同元素按从小到大的顺序存于数组 a[]中, 返回值是不同元素的个数。它的实现方法是顺序考察 a[]中的元素,寻找当前考察元素 a[i]
在已确定的不同元素中的插入位置。如果 a[i]是一个新的不同元素,插入之,否则,忽略 该元素。(此题貌似还有点问题) int psort(int a[],int n) { int i,j,k,low,high,mid,t; for(k=1,i=1;i=a[i]) high=mid-1; low=mid+1; else } { { for(j=__i - 1___(23); j>_high___(24); j--) if(low <= k || high >= 0(22)) t=a[i];
a[j+1]=a[j]; } a[__j + 1_(25)]=t; k++; } return k; }
分享到:
收藏