1.turbo c环境下,下面程序运行的结果是()
1 2 3 4 5 6 7 8 9 10 11 |
|
A:11
B:21
C:22
D:12
答案:D
解析: 程序首先定义了一个一维数组a,赋其初值,并定义一个同类型的指针变量p和一个指向指针的指针变量k,然后让指针变量p指向数组的首地址,接着将指针变量p的地址值赋给指向指针的指针变量k。在第一条输出语句中,首先我们需要弄清楚*(p++)的作用,它是先调用指针变量p的值,然后使其自加,输出效果等价于*p,因此,最后输出的结果是数组中的第一个元素。在第二条输出语句中,我们需要弄明白**k的作用,指向指针的指针变量类似于指针变量,如果用**k表示一个数值,可以确定这条输出语句的输出结果是一个数值,而非地址,从表达式k=&p可以看出,k的值是指针变量p的地址值,p的值改变后,k能实时得到改变,那么在第一条输出语句对p的改变,在第二条输出语句中得到了体现。因此,**k输出的是数组中的第二个元素.
2.
使文件指针重新定位到文件读写的首地址的函数是()
正确答案:C
A:ftell( )
B:fseek( )
C:rewind ()
D:ferror ()
解析:
A中ftell() 函数用于得到文件位置指针当前位置相对于文件首的偏移字节数;
B中fseek()函数用于设置文件指针的位置;
C中rewind()函数用于将文件内部的位置指针重新指向一个流(数据流/文件)的开头;
D中ferror()函数可以用于检查调用输入输出函数时出现的错误。
3.
STL中的一级容器有:
A:vector, deque, list, set, multiset, map, multimap.
B:序列容器,关联容器,容器适配器
C:set, multiset, map, multimap.
D:vector, deque, list.
正确答案:D
解析:
STL中一级容器是指, 容器元素本身是基本类型, 非组合类型。
set, multiset中元素类型是pair<key_type, key_type>;
map, multimap中元素类型是pair<key_type, value_type>;
4.以下哪项不属于STL container()
A:stack
B:queue
C:multimap
D:string
答案:D
解析:
序列容器:动态数组vector,双端队列deque(本质是动态数组加索引),链表list。
关联容器:set,map,multiset,multimap,bitset(叫bit_array更合适)。
容器适配器:stack,queue,priority_queue
5.C语言结构体类型变量在程序执行期间()
A:所有成员一直驻留在内存中
B:只有一个成员驻留在内存中
C:部分成员驻留在内存中
D:没有成员驻留在内存中
正确答案:A
解析:结构体变量不管其包含有多少个成员,都应当看成是一个整体。在 程序运行 期间,只要在变量的生存期内,所有成员一直驻留在内存中,不可能出现有的成员驻留内 存,有的成员不驻留内存的情况。
6.
以下 scanf 函数调用选项中, 错误 的是()
1 2 3 4 5 |
|
scanf("%s",a[0].name);
scanf("%d", &pa[0].age);
scanf("%d",&(pa->age));
scanf("%d", pa->age);
正确答案:D
7.
下列程序段执行后,输出d的值为()
1 2 3 4 5 6 7 |
|
A:1
B:2
C:3
D:0
正确答案:A
解析:
运算符优先级:&&>||>=
所以先计算++b&&++c,++c为0,所以整体是false=0,再计算++a||0,++a为true,
所以整体是true=1,所以d=1
8.
以下只有在使用时才为该类型变量分配内存的存储类型的是()
A:auto和static
B:auto和register
C:register和static
D:extern和register
正确答案:B
解析:局部变量也叫自动变量 在函数里定义int a也就是auto int a a的作用域只在这个函数里 为了节省内存空间,优化性能,编译器通常会将一次性使用的变量分配在栈上(先进后出,生命周期结束就出栈)。这样执行不同的函数的时候就会在一个栈上进行出入栈操作,更高效的利用内存。 一个变量用register来修饰,就意味着该变量会作为一个寄存器变量,让该变量的访问速度达到最快。一个程序逻辑中有一个很大的循环,循环中有几个变量要频繁进行操作,这些变量可以声明为register类型。
9.
数组a的定义语句为“float a[3][4];”,下列()是对数组元素不正确的引用方法。
A:a[i][j]
B:*(a[i]+j)
C:*(*(a+i)+j)
D:*(a+i*4+j)
正确答案:D
解析:
二维数组可以看成是指针的指针,b[][] = **b; 比如b[3][4]; 它是一个3行4列的二维数组,也可以看成是二级指针,一级存放的是行指针,然后每个行指针里面其实又是指向了4个列元素。 *(*(b+i)+j),*(b+i)是先取行指针,然后+j偏移到所要的列,然后*取值就得到i行j列的数据了。 D项是*a才对
10.
C++是不是类型安全的?
A:是
B:不是
正确答案:B
解析:可以参考:谈谈C++类型安全_btwsmile's blog-CSDN博客_c++类型安全http://blog.csdn.net/ixsea/article/details/6693178