C语言期末考试复习题精选
二、C选择题1表达式“(a=4*5, b=a*2), b-a, a+=2”的值是( )。A2B20 C22D422以下是一个自定义函数的头部,其中正确的是( )。Aint fun(int a , b)Bint fun(int a , int a)Cint fun(int*a, int b)Dint fun(char a , int b)3以下数组声明语句中正确的是( )。Aint n, an;Bint a ;Cint a23=l,2,3;Dint a 3=l,2,3;4已知在某C语言编译系统中表达式sizeof(int)的值是2,如果希望将常量-70 000正确地 保存在一个变量a中,该变量声明语句应当是( )。Aint a;Blong int a;Cunsigned int a;Dunsigned int a;5以下声明语句中,用于声明一个行指针变量的是( )。Aint *p(int);Bint *p;Cint (*p)3;Dint (*p)(int);6在以下程序中,需要在fun函数中声明一个int型的变量,以下选项中( )不能用做该变量的名字。 #include <math.h> int y; main( ) int a=1; fun(a); int fun(int x) _; *int型变量声明语句位置* *若干执行语句* AxByCfabsDfun7如有语句“int x,y=0,z,*p3; p0=&x; p1=&y; p2=&z;”,以下表达式中有语法错误的是( )。Ay+Bp+C*+p0D(*p0)+8设有声明语句“int a33=1,2,3,4,5,6,7,8,9;”,以下语句中除( )外均能输出a12的值。Aprintf("d ",*(*(a+1)+2)Bprintf("%d ",*(a20-1);Cprintf("%d ",*(a1+2);Dprintf("%d ",*(a+1)2);9已知有声明语句int x=8,则下列表达式中,值为2的是( )。Ax+=x-=xBx% = x-2Cx>8?x=0:x+Dx= x + x10以下关于函数的叙述中正确的是( )。 A在函数体中可以o直接引用另一个函数中声明为static类别的局部变量的值 B在函数体中至少必须有一个return语句 C在函数体中可以定义另一个函数 D在函数体中可以调用函数自身11若有声明语句“int a10, b33;”,则以下对数组元素赋值的操作中,不会出现越界访问的是( )。Aa-1=0Ba10=0Cb30=0Db02=012若有声明语句“char ch=a, *pc=&ch;”,以下语句中有语法错误的是( )。A(*pc)+;Bch+= -a + A;Ctoupper(ch)=ch;Dch+;13已知有声明语句“int a5=1, 2, 3, 4, 5, *p, i;”,以下语句中( )不能正确输出a数组全部元素的值。 Afor(p=a, i=0;i<5;i+)printf("%d",*(p+i); Bfor(p=a;p<a+5;p+)printf("%d", *p); Cfor(p=a, i=0;p<a+5;p+, i+)printf("%d", pi); Dfor(p=a;p<a+5;p+)printf("%d", p0);14已知某程序如下: float p=1.5; #define p 2.5main( ) printf("%f", p); 则main函数中标识符p代表的操作数是( )。Afloat型变量 Bdouble型变量Cfloat型常量 Ddouble型常量15已有声明“int S23”,以下选项中( )正确地引用了数组S中的基本元素。AS1>2!1BS20CS1DS16逻辑“异或”运算可描述为“a xor b”,其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个操作数中只有一个为真时才为真,其他情况下均为假。以下表达式中( )可以正确表示逻辑“异或”运算。Aa | bBa && bC(a&&b)&&!(a | b)D(a | b)&&!(a&&b)17若有声明“int a5,*b=a,(*c)3,*d3;”,则在以下表达式中有语法错误的是( )。Aa0=0Bb0=0Cc0=0Dd0=018若有声明: int k, a, b; unsigned long y=5; double x=1.23; 则以下表达式中正确的是( )。Ax%(-5)Bx=y6Ck=(a=1,b=2,&a + &b)Da+=a- = (b=2) * (a = 3)19一个用C语言编写的源程序中,( )是必不可少的。A取名为main的函数定义B#include<stdio.h>C变量声明D注释20以下声明中正确的是( )。Aint n=2, an=10;Bint n=10, *p2=&n;Cint n=10, a2=n;Dint a22=10, (*p)2=a+1;21、若有函数fun的定义为 void fun()static int a=1; 则下列叙述中不正确的是( )。 A在每次调用fun函数时,变量a的值是上次调用结束时a的值 B在fun函数之外,可以用变量名a直接引用a的值 C在其他函数中,可以出现声明double a=2.5; Dfun函数的形式参数不能取名为a22以下单目运算符均只需要一个操作数,其中要求操作数的类型只能是指针型的是( )。A&B+C!D*23已知有声明“int good=l; ”,若要使得表达式“p="good"+good”无语法错误(包括警告错误),p应当声明为( )。Achar p;Bchar*p;Cint p;Dint *p;24以下全局变量声明中正确的是( )。Aauto int i=1;Bfloat a=1, b=0.5, c=a+b;Cchar for=1;Dstatic char ch;25若已有声明“double a23=1, 2, 3, 4, 5, 6;”,则下列表达式中不能正确引用a11值的是( )。A*(a0+4)B*(a1+1)C*(*(a+3)+1)D*(*a+4)26、已有声明“int a5;”,以下表达式中不能正确取得a1指针的是( )。A&a1B+aC&a0+1Da+l27以下关于语句的说法中正确的是( )。 Ado-while语句的循环体至少会被执行1次 Bwhile语句的循环体至少会被执行1次 Cfor语句的循环体至少会被执行1次 D在C语言中只能用do、do-while或for语句实现循环结构28已知函数f的定义如下: void f(void) printf("Thats great! "); 则调用f函数的正确形式是( )。Af;Bf();Cf(void);Df(1);29以下程序在编译时在第三行报错“Redeclaration of ain function d”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是( )。 int b;void d(int a) int f; double a=1; printf("%d",a);main( )int e=1;d(e); AfBeCdDb30、以下语句中不包含关键字的是( )。 Ax=sqrt(2);Bwhile(x!=0)x-;Cif(x<0)x=-x;Dreturn x;31在main函数体内部和外部均允许出现的实体是( )。A预处理命令 B语句 C另一函数的定义 D函数形式参数声明32、已知有声明int x=2:,以下表达式中值不等于8的是( )。Ax+=2,x*2Bx+=x*=XC(x+7)/2*(x+1)%2+1)Dx*7.2/x+133、执行以下程序时, #include<stdio.h> main() int a; float b; scanf("%3d%f",&a,&b);printf("%dt%f",ab); 若要求变量a和b分别从键盘获得输入值45和678.0,则以下四种输入数据中(代表“空格”键,<CR>代表“回车”键),不能达到该要求的输入数据是( )。A45678<CR>B45<CR>678<CR>C45,678<CR>D045678<CR>34下列程序段中,能将变量x、y中值较大的数保存到变量a、值较小的数保存到变量b的程序段是( )。 Aif(x>y)a=x;b=y;else a=y;b=x; Bif(x>y)a=x;b=y;else a=y;b=x; Cif(x>y)a=x;b=y;elsea=y;b=x; Dif(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+) xk+=y; 若main函数中有声明int a10=10及调用fun函数的语句,则正确的fun函数调用形式是( )。Afun(a ,a0);Bfun(a0,a0);Cfun(&a0,a0);Dfun(a0,&a0);36设有下列程序段: static char b=2;void Y ( ) static float d=4;int a=1;void X ( ) int c=3;