C开发笔试题 - 20130812

更新时间:2023-11-11 23:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、 不定项选择题

1、 以下变量的定义,正确的是( C )

A. int 3man; C. int i, *pi; B. int 3man’shoes; D. short int si;

2、 对于如下的定义,说法正确的有( A) int * pb,pc;

A、pb是一个指向整数的指针,pc是一个整数 C、这个定义是错的

B、pb和pc都是指向整数的指针 D、这个定义是对的,但在编译时会出现告警

3、 以下代码的运行结果是(B )

代码Ⅰ:

unsigned int uiA;

uiA = (0×AB & θ×CD) ^ (0×EF | θ×AB); 代码Ⅱ:

unsigned int uiB

uiB =θ×AA | (θ×BB << 8) |(θ×CC<<16) | (θ×DD<<24);

A、代码Ⅰ,uiA=θ×77 C、代码Ⅱ,uiB =θ×DDCCBBAA B、代码Ⅰ,uiA=θ×66 D、代码Ⅱ,uiB =θ×AABBCCDD

4、 以下语句中,能够判断uiNum(unsigned int)可以被8整除的有( D )

A、 If (((uiNum / 8)*8)== uiNum) B、 if ((uiNum % 8)== 1) C、 if ((uiNum &θ×θ7) ==θ)

D、 if (((uiNum >> 3) << 3 )==uiNum )

5.关于以下代码,描述正确的有( B )

代码Ⅰ: const char * pcStr=”abcdefg”; char *pcStr=”abcdefg” 代码Ⅱ:

void string_sizeof(char szStr1[10]) {

char szStr2[10]=”12345”;

printf(“%u,”, sizeof(szStr1));

printf(“%u\\r\\n,”, sizeof(szStr2)); return;

}

int main( ) {

string_sizeof(”12345”); 代码Ⅲ

pcStr[3]=”a”; 代码Ⅳ

unsigned int uiA=100; printf(“%s\\r\\n,”, uiA); return 0; }

A. 代码Ⅰ,const修饰符表明pcStr指针不能再次被赋值,也就是说不能指向其他缓冲区.

B. 代码Ⅱ,程序的运行结果是“4,10”.

C. 代码Ⅲ,对pcStr[3]的赋值会导致程序访问非法地址. D. 代码Ⅳ,打印unsigned int时不应该使用“%s”,会导致程序访问非法地址。

6.关于结构的大小,以下描述正确的有(B )

struct A_S struct B_S { {

unsigned short us1; unsigned char uc1;

unsigned short us2; unsigned int uc2; unsigned short us3; unsigned short us3; }; };

union C_U union D_U { {

unsigned int ui1 unsigned char uc2;

unsigned char uc2; unsigned short us3; unsigned short us3; unsigned int ui1; }; };

A. 结构struct A_S的大小是6 B. 结构struct B_S的大小是12 C. 联合union C_U的大小是12 D. 联合union D_U的大小是12

7.以下描述正确的有( C )

A. “尾端和头端”与CPU类型没有关系,是C语言特有的 B. 由于C语言具有良好的可移植性,原来运行在32位计算机上的C语言程序,重新移植在64位计算机上,运行结果是一致的。

C. 如果用关键字register修饰一个变量,则程序在运行时会尽量把该变量保

存在寄存器,哪个寄存器由编译结果指定。

8.如果限定程序的栈的大小是1K字节,则以下代码,运行时会出错的有( C ) A.foo.c

static int iA[512]; int main( ) {return θ;}

B. foo.c

int main( ) {

static int iA[512] return θ; }

C. foo.c

int main( ) {

int iA[512] return θ; }

D. foo.c

int main( ) {

Int*piA

piA=malloc(512*sizeof(int)); return θ; }

9.以下描述正确的有( A ) A sizeof(long)等于4.

B.short类型的指针p,p++表示指向下一个字节。 C.int a=oxffffoooo,a的值为-65535. D.unsigned char类型的取值范围是0~256.

10. 以下代码正确的是(C ) A.Char a[]={“ABC”}; B.Char a=”k”;

c. char a[4]={0};

d, char a[11]=”Hello Word!”;

11.以下代码最后一次打印结果是(B ) void fun(int iInputNum) {

static int iCount=1;

iCount=iCount+iInputNum;

Print(“\\n iCount =%d”,icount+iInputNum); }

for(i=1;i<3;i++) {

Fun(i); }

A.iCount =3 B.iCount =4 C.iCount =6 D.iCount =5

12.关于以下代码,输出结果是(A ) Void Fun( ) {

Int i;

Int x[3][3]={1,2,3,4,5,6,7,8,9}; Int *p;

P=& x [1][1];

For(i=0;i<4;i+=2)

Printf(“%d”,p[i]); }

A.5 7 B.5 9 C.1 3 D.1 5

13.有如下链表和节点D,将D替换B,并删除B,以下代码正确的有单链表: AA A pstNext pstNext B C PstA pstB

D partD 双链表:

A pstNext pstNext pstPre pstPre B C PstA pstB D

pstD (C ) struct SLL { struct SLL *pstNext;/* 下一结点*/ };

struct DLL {

struct DLL*pstNext;/* 下一结点*/ struct DLL*pstPrev;/* 前一结点*/ }; A.

pstB=pstB->patNext; pstD->pstNext=pstB; pstA->pstNext=pstD; free(pstB); B.

pstA->pstNext=pstD;

pstD->pstNext=pstA->pstNext-pstNext; free(pstB); C.

pstA->pstNext-pstNext-pstpre=pstD; pstD->pstNext=pstA->pstNext->pstNext; pstD->pstpre=pstB->pstpre;

pstA->pstNext=pstB->pstNext-pstpre; free(pstB); D.

pstD->pstNext=pstB->pstNext; pstD->pstNext->pstpre=pstD; pstD->pstpre=pstA; pstA->pstNext=pstD; free(pstB);

1、数据的节点定义如下面的tagData所列,该数据节点有两个索引值,分别是index1和index2,请编写程序,有如下要求:

1)据上下文,由于需要分别以index1和index2索引查找,请建立两个单向链表,分别以index1和index2,索引值唯一,且均为从小到大

2)提供增加节点的函数和删除节点的操作,请注意增加和删除节点的操作均会影响这两个链表。

3)删除操作数据是依据index2删除的 /*节点数据*/

本文来源:https://www.bwwdw.com/article/q6kv.html

Top