1、一、单项选择题(每题2分,共30分) 1.以下描述正确的是( C ) A.goto语句只能用于退缩出多层循环。 B.switch语句中不能出现continue语句。 C.只能用continue语句中来终止本次循环。 D.在循环语句中break语句不独立出现。 2.一个C程序的执行是从( A ) A.C程序的main函数开始,到main函数结束。 B.本程序的第一个函数开始,到本程序最后一个函数结束。 C.本程序的main函数开始,到本程序文件的最后一个函数结束。 `D.本程序的第一个函数开始,到本程序main函数结束。 3.C语言中,要求运算数必须都是
2、整数的运算符是( C )。 A.* B.- C.% D.+ 4.假定 int i=3,j=4; 执行语句: printf("%d,%d,%d\n",i+++j,i,j); 之后,其输出结果为:( C ) A.7,4,4 B. 8,4,4 C. 7,3,4 D.7,3,5 5.对break语句的正确描述。( A ) A.break语句在while语句中,立即终止执行while语句。 B.break语句不能用于循环语句之外的语句。 C.break语句与continue语句功能相同。 D.break语句可以带参数,也
3、可以不带。 6.在C语言中,下面那一个不是正确的概念( A ) A. 所有循环语句都要求至少要执行一次循环体。 B. goto和if语句能构成循环语句。 C.循环过程只能包含,不能交叉。 D.循环体可以是一条语句。 7.以下对二维数组a的正确说明是( C ) A. int a[ 3 ] [ ]; B. float a( 3, 4); C. int a[ 3 ] [ 4 ] D.float a( 3, )( 4 ); 8.对函数的正确描述( C ) A.在C语言中可以嵌套定义函数。 B.自定
4、义函数和调用函数可以不在一个源文件中。 C. 函数定义都是平行的,独立的。 D. 不能嵌套调用函数。 9.若用数组名作为函数调用的实参,传给形参的是( A ) A.数组的首地址 B.数组的第一个元素值 C.数组的全部元素值 D.数组中元素的个数 10.对于 int *p; int a[]; p=a; 的合法运算( C ) A. a++; B. p=a; p++; 相当于 a++; C. ++p; 相当于 a[1]; D. 若p中的地址为10
5、0则p++; 运算后,则其值为100 11.假设 int x[] = {1,3,5,7,9,11}, *ptr; ptr = x; 以下那些是对数组元素的正确引用 ( D ) A. *(ptr--) B. x[6] C. *(--ptr) D. *(ptr++) 12.执行以下语句后的结果为( A ) enum weekday {sun,mon=3,tue,wed,thu}; enum weekday workday; workday = wed; printf("%d\n",workday); A.5
6、 B. 3 C.4 D.编译出错 13.要定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是指向自身结构体的指针。则下面的定义正确的是( D )。 A.struct node{int info;struct node link;}; B.struct node{int info;node *link;}; C.struct node{int info;struct *link;}; D.struct node{int info;struct node *link;}; 14.以下与函数fseek(fp,0L,S
7、EEK_SET)有相同作用的是( D )。 A.feof(fp) B.ftell(fp) C.fgetc(fp) D.rewind(fp) 15.局部变量的作用域( A ) A.在定义的块内有效。 B.在函数外也有效。 C.在本文件内有效。 D.在所有文件内有效。 一、单项选择题(每题2分,共30分) 1.下面的四个选项中,均不是合法的用户标识符的选项是( B ) A. B B. b-a C. float D. _12
8、3 M_0 goto 2ab temp while int _A INT 2.有输入语句:scanf(“a=%d, b=%d, c=%d”, &a, &b, &c);为使变量a,b,c的值分别为1,3,2,从键盘上输入数据的正确形式应当是( B ) A.132 〈回车〉 B.a=1,b=3,c=2〈回车〉 C.a=1 b=3 c=a <回车> D.1,3,2 〈回车〉
9、3.如果输入信息为:1234567 则执行语句:scanf("%2d%2d",&x,&y); 之后,x,y的值为( A ) A. x为12,y为34 B. x为2,y为3 C. x为12,y为67 D.x为1234567,y为0 4.对于 for(表达式1;表达式2 ;表达式3) 语句的正确描述( B ) A.表达式2省略,循环不执行。 B.表达式3省略,可在循环体中修改循环控制变量,以保证正常退出。 C.三个表达式均不能省略。 D.三个表达式均不能省略。但分号可以省略。
10、 5.以下叙述中正确的是( B )。 A.循环语句嵌套必须是同类型的语句 B.循环语句嵌套可以是同类型的语句,也可以不同类型 C.do_while循环语句和 while循环语句的程序执行方式都是相同的。 D.循环体中不能再有循环语句 6.有下面的程序段: char a[ 3 ], b[ ] =”student”; a=b; printf (“ %s”,a); 则( D ) A.运行后将输出student ; C.运行后将输出b; B.运行后将输出a D.编译出错 7.当数组作函数参数时,选出不正
11、确的描述。( D ) A.实参数组与形参数组类型应一致。 B.数组元素做函数实参时,同变量做实参一样是参数传值。 C.形参数组可以不定义数组大小。 D.实参数组与形参数组大小必须一致,否则C编译会检查出错。 8.在C语言中,函数返回值的类型最终取决于( A )。 A.函数定义时在函数首部所说明的函数类型 B.return语句中表达式值的类型 C.调用函数时主调函数所传递的实参类型 D.函数定义时形参的类型 9.若有说明 int (*p)[3]; 则以下正确的描述( B ) A. p是一个指针数组。 B. p 是一
12、个指针,它只能指向一个包含3个int类型元素的数组。 C. p是一个指针,它可以指向一个一维数组中的任意元素。 D. (*p)[3]与*p[3]等价。 10. 已知int b; 则对指针变量p正确的说明和初始化是:( 4 ) A. int *p=b; B. int p=b; C. int p=&b; D. int *p=&b; 11.若已定义了如下的共用体类型变量x,则x所占用的内存字节数为( C ) (设在16位pc机的环境下) union data { int i; char ch; dou
13、ble f; }x; A. 7 B. 11 C. 8 D. 10 12.设fp为指向某二进制文件的指针,且已经读到此文件末尾,则函数feof(fp)的返回值为( B )。 A.EOF B.非0值 C.0 D.NULL 13. C语言程序中,main函数的位置( D )。 A.在开头 B.在结尾 C.在中间 D.可以任意 14. int x=3; if(1<=2)if(0)x=4;else x=5;else x=6; 执行上述语句后x的值是( C
14、). A.3 B.4 C. D.6 15. 以下叙述正确的是( C ) A.goto语句只能用于退出多层循环。 B.可以用continue语句来终止switch语句的执行。 C.break语句只能用在循环体内和switch语句体中。 D.在循环内使用break语句和continue语句的作用相同。 一、单项选择题(每题2分,共30分) 1.请问:下面这个程序段的输出是什么?( D ) int a=7,b=8,c=9; if(a
15、 } printf("a=%d b=%d c=%d\n",a,b,c); A . a=7 b=8 c=7 B. a=7 b=9 c=7 C. a=8 b=9 c=7 D. a=8 b=9 c=8 2.C语言对嵌套 if 语句的规定是:else总是与( D )配对。 A.其之前最近的 if B.第一个 if C.缩进位置相同的 if D. 其之前最近且不带 else 的 if 3.有以下程序段: int k=0; while(k=1) k++;
16、while循环执行的次数是( A )。 A.无限次 B.有语法错,不能执行 C. 一次也不执行 D.执行1次 4.若有语句: tatic char x[]="12345"; static char y[] = {'1','2','3','4','5'}; 则下面那一个是正确的描述。( 2 ) A.x数组和y数组的长度相同。 B.x数组长度大于y数组长度。 C.x数组长度小于y数组长度。 D.x数组等价于y数组。 5.若有定义:int a[5
17、][6]; 则下面关于数组a的叙述中正确的是( C )。 A.该数组共有20个元素 B.a[0][6]是该数组的一个元素 C.a[0][0]是该数组的一个元素 D.a[5][6]是该数组的一个元素 6.对局部变量不正确描述( B ) A.在不同块内可以使用相同的变量名而不会混淆。 B.局部变量在任何一个函数内有效。 C.局部变量的初值每调用一次赋一次 D.用auto说明的变量为局部变量。 7.凡是函数中未指定存储类别的局部变量,隐含的存储类别为( A )。 A.auto B. register C. sta
18、tic D. extern 8.在说明语句:int *f( );中,标识符f代表的是( A ) A.一个返回值为指针型的函数名 B. 一个用于指向整型数据的指针变量 C.一个用于指向函数的指针变量 D.一个用于指向一维数组的行指针 9.typedef( D ) A. 可以定义各种类型名和变量名。 B. 可以创造新的数据类型。 C. 和#define作用相同。 D. 只是对已存在的类型增加一个类型名,不能创造新类型。 10.若fp已正确定义为一个文件指针,d1.dat为二进制文件,为“读”而打开此文件的语句是( B
19、 )。 A.fp=fopen("d1.dat","r"); B.fp=fopen("d1.dat","rb"); C.fp=fopen("d1.dat","r+"); D.fp=fopen("d1.dat","w"); 11.以下选项中,当x为大于1的奇数时,值为0的表达式是( D )。 A.x%2==1 B.x/2 C.x%2!=0 D.x%2==0 12.若有定义:int w[3][5]; ,则以下不能正确表示该数组元素的表达式是( B )。 A.*(*w+3) B.*(w+1)[4] C.*(*(w+1))
20、 D.*(&w[0][0]+1) 13、有以下程序段typedef struct node {int data;struct node *next;}* NODE; NODE p; 以下叙述中正确的是__________C________。 A.p是指向struct node结构体变量的指针的指针 B.NODE p;语句出错 C.p是指向struct node结构变量的指针 D.p是struct node结构变量 14、若有程序段:double x=-5.9;int y;y=(int)x; 执行该段程序后_____A_____。 A.x=-5.9,y=-5 B.x=-5.9,y=-6 C.x=-5,y=-5 D.x=-6,y=-6 15.已知 int b; 则对指针变量正确的说明和初始化是:__ D __ A.int *p=b; B.int p=b; C.int p=&b; D.int *p=&b; 第一套作业 试卷 第二套作业 第三套作业






