2016大唐移动 在线笔试题

来源:互联网 发布:水上交通安全网络竞赛 编辑:程序博客网 时间:2024/04/28 21:07

1. 5 24 61 122 213 数字序列的下面一个数是什么?

解答:340,以上数字同加上3后,得到8,27,64,125,216,分别是2,3,4,5,6的立方,所以下面的数应该是7³-3=340。

2.下面的代码,输出是什么?

int main () {       int x = 5, y = 6;    printf("%%d, %%d", x, y);    return 0;}
解答:输出为%d,%d。因为前两个%%表示%,后两个%%也表示%。参见下一题。

3.x=11/3;y=5;

printf("%%d,%%%d/n",x,y)为什么输出的是%d %3
解答:%无法单独作为字符输出(因为其特殊性),如果想要输出%则可以用%%的形式,你的printf中从左向右两个%一组,前两个和第三、四分别表示一个%字符,第五个则是和d组成了%d表示一个整形变量x的值。

4.下面代码的输出结果是什么?

char str[]="ABCD",*p=str; printf("%d\n",*(p+4));
解答:

char str[]="ABCD",*p=str; 语句中p指针指向字符串数组str的首地址,printf("%d\n",*(p+4));  语句中 p+4 指向str数组的第五个字符(字符串默认以'\0'结尾)'\0'故输出'\0'的ASCII码 0。
5.优先级队列使用什么数据结构实现?
答案:二叉堆。

6.若有定义int c[4][5],(*cp)[5];和语句cp=c,则能正确引用c数组元素的是
a。cp+1    b.*(cp+3)   c.*(cp+1)+3    d.*(*cp+2)

解答:

*(*cp+2)代表c[0][2]这个元素。cp是行指针,用于指向二维数组的一行。cp=c,故cp+1是第1行的指针。*(cp+3)等价于c[3],代表第3行,其数值大小为第三行第一列的地址。*(cp+1)+3 等价于c[1]+3,代表第一行第三列的地址。*(*cp+2)等价于*(*(cp+0)+2),等价于c[0][2],代表c数组的一个元素。
注解:cp+1与*(cp+1)到底有什么区别,cp+1是指向第一行的指针,其数值大小为行地址。*(cp+1)代表第一行元素,也可以说是第一行第一列元素的地址。其数值大小为列地址,其大小与cp+1是相等的,但是概念却是完全不一样的。
7.当输入 4, 5, 6之后,下面代码中c数组中的元素是什么样子的?
    int c[3][2]={1, 2, 3};    for(int i=0;i<3; i++)        scanf("%d", c[i]);


解答:c是一个数组指针c[0]为第一行第一列元素的地址,如下雷同。所以c中的元素分布为:
4,2,5,0,6,0.
8.下面代码的输出是什么?
int main () {       int a='a', b = 'A';    printf("%d,%o",(a=a+a,a+b,b),a+'a'-'A');    return 0;}

解答:首先要知道%d是十进制输出,%o是八进制输出。其次,()的优先级最高,","运算符的结合顺序是从左到右的。所以第一个%d输出的是b的数值。第二个%o输出的是a+'a'-'A'的数值。其次需要注意的一点是:::赋值运算符的结合(包括=,+=,-=,&=等符号),是从右向左的。

9.下面代码的输出是什么?

int main () {       int a='a', b = 'A';    printf("%d, %d", a=a+a, a+b, b);    return 0;}

解答:","运算符的结合顺序是从左到右的。所以先输出a=a+a的数值,其次是a+b的数值。所以为194, 259。

10.下面程序片段的输出是多少?

    int a = 5, b =6;    printf("%d\n",a,b);    return 0;

解答:逗号运算符的结合顺序是从左至右,所以只输出a的数值。

11.C语言中,函数的隐含存储类型是:A. auto B.static C.extern D.register

解答:选A。C语言中,声明变量的时候,如果类型前面不特别指明某些关键字(如static, extern, register)时,默认是auto,也称自动变量。这种变量一般是临时的,程序运行结束后,就由系统回收了。

举个简单的例子:int a; 我们一般是这样定义变量的。其实系统自动会在int前面自动加上atuo,变成auto  int  a;所以函数的隐含存储类型是auto.其它的几个关键字各自都有其特殊的用途。
12.

13.char *s="\ta\017bc"中s所指向的字符串是5个还是6个啊?

解答:

\t,相当于按了一下tab键a,字母a\017,表示8进制的ascii码对应的字符b,字母bc,字母c最后还有一个\0,不过字符串长度应该不算在内。可以用strlen测试一下是5所占字节数应该是6可以这样测试.
另外如果把\017替换为\0,则s所指向的字符串占据的字节数为3。
14.下面的代码,定义是否合法?

char t[10]='c';

解答:不合法。应该是char t[10]="c"。

15.设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有①front=11,rear=19;②front=19,rear=11;问在这两种情况下,循环队列中各有元素多少个?

解答:此处可直接使用队列长度计算公式: (N+r-f)% N,其中N为队列容量40,r,f分别为尾指针、头指针所指向元素,则可以得出:1)L=(40+19-11)% 40=82)L=(40+11-19)% 40=32
16.c程序编译过程?

预处理,编译,优化,汇编,链接。

17.死代码删除的概念是什么?

解答:死代码是指永远不会执行到的代码,不是注释,比如if(0){…},大括号里的就是死代码。

18.D类IP地址仅用于多投点数据传送

解答:对的!!!!!!

19.关系数据模型有哪三部分组成?

解答:数据结构,数据操作,数据约束

20.指针变量所占空间大小和该指针变量指向的数据类型没有任何直接关系.

解答:对!!!!

21.函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定

解答:对!!!!

22.多线程中,堆栈是私有的还是共享的?

解答:

线程占有的都是不共享的,其中包括:栈、寄存器、状态、程序计数器

线程间共享的有:堆,全局变量,静态变量

进程占有的资源有:地址空间,全局变量,打开的文件,子进程,信号量、账户信息。

在一个进程的线程共享堆区。因为堆栈是保证线程独立运行所必须的。线程函数可以调用函数,而被调用的函数中又是可以层层嵌套的,所以线程必须拥有自己的函数堆栈,使得函数调用可以正常执行,不受其他线程的影响。

23.下面代码的输出是什么?

int f() {    static int b = 0;    b += 1;    return b;}int main(){        printf("%d\n", f());    printf("%d\n", f());    return 0;}


解答:因为函数中的static变量具有记忆功能,所以输出为1,2。

24.下面的代码输出什么?

#include <stdio.h>#include <string.h>enum day{    mon,day};struct p{    int q;    enum day a;    int g:3;    int t:3;};int main(){    printf("%d\n", sizeof(p));    return 0;}

解答:输出12,首先枚举变量占4个字节。g和t是位域变量。他们俩占一个字节,又因为要位对齐,所以他们俩占4个字节,所以3*4=12。

25.代理进程通过MIB与管理站对话。

解答:错!!! 

代理进程通过网络管理协议与管理站对话。

26.wifi与wlan的关系。

解答:包含关系,wifi是wlan的一种

27.SNMPv2 定义了 8 种 PDU 类型

解答:对的,是8种!!!

28.下面代码的输出是什么?

int main(){    unsigned char a = 0xbc;    unsigned char b = ~a<<3+1;    printf("%d %d", a, b);    return 0;}

解答:可知,~的优先级高于+,其次是<<。所以答案为188,48。

0 0
原创粉丝点击