C语言选择题复习精选

2019-05-26 17:22

选择题复习

1.表达式“(a=4*5, b=a*2), b-a, a+=2”的值是(C)。 A.2 B.20 C.22 D.42 2.以下是一个自定义函数的头部,其中正确的是(C )。 A.int fun(int a[ ], b) B.int fun(int a[ ], int a) C.int fun(int*a, int b) D.int fun(char a[ ][ ], int b) 3.以下数组声明语句中正确的是(D )。 A.int n, a[n]; B.int a[ ]; C.int a[2][3]={{l},{2},{3}}; D.int a[ ][3]={{l},{2},{3}};

4.已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70 000正确地 保存在一个变量a中,该变量声明语句应当是(B )。 A.int a; B.long int a; C.unsigned int a; D.unsigned int a; 5.以下声明语句中,用于声明一个行指针变量的是(C )。 A.int *p(int); B.int *p; C.int (*p)[3]; D.int (*p)(int);

6.在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中(A )不能用做该变量的名字。

#include int y; main( ) { int a=1; fun(a); }

int fun(int x)

{_______; /*int型变量声明语句位置*/ … /*若干执行语句*/ } A.x B.y C.fabs D.fun

7.如有语句“int x,y=0,z,*p[3]; p[0]=&x; p[1]=&y; p[2]=&z;”,以下表达式中有语法错误的是(B )。

A.y++ B.p++ C.*++p[0] D.(*p[0])++

8.设有声明语句“int a[3][3]={1,2,3,4,5,6,7,8,9};”,以下语句中除(D )外均能输出a[1][2]的值。

A.printf(\%d \ B.printf(\&a[2][0]-1)); C.printf(\ D.printf(\9.已知有声明语句int x=8,则下列表达式中,值为2的是(B )。 A.x+=x-=x B.x% = x-2 C.x>8?x=0:x++ D.x/= x + x 10.以下关于函数的叙述中正确的是(D )。

A.在函数体中可以直接引用另一个函数中声明为static类别的局部变量的值 B.在函数体中至少必须有一个return语句 C.在函数体中可以定义另一个函数 D.在函数体中可以调用函数自身

11.若有声明语句“int a[10], b[3][3];”,则以下对数组元素赋值的操作中,不会出现越界访问的是(D )。 A.a[-1]=0 B.a[10]=0 C.b[3][0]=0 D.b[0][2]=0

12.若有声明语句“char ch=?a?, *pc=&ch;”,以下语句中有语法错误的是(C )。 A.(*pc)++; B.ch+= -?a? + ?A?; C.toupper(ch)=ch; D.ch++;

13.已知有声明语句“int a[5]={1, 2, 3, 4, 5}, *p, i;”,以下语句中(C )不能正确输出a数组全部元素的值。

A.for(p=a, i=0;i<5;i++)printf(\ B.for(p=a;p

C.for(p=a, i=0;p

main( )

{printf(\

则main函数中标识符p代表的操作数是(D )。 A.float型变量 B.double型变量 C.float型常量 D.double型常量

15.已有声明“int S[2][3]”,以下选项中(A )正确地引用了数组S中的基本元素。 A.S[1>2][!1] B.S[2][0] C.S[1] D.S

16.逻辑“异或”运算可描述为“a xor b”,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中(D )可以正确表示逻辑“异或”运算。 A.a || b B.a && b C.(a&&b)&&!(a || b) D.(a || b)&&!(a&&b) 17.若有声明“int a[5],*b=a,(*c)[3],*d[3];”,则在以下表达式中有语法错误的是(C )。 A.a[0]=0 B.b[0]=0 C.c[0]=0 D.d[0]=0 18.若有声明: int k, a, b;

unsigned long y=5; double x=1.23;

则以下表达式中正确的是(D )。 A.x%(-5) B.x=y[6] C.k=(a=1,b=2,&a + &b) D.a+=a- = (b=2) * (a = 3) 19.一个用C语言编写的源程序中,(A )是必不可少的。 A.取名为main的函数定义 B.#include C.变量声明 D.注释 20.以下声明中正确的是(D )。 A.int n=2, a[n]={10}; B.int n=10, *p[2]=&n; C.int n=10, a[2]={n}; D.int a[2][2]={10}, (*p)[2]=a+1; 21、若有函数fun的定义为 void fun(…)

{static int a=1; … }

则下列叙述中不正确的是(B )。

A.在每次调用fun函数时,变量a的值是上次调用结束时a的值

B.在fun函数之外,可以用变量名a直接引用a的值 C.在其他函数中,可以出现声明double a=2.5; D.fun函数的形式参数不能取名为a 22.以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是(D )。

A.& B.++ C.! D.* 23.已知有声明“int good=l; ”,若要使得表达式“p=\无语法错误(包括警告错误),p应当声明为(B )。 A.char p; B.char*p; C.int p; D.int *p; 24.以下全局变量声明中正确的是(D )。

A.auto int i=1; B.float a=1, b=0.5, c=a+b; C.char for=1; D.static char ch; 25.若已有声明“double a[2][3]={1, 2, 3, 4, 5, 6};”,则下列表达式中不能正确引用a[1][1]值的是(C )。

A.*(a[0]+4) B.*(a[1]+1) C.*(*(a+3)+1) D.*(*a+4)

26、已有声明“int a[5];”,以下表达式中不能正确取得a[1]指针的是(B )。

A.&a[1] B.++a C.&a[0]+1 D.a+l

27.以下关于语句的说法中正确的是(A )。 A.do-while语句的循环体至少会被执行1次 B.while语句的循环体至少会被执行1次 C.for语句的循环体至少会被执行1次

D.在C语言中只能用do、do-while或for语句实现循环结构 28.已知函数f的定义如下: void f(void)

{printf(\

则调用f函数的正确形式是(B )。

A.f; B.f(); C.f(void); D.f(1); 29.以下程序在编译时在第三行报错“Redeclaration of ?a?in function d”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是(A )。 int b;

void d(int a)

{ int f; double a=1; printf(\

}

main( )

{int e=1;d(e);}

A.f B.e C.d D.b 30、以下语句中不包含关键字的是(A )。 A.x=sqrt(2);

B.while(x!=0)x--; C.if(x<0)x=-x; D.return x;

31.在main函数体内部和外部均允许出现的实体是(B )。 A.预处理命令 B.语句

C.另一函数的定义 D.函数形式参数声明

32、已知有声明int x=2:,以下表达式中值不等于8的是(D )。 A.x+=2,x*2 B.x+=x*=X

C.(x+7)/2*((x+1)%2+1) D.x*7.2/x+1

33、执行以下程序时, #include main()

{ int a; float b;

scanf(\ }

若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(?代表“空格”键,代表“回车”键),不能达到该要求的输入数据是(C )。 A.45?678 B.45678 C.45,678 D.045678

34.下列程序段中,能将变量x、y中值较大的数保存到变量a、值较小的数保存到变量b的程序段是(C )。

A.if(x>y)a=x;b=y;else a=y;b=x; B.if(x>y){a=x;b=y;}else a=y;b=x; C.if(x>y){a=x;b=y;}else{a=y;b=x;}

D.if(x>y){a=x;b=y;}else(x

for(k=0;k

若main函数中有声明int a[10]={10}及调用fun函数的语句,则正确的fun函数调用形式是(C )。

A.fun(a[ ],a[0]); B.fun(a[0],a[0]);

C.fun(&a[0],a[0]); D.fun(a[0],&a[0]); 36.设有下列程序段: static char b=2;

void Y ( )

{ static float d=4;……} int a=1; void X ( )

{ int c=3;……}

关于程序段中各变量的属性,以下叙述中错误的是(D )。 A.a是全局变量,函数X可以访问,函数Y不能访问 B.b是全局变量,函数X和函数Y都可以访问 C.c是动态变量,函数X可访问,函数Y不可访问 D.d是静态变量,函数X和函数Y都可以访问 37、若有如下声明和语句: int t[3][3], *pt[3], k;

for(k=0; k<3;k++) pt[k]=&t[k][0];

则表达式*(*(pt+1)+2)所引用的是(C )。 A.t[2][0] B.&t[2][0] C.t[1][2] D.&t[1][2]

38.设有声明float a=1.23456; int i;,欲将a中的数值保留小数点后两位,第三位进行四舍五入运算,能实现该功能的表达式是(A )。 A.i=a*100+0.5, a=i/100.0 B.a=(a*100+0.5)/100.0 C.a=((int)a*100+0.5)/l00.0 D.a=(a/100+0.5)/100.0 39.若已有声明“int x=4, y=3;”,则表达式x < y ? x++: y++的值是(B )。

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

40.设有变量声明“char c;”, 执行“for (; c=(getchar( ) !=?\\n?) ; )printf(\时,从键盘上输入“ABCDEFG↙”之后,输出的结果是(C )。

A.ABCDEFG B.AABBCCDDEEFFGG C.非字母数字字符 D.语句不能执行 41.以下表示数学式“a

A.a=b)&&!(b>=c) D.!(a>=b||b>=c) 42.下面关于循环语句for、while、do_while的叙述中,正确的是(D )。 A.三种循环语句的循环体都必须放入一对花括号中 B.三种循环语句中都可以缺省循环终止条件表达式 C.三种循环语句的循环体都至少被无条件地执行一次 D.三种循环语句都可能出现无穷循环

43、若有声明“int a[]={l, 2, 3, 4}, *p, i;”,则以下程序段中不能输出13的是(B )。

A.for(i=0;i<4;i+=2)printf(\%d\B.for(p=0;p<4;p+=2)printf(\%d\C.for(p=a;p

A.main函数必须出现在其他函数之前 B.main函数中至少必须有一条语句


C语言选择题复习精选.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:国际贸易实务习题集(6)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: