当前位置:文档之家› C语言选择题复习精选.

C语言选择题复习精选.

选择题复习1.表达式“(a=4*5, b=a*2), b-a, a+=2”的值是(C)。

A.2 B.20 C.22 D.422.以下是一个自定义函数的头部,其中正确的是(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 <math.h>int y;main( ){ int a=1;fun(a);}int fun(int x){_______; /*int型变量声明语句位置*/… /*若干执行语句*/}A.x B.y C.fabs D.fun7.如有语句“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 ",*(*(a+1)+2)) B.printf("%d ",*(&a[2][0]-1));C.printf("%d ",*(a[1]+2)); D.printf("%d ",*(a+1)[2]);9.已知有声明语句int x=8,则下列表达式中,值为2的是(B )。

A.x+=x-=x B.x% = x-2 C.x>8?x=0:x++ D.x/= x + x10.以下关于函数的叙述中正确的是(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]=012.若有声明语句“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("%d",*(p+i));B.for(p=a;p<a+5;p++)printf("%d", *p);C.for(p=a, i=0;p<a+5;p++, i++)printf("%d", p[i]);D.for(p=a;p<a+5;p++)printf("%d", p[0]);14.已知某程序如下:float p=1.5;#define p 2.5main( ){printf("%f", p);}则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.S16.逻辑“异或”运算可描述为“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]=018.若有声明: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<stdio.h>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函数的形式参数不能取名为a22.以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是(D )。

A.& B.++ C.! D.*23.已知有声明“int good=l; ”,若要使得表达式“p="good"+good”无语法错误(包括警告错误),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.++aC.&a[0]+1D.a+l27.以下关于语句的说法中正确的是(A )。

A.do-while语句的循环体至少会被执行1次B.while语句的循环体至少会被执行1次C.for语句的循环体至少会被执行1次D.在C语言中只能用do、do-while或for语句实现循环结构28.已知函数f的定义如下:void f(void){printf("That’s great! ");}则调用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("%d",a);}main( ){int e=1;d(e);}A.f B.e C.d D.b30、以下语句中不包含关键字的是(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*2B.x+=x*=XC.(x+7)/2*((x+1)%2+1)D.x*7.2/x+133、执行以下程序时,#include<stdio.h>main(){ int a; float b;scanf("%3d%f",&a,&b);printf("%d\t%f",ab);}若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中( 代表“空格”键,<CR>代表“回车”键),不能达到该要求的输入数据是(C )。

A.45 678<CR>B.45<CR>678<CR>C.45,678<CR>D.045678<CR>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<y){a=y;b=x;}35.已知函数fun的定义如下:void fun(int x[], int y){ int k;for(k=0;k<y;k++)x[k]+=y;}若main函数中有声明int a[10]={10}及调用fun函数的语句,则正确的fun函数调用形式是(C )。

相关主题