C语言-基本选择题及答案[1] 联系客服

发布时间 : 星期一 文章C语言-基本选择题及答案[1]更新完毕开始阅读

*7.设有定义语句“struct {int x; int y;} d[2]={{1,3},{2,7}};”则“printf(“%d\\n”,d[0].y/d[0].x*d[1].x);”输出的是( D )。

A.0 B.1 C.3 D.6 8.已知: struct sk { int a;

float b;

}data, *p;

若有p=&data,则对data中的成员a的正确引用是( C )。 A、(*p).data.a B、p->data.a C、(*p).a D、p.data.a 9.设有如下定义:

struck sk

{ int a;

float b; }data; int *p;

若要使P指向data中的a域,正确的赋值语句是 C A) p=&a;

B) p=data.a; C) p=&data.a;

D)*p=data.a;

10.设有以下说明语句:

typedef struct stu { int a; float b; } stutype;

则下面叙述中错误的是( D )。 A、struct是结构类型的关键字

B、struct stu是用户定义的结构类型 C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

八.指针

1. 语句int *p;说明了 C 。 A)p是指向一维数组的指针

B)p是指向函数的指针,该函数返回一int型数据 C)p是指向int型数据的指针

D)p是函数名,该函数返回一指向int型数据的指针 2. 变量的指针,其含义是指该变量的:( B )

A. 值 B. 地址 C. 名 D.一个标志

17

3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是

( A )

A) pb=&x B) pb=x C) *pb=&x D) *pb=*x 4、已知:int a, *p=&a; 则下列函数调用中错误的是( D )。 A、scanf(“%d”,&a); B、scanf(“%d”,p); C、printf(“%d”,a); D、printf(“%d”,p); 5.对于同类型的指针变量,不可能进行的运算是( C )。

A.- B.= C.+ D.== 6. 对于基类型相同的两个指针变量之间,不能进行的运算是 C

A) < B) = C) + D) - 7.下列不正确的定义是( A )。

A. int *p=&i,i; B.int *p,i; C.int i,*p=&i; D.int i,*p;

8. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( D )

A)p=q B)*p=*q C)n=*q D)p=n 9. int *p,a=10,b=1; p=&a; a=*p+b;

执行该程序段后,a的值为 C

A) 编译出错 B) 10 C) 11 D) 12

A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;

11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )。 A.a[p] B.p[a] C.*(p+2) D.p+2 12. 若指针变量p指向整型数组a[10]的首地址, 即p=a ; 则下列数组元素a[i](0

A. p+i B.&( a+i) C. *(a+i) D. *(p+i*2) 13. 有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a; 则数值为9的表达式是 B

A) *P+9 B) *(P+8) C) *P+=9 D) P+8 14.若有以下定义,则不能表示a数组元素的表达式是( B )。 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

A.*p B.a[10] C.*a D.a[p-a]

*15.已知int a[5],*p=a;下面的叙述中正确的是 A 。

A) p+1与a+1等价 B) p[1]与*p等价

18

10.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。

C) *(p+1)与a+1等价 D) p[1]与a++等价

16. 若有以下说明:

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为4的表达式是( C )

A) *p+4 B) *(p+4) C) *(p+3) D) p+3 17. 下面程序的输出结果是 C

A) 0

B) 1 C) 2 D) 输出错误

main()

{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; p=a;

printf(“%d\\n”,*p+1); }

18. 执行语句 char c[10]={ ”abcd”},*pc=c; 后,*(pc+4)的值是( B )

A) “abcd” B)’\\0’ C) ‘d’ D) 不确定 19.下列函数的功能是 A 。 void fun(int *p1,int *p2)

{ int p;

p=*p1;*p1=*p2;*p2=p; }

A) 交换*p1和*p2的值 B) 语法正确,但无法交换*p1和*p2的值 C) 交换*p1和*p2的地址 D)有语法错误 *20. 有如下程序

main()

{ char s[]=“ABCD”, *P;

for(p=s+1; p

A) ABCD B) A C) B D) BCD BCD B C CD CD C D D D D

*21. 请读程序,输出结果为: ( A ) #include

19

int a[]={2,4,6,8}; main() { int i,b[4]; int *p=a;

for(i=0;i<4;i++) {b[i]=*p;p++;} printf(\}

A) 6 B) 8 C) 4 D) 2

*22.内存空间被分成不同区域,其中用函数void* malloc(unsigned int size); 申请的内存在 C 分配。

A) 程序区 B)静态存储区 C)动态存储区

九、字符串

1. 在C语言中,以 D 作为字符串结束标志

A)’\\n’ B)’ ’ C) ’0’ D)’\\0’ 2.下列数据中属于“字符串常量”的是( A )。

A.“a” B.{ABC} C.‘abc\\0’ D.‘a’ 3.字符串 “ABCD”在内存占用的字节数是( D )。 A.4 B.6 C.1 D.5 4. 下面不正确的字符串常量是:( A )

A. ‘PROGRAM’ B “12’12” C “0” D “ ”

5.设有数组定义: char array [ ]=\则数组array所占的空间为 B

A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节

*6.下述对C语言中字符数组的描述错误的是 C 。

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入和输出

C)可在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)可在对字符数组定义时通过赋值运算符“=”对字符数组整体初始化

7.已知char x[]=\则关于两个数组长

度的正确描述是 B .

A)相同 B)x大于y C)x小于y D)以上答案都不对

8.给出以下定义:

char x[ ]=\

char y[ ]={'a','b','c','d','e','f','g'};

20