二级C语言考前复习试卷
一、选择题
(1)下列选项中,不是算法的基本特征的是()。
A)完整性B)可行性
C)有穷性D)拥有足够的情报
(2)结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。
A)对象B)数据结构C)数据流D)目标
(3)下列工具中为需求分析常用工具的是()。
A)PAD B)PFD C)N-S D)DFD
(4)线性表进行二分法检索,其前提条件是()。
A)线性表以顺序方式存储,并按关键码值排好序
B)线性表以顺序方式存储,并按关键码的检索频率排好序
C)线性表以链式方式存储,并按关键码值排好序
D)线性表以链式方式存储,并按关键码的检索频率排好序
(5)下列选项中不属于结构化程序设计方法的是()。
A)自顶向下B)逐步求精C)模块化D)可复用
(6)下列关于结构化程序设计原则和方法的描述中,错误的是()。
A)选用的结构只准许有一个入口和一个出口
B)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
C)不允许使用GOTO语句
D)语言中所没有的控制结构,应该采用前后一致的方法来模拟
(7)软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。
A)阶段性报告B)需求评审C)总结D)都不正确
(8)下列关于软件测试的描述中正确的是()。
A)软件测试的目的是证明程序是否正确
B)软件测试的目的是使程序运行结果正确
C)软件测试的目的是尽可能地多发现程序中的错误
D)软件测试的目的是使程序符合结构化原则
(9)用链表表示线性表的优点是()。
A)便于随机存取
B)花费的存储空间较顺序存储少
C)便于插入和删除操作
D)数据元素的物理顺序和逻辑顺序相同
(10)在数据库设计中,将E-R图转换为关系模式的过程属于()。
A)需求分析阶段B)逻辑设计阶段
C)概念设计阶段D)物理设计阶段
(11)以下叙述错误的是()。
A)C语言区分大小写
B)C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改
C)整数和实数都能用C语言准确无误地表示出来
D)在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示
(12)下列叙述中错误的是()。
A)用户所定义的标识符允许使用关键字
B)用户所定义的标识符应尽量做到“见名知意”
C)用户所定义的标识符必须以字母或下划线开头
D)用户定义的标识符中,大、小写字母代表不同标识
(13)下列选项中可作为C语言合法常量的是()。
A)-80 B)-080 C)-8e1.0 D)-80.0e
(14)下列定义变量的语句中错误的是()。
A)int _int; B)double int_;
C)char For; D)float US$;
(15)下列关于函数的叙述中正确的是()。
A)每个函数都可以被其他函数调用(包括main函数)
B)每个函数都可以被单独编译
C)每个函数都可以单独运行
D)在一个函数内部可以定义另一个函数
(16)当a=1、b=2、c=3、d=4时,执行下面程序段后,x的值是()。
if(a
if(c else if(a if(b else x=3; else x=6; else x=7; A)1 B)6 C)3 D)2 (17)以下程序的输出结果是()。 #include main() { int a=4,b=3,c=2,d=1; printf("%d",a } A)1 B)3 C)2 D)4 (18)若有语句:char *line[5];下列叙述中正确的是()。 A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 (19)以下程序: #include main() { char str[10]; scanf("%s",&str); printf("%s\n",str); } 运行上面的程序,输入字符串how are you,则程序的执行结果是()。 A)how B)how are you C)h D)howareyou (20)设x和y都是int类型,且x=1,y=2,则printf("%d%d",x,y,(x,y))的输出结果是()。 A)1 2 B)1 2 2 C)1,2 D)输出值不确定(21)以下程序的输出结果是()。 #include main() { int a=8,b=6,m=1; switch(a%4) { case 0:m++; break; case 1:m++; switch(b%3) { default: m++; case 0:m++; break; } } printf("%d\n",m);} A)1 B)2 C)3 D)4 (22)定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面的语句输出结果是()。 for(i=0;i<3;i++) printf("%d",x[i][2-i]) ; A)159 B)147 C)357 D)369 (23)有下列程序段: typedef struct NODE { int num;struct NODE *next; } OLD; 下列叙述中正确的是()。 A)以上的说明形式非法B)NODE是一个结构体类型 C)OLD是一个结构体类型D)OLD是一个结构体变量(24)下列数组定义中错误的是()。 A)int x[ ][3]={0}; B)int x[2][3]={{l,2},{3,4},{5,6}}; C)int x[ ][3]={{l,2,3},{4,5,6}}; D)int x[2][3]={l,2,3,4,5,6}; (25)以下叙述错误的是()。 A)变量的作用域取决于变量定义语句的位置 B)全局变量可以在函数以外的任何部位进行定义 C)局部变量的作用域可用于其他函数的调用 D)一个变量说明为static存储类型是为了限制其他编译单元的引用 (26)若定义函数int *func(),则函数func的返回值为()。 A)一个实数B)一个指向整型变量的指针 C)一个指向整型函数的指针D)一个整型函数的入口地址(27)若有以下定义,则正确引用数组元素的是()。 int a[5],*p=a; A)*&a[5] B)*a+2 C)*(p+5) D)*(a+2) (28)以下对C语言中联合类型数据的正确叙述是()。 A)定义了联合变量后,即可引用该变量或该变量中的任意成员 B)一个联合变量中可以同时存放其所有成员 C)联合中的各个成员使用共同的存储区域 D)在向联合中的一个成员进行赋值时,联合中其他成员的值不会改变 (29)有以下函数定义: int fun(double a,double b) {return a*b;} 若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。 A)if(fun (x,y)){……} B)z= fun (fun (x,y),fun (x,y)); C)z= fun (fun (x,y)x,y); D)fun (x,y); (30)执行以下语句段后,xy的值是()。 int*pt,xy; xy=200; pt=&xy; xy=*pt+30; A)200 B)170 C)260 D)230 (31)下述程序的输出结果是()。 # include void main() { int a[20],*p[4]; int i,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*i+1]; for(i=0;i<4;i++) k=k+*(p+i); printf ("%d",k); } A)10 B)18 C)6 D)数组元素引用不合法,输出结果不定(32)下面各语句行中,能正确进行赋值字符串操作的是()。 A)char s[5]={'a','b','c','d', 'e'}; B)char *s;gets(s); C)char *s;s="ABCDEF"; D)char s[5];scanf("%s",&s); (33)下面程序的输出结果是()。 #include main() { char a[]={'a', 'b', 'c', 'd', 'f ', 'g'},*p; p=a; printf("%c\n",*p+4); } A)a B)b C)e D)f (34)下面函数的功能是()。 sss(s,t) char *s,*t; {while(*s); while(*t) *(s++)=*(t++); return s; } A)将字符串s复制到字符串t中B)比较两个字符串的大小 C)求字符串的长度D)将字符串t续接到字符串s中 (35)下列程序的运行结果是()。 #include void sub(int*s,int*y) { static int m=4; *y=s[m]; m--; } void main() { int a[]={1,2,3,4,5},k; int x; printf("\n"); for(k=0;k<=4;k++) { sub(a,&x); printf("%d,",x); } } A)5,4,3,2,1, B)1,2,3,4,5, C)0,0,0,0,0, D)4,4,4,4,4, (36)设q1和q2是指向一个int型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。 A)k=*q1*( *q2); B)q1=k; C)q1=q2; D)k=*q1+*q2; (37)下列程序的输出结果为()。 main() { union un { char *name; int age; int pay; } s; https://www.wendangku.net/doc/6611180349.html,="zhaoming"; s.age=32; s.pay=3000; printf("%d\n",s.age); } A)32 B)3000 C)0 D)不确定 (38)以下有关宏替换的叙述不正确的是()。 A)使用宏定义可以嵌套 B)宏定义语句不进行语法检查 C)双引号中出现的宏名不替换 D)宏名必须用大写字母表示 (39)下列程序执行输出的结果是()。 #include f(int a) { int b=0; static c=3; a=c++;b++; return(a); } main() { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf("%d\n",k); } A)3 B)4 C)5 D)6 (40)已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是()。 A)一个整型变量,代表要读入的数据项总数 B)一个文件指针,指向要读的文件 C)一个指针,是指向的输入数据放在内存中的起始位置 D)一个存储区,存放要读的数据项 二、填空题 (6)若有定义:int a=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是___________。 c=(a-=(b-5)); c=(a%3)+(b=1); (7)以下程序运行后的输出结果是___________。 main() { int a,b,c; a=10; b=20; c=(a/b<1)&&(a%b<1); printf("%d %d %d\n",a,b,c); } (8)以下程序运行后的输出结果是___________。 #define Power2(x) x*x main() { int i=6,j=8; printf("%d\n",Power2(i+j)); (9)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。 void fun(int,int,int(*)[4],int *); main() { int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i; fun(3,4,a,b); for(i=0;i<3;i++) printf("%4d",b[i]); printf("\n"); } void fun(int m,int n,int ar[][4],int *br) { int i,j,x; for(i=0;i { x=ar[i][0]; for(j=0;j if(___________) x=ar[i][j]; br[i]=x; } } (10)下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。 main() { int i,j; for(i=0; ___________;i++) { j=i*10+8; if(j%4!=0) continue; printf("%d",j); } } (11)以下程序的输出结果是___________。 #include fun() { static int a=0; a+=3;printf("%d ",a); } main() { int cc; for(cc=1;cc<5;cc++)fun(); printf("\n"); } (12)下面程序的运行结果是___________。 #include #define SIZE 12 main() { char s[SIZE];int i; for(i=0;i sub(s,5,SIZE-1); for(i=0;i printf("\n"); } sub(char *a,int t1,int t2) { char ch; while(t1 { ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1++;t2--; } } (13)下面程序的运行结果是___________。 #include main() { char a[80],*p="AbabCDcd"; int i=0,j=0; while(*p!='\0') { if(*p>='a' && *p<='z') {a[i]=*p;i++;} } a[i]='\0'; puts(a); } (14)“printf("%d\n",strlen("\t\"\023\xAB\nC"));”语句的输出结果是___________。 (15)下面程序的运行结果是___________。 #define P(a) printf("%d ",a) main() { int j,a[]={1,2,3,4,5,6,7},i=5; for(j=3;j>1;j--) { switch(j) { case 1: case 2: P(a[i++]); break; case 3: P(a[--i]); } } } 参考答案 一、选择题 (1)A)(2)C)(3)D)(4)A)(5)D)(6)C)(7)B)(8)C)(9)C)(10)B)(11)C)(12)A)(13)A)(14)D)(15)B)(16)A)(17)A)(18)A)(19)A)(20)A)(21)B)(22)C)(23)C)(24)B)(25)D)(26)B)(27)D)(28)C)(29)C)(30)D)(31)B)(32)B)(33)C)(34)D)(35)A)(36)B)(37)B)(38)D)(39)B)(40)C) 二、填空题 (1)共享性(2)E-R图(3)类 (4)冒泡排序(5)循环链表(6)1 (7)10 20 0 (8)62 (9)x (15)5 5