C语言-基本选择题及答案_第1页
C语言-基本选择题及答案_第2页
C语言-基本选择题及答案_第3页
C语言-基本选择题及答案_第4页
C语言-基本选择题及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机程序设计基础(C语言)

单项选择练习题

说明:带*号的对非信息学院的同学不作要求。

一、基本概念

1.c语言程序是由(、构成的。

A)一些可执行语言B)main函数C)函数D)包含文件中的第一个函数

2.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程

3.C语言程序从(,起先执行。

A)程序中第一条可执行语句B)程序中第一个函数

0程序中的main函数D)包含文件中的第一个

函数

4.C语言程序从main:)函数起先执行,所以这个函数要写在——

A)程序文件的起先B)程序文件的最终

0它所调用的函数的前面D)程序文件的任何位置

5、以下说法中正确的是(C)0

A、C语言程序总是从第一个定义的函数起先执行

B、在C语言程序中,要调用的函数必需在main()函数中定义

C、C语言程序总是从main()函数起先执行

D、C语言程序中的niain()函数必需放在程序的起先部分

6.下列方法中错误的是(D)。

A.主函数可以分为两个部分:主函数说明部分和主函数体。

B.主函数可以调用任何非主函数的其它函数。

C.任何非主函数可以调用其它任何非主函数。

D.程序可以从任何非主函数起先执行。

7.下列说法错误的是:(B)

A.C程序运行步骤是编辑、编译、连接、执行。

B.C语言的变量名必需用小写,常量用大写。

C.C语言的三种基本结构是依次、选择、循环。

D.C程序确定由函数构成的。

8.下列关于C语言的说法错误的是(B)

A)C程序的工作过程是编辑、编译、连接、运行

B)C语言不区分大小写。

0C程序的三种基本结构是依次、选择、循环

D)C程序从main函数起先执行

9.系统默认的C语言源程序扩展名为.C,需经过」之后,生成.exe文件,

才能运行。

A)编辑、编译B)编辑、连接C)编译、连接D)编辑、改错

*10.下列说法中正确的是(B)。

A.由于C源程序是高级语言程序,因此确定要在TC软件中输入。

B.由于C源程序是由字符流组成的,因此可以作为文本文件在任何文本编辑

的软件中输入。

C.由于C程序是高级语言程序,因此输入后即可执行。

D.由于C程序是高级语言程序,因此它是由叮嘱组成的。

二、数据类型、运算符与表达式

1.不是C语言供应的合法关键字是(B)。

A.switchB.cherC.caseD.default

*2.C语言供应的合法关键字是(D)。

A.nextB.stringC.docaseD.struct

*3.下列不属于C语言中关键字的是

A)1ongB)printC)defaultD)typedef

4.下列正确的标识符是(C)o

A.-alB.a[i]C.a2_iD.intt

5.下列C语言用户标设符中合法的是(B)o

A、*yB、sumC、intD>%5f

6.下面四个选项中,合法的标识符是:(D)

A.autoB.defineC.6aD.c

7.下列C语言用户标设符中合法的是(B)0

A)3axB)xC)caseD)-e2E)union

8.以下选项中合法的用户标识符是」

A)longB)_2TestC)3DmaxD)A.dat

9.下列四组选项中,正确的C语言标识符是(C)。

A)%xB)a+bC)al23D)123

10.请选出可用作C语言用户标识符的一组标识符(B)

A)voidB)a3_b3C)ForD)2a

define123-abcDO

WORDsumCasesizeof

11、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print_3ddb8aBcB、I\amone_halfstart$it3pai

C、str_lCpppowwhileD、PxqMy->bookline#His.age

12.下列C语言标识符中合法的变量名是」o

A)2e3B)youC)*yD)float

13.C语言中的简洁数据类型包括(D)o

A、整型、实型、逻辑型B、整型、实型、逻辑型、字符型

C、整型、字符型、逻辑型D、整型、实型、字符型

14、下列可以正确表示字符型常量的是(A)0

A、'\t,B、"a“C、"\n”D、297

15.下列表达式中,[)是正确的C语言字符常量。

A)"x"B;e3C)"COMPUTER"D)'#'

16.在下列表达式中,属于字符型常量的是B.

A)AB)'a'C)〃A〃D)b

17.以下选项中合法的字符常量是(B)

A)"B"B)''n'C)'68'D)E

18.下面字符常量表示错误的是(D)

A)7B”?,C”\n,D)”\rT

19.已定义c为字符型变量,则下列语句中正确的是(C)

A)c='97'B)c二〃97〃C)c='a'D)

20.已知ch是字符型变量,不正确的赋值语句是(A)

A)ch='a+b,;B)ch='\0;

C)ch=’7';D)ch=,;';

21.C语言中字符型(char)数据在内存中的存储的是(D)

A)原码B)补码C)反码D)ASCH码

22.在C语言中,字符型数据所占的内存空间是:C)

A)2个字节B)4字节C)1字节D)由用户自定义

*23.若int类型数据占2个字节,则unsignedint类型数据的取值范围是

(B)

A)0〜255B)0-65535C)-32768〜32767D)-256-255

木24.若有以下类型说明语句:chara;intb;floatu;doubled;则表达式

a*b+d-c的结果类型为(D)

A)floatB)charC)intD)double

*25.若有以下类型说明语句:charw;intx;floaty;doublez;则表达式w-x*y/z的结

果为(D)类型,表达式(int)(x+y-z*w)的结果为(C)类型。

A)floatB)charC)intD)double

26.C语言中运算对象必需是整型的运算符是(A)

A)%-B)/C)=D)<=

27.在C语言程序中,表达式8/5的结果是(B)

A)1.6B)103D)0

28.设x为int型变量,则执行以下语句后,x的值为」—

x=10;x+=x;

A)10B)20C)40D)30

31.在C语言程序中,表达式5%2的结果是」。

A)2.5BJ2C)1D)3

32.假如inta=3,b=4;则条件表达式〃水b?a:b〃的值是一A0

A)3B)4C)0D)1

33.若intx=2,y=3,z=4则表达式x〈z?y:z的结果是(B).

A)4B)302D)0E)1

34.C语言中,关系表达式和逻辑表达式的值是(B)。

A)0B)0或1C)1D)T或‘F'

35.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中,值为0的

表达式是(D)

A、'a'&&'b'B、a<=b

C、a||b+c&ab-cD、!((a<b)&&!c||1)

37.下面(D)表达式的值为4.

A)11/3B)11.0/3

C)(float)11/3D)(int)(11.0/3+0.5)

*39.已知intx=5,y=5,z=5;执行语句斓二y+z;后,x的值是(C)

A.0B.1C.5D.6

40.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句

c2='A'+'6'」3';后,c2中的值为(B)

A)68BJDC)错误D)d

41.下列关于C语言的叙述错误的是(A)

A)大写字母和小写字母的意义相同

B)不同类型的变量可以在一个表达式中

0在赋值表达式中等号(二)左边的变量和右边的值可以是不同类型

D)同一个运算符号在不同的场合可以有不同的含义

42.有:intx=:2,y=3,叫执行下面语句后田的结果是(C)

m=(w<x)?w:x;

m=(m<y)?m:y;

A.1B.2C.3D.以上结果都不对

43.有:intw=7,x=12,y=3,m;执行下面语句后m的值是(A)

m=(w>x)?w:x:

(m>y)?m:y:

A.12B.0C.3D.1

45.设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0.51勺是

(B)

A.b=l.0/aB.b=(float)(1/a)

C.b=l/(float)aD.b=l/(a*l.0)

48.以下运算符中优先级最高的运算符是(B)

A)&&B)++C+=D)!=

49.若“intn;floatf=13.8;”,则执行"n=(int)f%3”后,n的值是(A)

A.1B.4C.4.333333D.4.6

52.设x为int型变量,则执行以下语句后,x的值为(C)

x=10;x*二x;

A)10B)20C)100D)0

53.若有语句inta=l,b;doubley=2.3;b=(int)y;则b的值为(B)o

A)3B)2C)1D)2.3

54.己知intx;chary;则下面错误的scanf函数调用语句为(B)

A)scanf("%d,%d,,&x,&y);B)scanf("%d,%c”,x,y)

C)scanf(%d/d”,&x,&y)D)scanf(“/d,%c”,&x,&y)

57.在C语言的库函数中,可以输出char型变量x值的语句是.C。

A)getchar(x);B)fputc(x)Oputchar(x)D)puts(x)

60.以下说法正确的是(0)

A)'x'+5是一个错误的表达式

B)C语言不允许类型的混合运算

O强制类型转换时,类型说明符必需加括号

D)(int)x+y和(int)(x+y)是完全等价的表达式

61.设intx=0,y=l:表达式(x||y)的值是(B)

A)0B)1C)2D)-1

三、选择结构

1.在C语言中,认为:D)为逻辑〃真〃

A)trueB)大于0的数C)非0整数D)非0的数

2.表示关系x<=y<=z的c语言表达式为

A)(x<=y)&&(y<=z)B)(x<=y)AND(y<=z)

0(x<=y<=z)D)(x<=y)&(y<=z)

3.能正确表示逻辑关系:“a2=10或aWO”的C语言表达式是(D)

A)a>=10ora<=0B)a>=0a<=10

C)a〉=10&&a〈=0D)a>=10IIa<=0

4、推断char型变量cl是否为大写字母的表达式为(D)。

A、‘A'<=cl<=fZ'B、(cl>=,A')&(cl<='Z')

C、('A'<=cl)AND(2>=cl)D、cl>=,A'&&cl<='V

5.为表示逻辑表达式79<X<90,应运用的C语言表达式是」o

A)(X>79)&&(X<90)B)(X>79)!=(X<90)

C)79<X<90D)(X>79)|(X<90)

6.设有语句“inta=2,b=3,c=-2,d=2;”,则逻辑表达式“a设&&b&句<0&&d>0”的

值是(A)

A.1B.0C.-1D.出错

7.设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是

(A)。

A.10<a<15B.a==l11|a-121|a==13||a==14

C.a>10&&a<15D.!(a<=10)&&!(a>=15;

8.设x,t均为int型变量,则执行语句“x=10;t=x&&x〉10;“后,t的值为(D)

A.不定值B.10C.1D.O

9.若inti=10;执行下列程序后,变量i的正确结果是(A)0

switch(i)

{case9:i+=l;

case10:i+=l;

case11:i+=l;

default:i+=l;}

A、13B、12C、11D、10

10.在下面的条件语句中(其中si和s2表示是C语言的语句),只有一个在功

能上与其它三个语句不等价,它是(D)。

A、if(a)si;elses2;B、if(a==0)s2;elsesi;

C、if(a!=0)si;elses2;D、if;a==0)si;elses2;

11.假定全部变量均己正确定义,则下列程序段运行后y的值是(A)

inta=0,y=10;

if(a=0)y-;

elseif(a>0)y+-;

elsey+=y;

A.20B.11C.9D.0

12.假定全部变量均已正确定义,则下列程序段运行后x的值是(B)0

a=b=c=0;x=35;

if(!a)x-;

elseif(b);

if(c)x=3;

elsex=4;

A.34B.4C.35D.3

13.C语言对嵌套if语句的规定是:else语句总是与(D)配对。

A)其之前最近的ifB)第一个if

O缩进位置相同的ifD)其之前最近的且尚未配对的if

14.在C语言语句中,用来确定分支流程的表达式是(A)o

A.可用随意表达式B.只能用逻辑表达式或关系表达式

C.只能用逻辑表达式D.只能用关系表达式

15.C语言中用(B)表示逻辑“真:

A.trueB.整数值1

C.非零整数值D.false

16、若k是int型变量,且有下面的程序段:

intk;

k=-3;

if(k<=0)printf("####");

elseprintf("&&&&");

上面程序段的输出结果是(A)

A、##时B、&&&&

C、####&&&&D、有语法错误,无输出结果

17.main()

{intx=0,a=0,b=0;

switch(x){

case0:b++;

case1:a++;

case2:a++;b++;)

printf("a=%d,b=%d\nw,a,b);}

该程序的输出结果是」

A)a=2,b=lB)a=l,b=lC)a=l,b=0D)a=2,b=2

18.以下程序的输出结果是:(C)

main()

{intx=-10,y=1,z=l;

if(x<y)

if(y<0)z=0;

elsez=z+l;

printf("%d\n",z);

}

A.0B.1C.2D.3

19.以下程序段的输出结果是(B)

inta=10,b=50,c=30;

if(a>b)

a=b;

b二c;

c=a;

printf("a=%2db=%2dc=%2d\n〃,a,b,c);

A)a=10b=50c=10B)a=10b=30c=10

C)a=50b=30c=10D)a=50b=30c=50

四、循环结构

*1.在C语言中,下列说法中正确的是(D)0

A)do-while语句构成的循环不能用其它语句构成的循环来代替。

B)do-while语句构成的循环只能用break语句退出。

0do-while语句构成的循环在while后的表达式非零时结束循环。

D)do-while语句构成的循环,在while后的表达式为零时结束循环。

2.break语句不能出现在(D)语句中

A.switchB.forC.whileD.if…else

*3.对于break语句和continue语句的说法错误的是(B)

A)break语句不能用于循环语句和switch语句之外的任何其他语句中。

B)break和continue也可以用于if语句中

0continue语句只结束本次循环,而不是终止整个循环的执行。

D)break语句是结束整个循环过程,不再推断执行循环的条件是否成立。

4.语句while(!y);中的表达式!y等价于A

A)y==OB)y!=1C)y=!OD;y==l

5.若有“inta=l,x=l;",则循环语句“while(aGO)x++;a++;”的循环执行(A)

A.无限次B.不确定次C.10次D.9次

6.有以下程序段

intk=0

while(k)k++;

则while循环体执行的次数是£—

A)无限次B)有语法错,不能执行

0一次也不执行D)执行1次

7.下列循环语句中有语法错误的是(D)

Awhile(x=y)5;Bwhile(0);

Cdo2;while(x==b);Ddox++while(x==10);

*8.当运行时输入:abcdSabcdel^,下面程序的运行结果是B

#include<stdio.h>

main()

{while(putchar(gctchar())!='$');

printf(〃end〃);

)

A)abcd$abcdeB)abcd$endC)abcdendD)abcd$abcdeend

9.以下程序段(A)

x=-l;

do{x=x*x;}

while(x>0);

A.是死循环B.循环执行一次C.循环执行二次D.有语法错误

10.下面程序段执行后的结果为:(B)

intsum=0,n=10;

do{sum=sum-n;

n++;}

while(n<10)

printf(w%d,%dw,sum,n)

A.0,10B.10,11C.0,11D.以上结果都不对

11.对以下程序段的叙述正确的是A.

intx=l;

do

(X=-1*X;}

while(!x)

A)是死循环B)循环执行一次C)循环执行二次D)有语法错误

12.循环“for(i=0,x=:;i=10&&x〉0;i++);”的循环执行(A)。

A.无限次B.不确定次C.10次D.9次

13.执行语句{for(j=0:j<=3;j++)a=l;}后变量j的值是C.

A)OB)3C)4D)1

14.有如下程序

main()

{inti,sum=2;

for(i=l;i<=3;i+=2)sum+=i;

printf("%d\n”,sum);}

该程序的执行结果是」―

A)6B)3C)死循环D)4

*15、执行语句"for㈠=0;i++<3;);后,变量i的值为(C)。

A、2B、3C、4D、5

16.设x和y均为int型变量,则执行以下的循环后,y的值为(D)。

for(y=l,x=l;y<=50;y-+)

(

if(x>=0)break;

if(x%2==l){x+=5;continue;}

x-=3;

}

A.2B.4C.6D.1

五数组

1.以下对一维数组a的正确说明是:I)

A)chara(10);B)inta[];

C)intk=5,a[k];D)chara[3]={'a','b','c'};

2.以下能对一维数组a进行初始化的语句是:(C)

A.inta[5]=(0,1,2,3,4,)B.inta(5)=(}

C.inta[3]={0,1,2}D.inta{5}=(10*l)

3.在C语言中对一维整型数组的正确定义为Do

A)inta(10):B)intn=10,a[n];

C)intn;a[n];D)#defineN10

inta[N];

4、已知:inta[10]:则对a数组元素的正确弓;用是(D)。

A、a[10]B、a[3.5]C、a(5)D、a[0]

5.执行下面的程序段后,变量k中的值为」

A)不定值B)33C)30D)10

intk=3,s[2];

s[0]=k:k=s[0]*10;

*6.下列说法中错误的是C

A构成数组的全部元素的数据类型必需是相同的

B用指针法引用数组元素允许数组元素的下标越界

C一维数组元素的下标依次是1、2、3……

D定义数组时的长度可以是整型常量表达式

7.若有以下数组说明,则数值最大的和最小的元素下标分别是(B)0

inta[12]={l,2,3,4,5,6,7,8,9,10,11,12);

A.1,12B.0,11C.1,11D.0,12

8.若有以下数组说明,则i=10;a[a[i]]元素数值是(B

inta[12]={l,4,7,10,2,5,8,11,3,6,9,12);

A.10B.9C.6D.5

9.假定int类型变量占用两个字节,其有定义:intx[10]={0,2,4};,则数组

x在内存中所占字节数是」_

A)3B)6C)10D)20

IL若有说明:inta[][3]={{l,2,3},{4,5},{6,7}};则数组a的第一维的大小

为:(B)

A.2B.3C.4D.无确定值

12.以下定义语句中,错误的是(D)

A)inta[]={l,2};B)char*a;

C)chars[10]="test";D)intn=5,a[n];

13.下面程序段的输出结果是:(C)

inti;

intx[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i-+)

printf("%d〃,x[i][2-i]);

A)159B)1470357D)369

14.对二维数组的正确定义是(C)

A.inta[][]={1,2,3,4,5,6};B.inta[2][]={1,2,3,4,5,6};

C.inta[][3]={1,2,3,4,5,6};D.inta[2,3]={1,2,3,4,5,6);

15.已知inta[3][4];则对数组元素引用正确的是£

A)a[2][4]B)a[l,3]C)a[2][0]D)a(2)(1)

六、函数

1.C语言中函数返回值的类型是由A确定的.

A)函数定义时指定的类型B)return语句中的表达式类型

0调用该函数时的实参的数据类型D)形参的数据类型

2.在C语言中,函数的数据类型是指(A)

A函数返回值的数据类型B.函数形参的数据类型

C调用该函数时的实参的数据类型D.随意指定的数据类型

*3.C程序中函数返回值的类型是由」确定的.

A)函数定义时指定的函数类型B)函数中运用的最终一个变量的类型

C)调用函数时临时确定D)调用该函数的主调函数类型

*4.C语言规定,简洁变量做实参时,它和对应形参之间的数据传递方式为

(B)

A.由系统选择B.单向值传递C.由用户指定传递方式D.地址传递

5.在函数调用时,以下说法正确的是(B)

A.函数调用后必需带回返回值

B.实际参数和形式参数可以同名

C.函数间的数据传递不行以运用全局变量

D.主调函数和被调函数总是在同一-个文件里

*6.在C语言程序中,有关函数的定义正确的是:B)0

A.函数的定义可以嵌套,但函数的调用不行以嵌套

B.函数的定义不行以嵌套,但函数的调用可以嵌套

C.函数的定义和函数的调用均不行以嵌套

D.函数的定义和函数的均可以嵌套

*7.以下对C语言函数的有关描述中,正确的是;A)0

A.在C语言程序中,调用函数时,如函数参数是简洁变量,则只能把实参的

值传递给形参,形参的值不能传送给实参

B.C语言函数既可以嵌套定义又可递归调用

C.C语言函数必需有返回值,否则不能运用函数

D.在C语言程序中有调用关系的全部函数必需放在同一个源程序文件中

*8.C语言中对函数的描述正确的是C.

A)可以嵌套调用,不行以递归调用B)可以嵌套定义

C)嵌套调用,递归调用均可D)不行以嵌套调用

9.以下叙述中正确的是」

A)构成C程序的基本单位是函数

B)可以在一个函数中定义另一个函数

C)main。函数必需放在其它函数之前

D)全部被调用的函数确定要在调用之前进行定义

10.用数组名作为函数调用时的实参时,传递给形参的是2°

A)数组首地址B)数组第一个元素的值

C)数组全部元素的值D)数组元素的个数

11.有一函数的定义如:voidfun(char*s){……},则不正确的函数调用是(D)。

A.main()

{chara[20]="abcdefgh";

fun(a);

B.main()

{chara[20]=wabcdefghn;

fun(&a[0]);

}

C.main()

{chara[20]="abcdefghw;

char*p=a;fun(p);

D.main()

{chara[20]="abcdefgh

fun(a[]);

}

13、函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能

正确执行此功能的函数是(D)0

A、funa(int*x,int*y)B.funb(intx,inty)

{int*p;{intt;

t=x;x=y;y=t;

*p二*x;*x=*y;*y=*p;

Cfunc(int*x,int*y)D、fund(int*x,int*y)

{int*p;{intt;

p二x;x二y;y=p;t=*x;*x=*y;*y=t;

1

14.有如下程序

intfunc(inta,intb)

{return(a+b);}

main()

{intx=2,尸x,z=8,r;

r=func(func(x,y),func(y,z));

printf(,r);}

该程序的输出的结果是」—

A)12B)13C)14D)15

*15.以下程序的输出结果是」

inta,b;

voidfun()

{a=100;b=200;}

main()

{inta=100,b=100;

fun();

printfC%d%d\n”,a,b);

)

A)100200B)100100C)202300D)202300

*16.下列说法中正确的是:(A)

A.局部变量在确定范围内有效,且可与该范围外的变量同名。

B.假如一个源文件中,全局变量与局部变量同名,则在局部变量范围内,

局部变量不起作用。

C.局部变量缺省状况下都是静态变量。

D.函数体内的局部静态变量,在函数体外乜有效。

17.在C语言中,表示静态存储类别的关键字是:(C)

A)auluB)registerC)sialicD)exteni

18.未指定存储类别的变量,其隐含的存储类别为(A)o

A)autoB)staticC)externD)register

七、结构体

1.若有以下说明语句:

structstudent

{intnum;

charname[];

floatscore;

}stu;

则下面的叙述不正确的是:(D)

A.struct是结构体类型的关键字

B.structstudent是用户定义的结构体类型

C.num,score都是结构体成员名

D.stu是用户定义的结构体类型名

2.若有以下说明语句:

structdate

{intyear;

intmonth;

intday;

}brithday;

则下面的叙述不正确的是.

A)struct是声明结构体类型时用的关键字

B)structdate是用户定义的结构体类型名

0brithday是用户定义的结构体类型名

D)year,day都是结构体成员名

*3.已知:(设整型2字节,字符型1字节,浮点型4字节)

struct

{inti;

charc;

floata;

}test;

则sizcof(test)的值是D。

A)4B)5C)6D)7

4.以下对结构变量stul中成员age的非法引用是B

structstudent

{intage;

intnum;

}stul,*p;

p=&stul;

A)stul.ageB)student,ageC)p->agcD)(*p).age

*5.有如下定义

structperson{charname[9];intage;);

structpersonclass[10]={"Tom”,17,“John”,19,

“Susan”,18,“Adam”,16,};

依据上述定义,能输出字母A的语句是(B)

A)printf(u%c\nv,class[3].name);

B)printf(a%c\n,?,class[3].name[0]);

C)printf(u%c\n>,,class[3].name[l]);

D)printf(a%c\nw,class[2].name[3]);

6.存放100个学生的数据、包括学号、姓名、成果。在如下的定义中,不正确的

是(B)。

A.structstudent

{intsno;

charname[20];

floatscore;}stu[100];

B.structstudentstu[100]

{intsno;

charname[20];

floatscore);

C.struct

{intsno;

charname[20];

floatscore:}stu[100];

D.structstudent

{intsno;

charname[20];

floatscore;};

structstudentstu[100];

*7.设有定义语句“struct{intx;inty;}d⑵={{1,3},{2,7}};”则

“printf(“机l\n",d[O].y/d[O].x*d[l].x)输出的是(D)。

A.0B.1C.3D.6

8.己知:structsk

{inta;

floatb;

}data,邛;

若有p=&data,则对data中的成员a的正确引用是(C)。

A、(*p).data,ap->data.aC、(*p).aD、p.data,a

9.设有如下定义:

strucksk

{inta;

floatb;

[data;

int*p;

若要使P指向dala中的a域,正确的赋值语句是

A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;

10.设有以下说明语句:

typedefstructstu

{inta;

floatb;

}stutype;

则下面叙述中错误的是(D)o

A、struct是结构类型的关键字

B、structstu是用户定义的结构类型

C、a和b都是结构成员名

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

八.指针

1.语句int*D;说明白C。

A)p是指向一维数组的指针

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

C)p是指向int型数据的指针

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

2.变量的指针,其含义是指该变量的:(B)

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

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

(A)

A)pb二&xB)pb=xC)*pb=&xD)*pb=*x

4、已知:inta,*p=&a;则下列函数调用中错误的是(D)。

A^scanf("%d",&a);B、scanf("%d",p);

C、printf(<<%dM,a);D、printf(<<%dv,p);

5.对于同类型的指针变量,不行能进行的运算是(C)0

A.-B.=C.+D.==

6.对于基类型相同的两个指针变量之间,不能进行的运算是_C_

A)<B)=C)+D)-

7.下列不正确的定义是(A)o

A.intB.int*p,i;

C.inti,*p=&i;D.inti,*p;

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

A)p=qB)*p二*qC)n=*qD)p=n

9.int*p,a=10,b=l;p=&a;a=*p+b;

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

A)编译出错B)10011D)12

10.有语句:int则」是对指针变量p的正确定义和初始化。

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

11.若有说明语句“inta[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<i<10)的表示方法中正确的是:(C)

A.p+iB.&(a+i)C.*(a+i)D.*(p+i*2)

13.有如下程序

inta[10]={l,2,3,4,5,6,7,8,9,10},*P=a;

则数值为9的表达式是」

A)*P+9B)*(P+8)C)*P+=9D)P+8

14.若有以下定义,则不能表示a数组元素的表达式是(B)。

inta[10]={l,2,3,4,5,6,7,8,9,10},*p=a;

A.*pB.a[10]C.*aD.a[p-a]

*15.已知inta[5],*[尸a;下面的叙述中正确的是A

A)pi1与a"等价B)p[l]与小p等价

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

16.若有以下说明:

inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;

则数值为4的表达式是(C)

A)*p+4B)*(p+4)C)*(p+3)D)p+3

17.下面程序的输出结果是C

A)0B)102D)输出错误

main()

{inta[]={l,2,3,4,5,6,7,8,9,0),*p;

p=a;

printfT%d\n",*p+l);

)

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

A)“abed"B)''0'C)dD)不确定

19.下列函数的功能是A。

voidfun(int*pl,int*p2)

{intp;

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

)

A)交换*pl和*p2的值B)语法正确,但无法交换*pl和*p2的值

C)交换*pl和*p2的地址D)有语法错误

*20.有如下程序

main()

chars[]="ABCD”,*P;

for(p=s+l;p<s+4;p++)printf("%s\n",p);)

该程序的输li!结果是」_

A)ABCDB)A0BD)BCD

BCDBCCD

CDCDD

DD

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

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti,b[4];

int*p=a;

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

printf(〃%d\n〃,b[2]):

)

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

*22.内存空间被分成不同区域,其中用函数void*malloc(unsignedintsize);

申请的内存在」支配。

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

九、字符串

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

A)''n'B)''C)'O'D)?\0f

2.下列数据中属于“字符串常量”的是(A)。

A."a”B.{ABC}C.<abc\0,D.'a'

3.字符串“ABCD”在内存占用的字节数是(D)o

A.4B.6C.1D.5

4.下面不正确的字符串常量是:(A)

A.4PROGRAMJB“12'12"C“0”D"”

5.设有数组定义:chararray[]=〃abcd〃;则数组array所占的空间为B

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

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

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

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

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

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

7.已知charx□二“hello”,y口={'h','e','a','b','e'};,则关于两个数组是

度的正确描述是B.

A)相同B)x大于yC)x小于yD)以上答案都不对

8.给出以下定义:

charx[]=〃abcdefg〃;

charyLa,b,c,d,e,t,g);

则正确的叙述为」

A)数组x利数组y等价B)数组x和数组y的长度相同

C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度

9、若有以下语句,则正确的描述是(D)0

staticcharx[]="12345”;

staticchary[]={T,'2',‘3,,'4',5','\0'};

A、x数组长度大于y数组长度B、x数组和y数组不相同

C、x数组长度小于y数组长度D、x数组等价于y数组

10^已知:chars[20]="programmingw,*ps=s;则不能引用字母o的表达式

是(C)。

A、ps⑵B、s[2]C、ps+2D、ps+=2,*ps

*11.推断两字符串si,s2是否相等,应运用(D).

A)if(sl=s2)B)if(sl=s2)

C)if(strcpy(sl.s2))D)if(strcmp(sl,s2)==0)

*12.以下printf语句的输出结果为:A

printf("%d\n",strlen("school"));

A)7B)6C)存在语法错误D)不定值

13.对字符数组s赋值,不合法的一个是(C)

A.chars□二〃Be:jing”;

B.chars[20]={"beijing”};

C.chars[20];s="Beijing”;

D.chars[20]={'B','e','i','j','i','n','g'};

14.对字符数组str赋初值,str不能作为字符串运用的一个是(D)

A.charstr口二〃shanghai”;

B.charstr口={"shanghai”};

C.charstr[9]='s,/h,「a,」n;,a,/i\,\0,};

D.charstr[8]={,s,,,h,,,a,,,n,,,g,,,h,,,a,,,i,};

15.合法的数组定义是一C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论