1、德州学院二级C语言期末复习题C语言练习题一、单项选择题1 以下选项中合法的标示符是( )A.1_1 B.1-1 C._11 D. 1_ _ 2 若有以下类型说明语句: char a; int b; float c; short int d; 则表达式(c*b+a)*d的结果类型是( )。 A.char B.int C.double D.float3 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为( )。A.算术运算、赋值运算、关系运算 B.关系运算、赋值运算、算术运算C.算术运算、关系运算、赋值运算 D.关系运算、算术运算、赋值运算4 多重if_else语句嵌套使用时,寻
2、找与else配套的if方法是( )。A.缩排位置相同的ifB.其上最近的ifC.下面最近的ifD.同行上的if5 有以下程序,其运行后的输出结果是( )。main()int x=1,y=2; x=x+y,y=x-y; x=x-y; printf(x=%d,y=%d n,z);A. 1 2 B. 1,2 C. 0,1 D. 2,16 有以下程序,其中%u表示按无符号整数输出main()unsigned short x=0xFFFF; printf(%un,x);程序运行后的输出结果是( )。A.-1 B.65535 C.32767 D.0xFFFF7 以下合法的c语言语句是( B )。A. x=
3、int(x+0.5); B. +k; C. a=b=0 D. a=1,8 下面有关for循环的正确描述是( D ) 。A. for循环只能用于循环次数已经确定的情况。B. for循环是先执行循环体语句,后判断表达式。C. 在for循环中,不能用break语句跳出循环体。D. for循环的循环体语句,可以包含多条语句,但必须用花括号括起来。9 有以下程序,其运行后的输出结果是( C )。main()int x=1,y=2,z; z= x/y; printf(%dn,z);A. 1/2 B. 0.5 C. 0 D. 110 下列对字符串的操作正确的是( C)。A. char c34=ABCD; B
4、. char c4=A,B,C,D;C. char c4;scanf(%s,c); D. char c4;c=ABCD;11 若有说明int a34;则对其数组元素的正确引用是(A )。A. a21+2 B. a(2)(3) C. a2,3 D. a3412 在C语言程序中,以下正确的描述是(A )。 A .函数的定义可以嵌套,但函数的调用不可以嵌套。B. 函数的定义不可以嵌套,但函数的调用可以嵌套。C. 函数的定义和函数的调用均不可以嵌套。D. 函数的定义和函数的调用均可以嵌套。13 执行下面程序的正确结果是( )。main()floata=1.9;switch(a)case0:printf
5、(0000);case1:printf(1111);case2:printf(2222);printf(%f,a);A. 1.900000 B. 111122221.900000C.22221.900000 D. 0000111122221.90000014 若用数组名作为函数调用的实参,传递给形参的是(A )。A. 数组的首地址 B. 数组第一个元素的值C. 数组中全部元素的值 D. 数组元素的个数15 以下叙述中错误的是( )A. 计算机不能直接执行用C语言编写的源程序。B. C程序经编译程序编译后,生成后缀为.obj的文件是一个二进制文件。C. 后缀为.obj的文件,经连接程序生成后缀为
6、.exe的文件是一个二进制文件。D. 后缀为.obj和.exe的二进制文件都可以直接运行。16 2. 执行以下程序段后,w的值为( )int w=A,x=14,y=15;w=(x|y)&(wx?w:zy?z:x的值是( )。 A. 4 B. 3 C. 2 D. 119 4. 若变量已正确定义,语句“if(ab) k=0; else k=1;”和( )等价。 A. k=(ab)?1:0; B. k=ab;C. k=a=b; D. a=b ? 0 : 1;20 若有定义:int x=5,*p=&x;,则语句printf(%dn,*p);的输出结果是( B )。 A. 随机值 B. 5 C. x的地
7、址 D. p的地址21 以下判断两个字符串相等的正确方法是( )。A.if(str1=str2) B.if(str1=str2)C.if(strcpy(str1,str2)=0) D. if(strcmp(str1,str2)=0)22 设变量已正确定义并赋值,以下正确的表达式是( ) 。A. int(6.3%2) B. x=z*5=3 C. i=j+5,+j D. k=20%3.023 有以下程序#include main() int i=5;do if (i%3=1)if (i%5=2) printf(*%d,i); break;i+; while (i!=0);printf(n); 程序
8、运行结果是( )A. *7 B. *3*5 C. *2*6 D. *524 有下列程序:void swap1(int c1 ,int c2 ) int t; t=c10; c10=c20; c20=t;void swap2(int *c1,int *c2) int t; t=*c1; *c1=*c2; *c2=t;main( ) int a2=1,2, b2=3,4; swap1(a,a+1); swap2(&b0,&b1); printf(%d %d %d %dn,a0,a1,b0,b1);程序运行后的输出结果是( )A. 1 2 3 4 B. 2 1 4 3 C. 2 3 4 1 D. 1
9、 3 2 425 若有定义int a=1,2,3,b3=1,2,3;,表达式a=b的结果是(A )。A. 不能比较 B. 结果为真 C. 结果不确定 D. 结果为假26 有定义:int a=4,b,*p=&b,*q=&a;,以下赋值语句中与b=a;语句等价的是( )。A. *p=*q; B. p=q; C. *p=&a; D. p=*q;27 有下列程序:void sum(int a ) a1=a0+a2;main( ) int a10=1,2,3,4,5,6,7,8,9,10; sum(&a2); printf(%dn,a2);程序运行后的输出结果是( )A. 6 B. 7 C. 3 D.
10、928 定义struct pint x;char y10; p1;,则下列正确的赋值是( C )。A. p1.y=sun B. p1-y=sun 29 C. strcpy(p1.y, sun) D. p1.strcpy(y, sun)30 若调用一个函数,且此函数中没有return语句,则正确的说法是( )。A.该函数没有返回值 B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不正确的值31 指针是一种( )。A. 标识符 B. 变量 C. 运算符 D. 内存地址32 有下列程序:main(int argc,char *argv ) int n=0,i; for(i=1;i
11、b?a:cd?c:dA. 1 B. 2 C. 4 D. 435 有以下程序,其运行后的输出结果是( C )。main()int x=1,y=2,z; z= x/y; printf(%dn,z); A. 1/2 B. 0.5 C. 0 D. 136 设变量已正确定义,以下不能统计出一行中输入字符个数的是( D )。A. n=0;while(ch=getchar()!=n) n+; B. n=0;while(getchar()!=n) n+;C. for(n=0;getchar()!=n;n+); D. n=0;for(ch=getchar(); ch!=n;n+);37 有以下定义:int a=
12、0,1,2,3,4;char c1=b,c2=1;则数值为3 的表达式是( B)。A. a2 B. e-c1 C. a4-c2 D. c2+138 有以下定义:char c1=abcdef;char c2=a,b,c,d,e,f;则正确的叙述是(C )。A. 数组c1和数组c2等价。 B. 数组c1和数组c2的长度相等。C. 数组c1的长度大于数组c2的长度。 D. 数组c1的长度小于数组c2的长度。39 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B)。A. float型 B. int型C. long型 D. double型40 #include main()char p20=
13、a,b,c,d,q=”abc”,r=”abcde”;strcpy(p+strlen(q),r);strcat(p,q);printf(”%d %dn”,sizeof(p),strlen(p);程序运行后的输出结果是( )A. 20 9 B. 9 9 C. 20 11 D.11 1141 以下正确的说法是( )如果在一个函数中的复合语句中定义了一个变量,则该变量A. 只在该复合语句中有效 B. 在该函数中有效C. 在本程序范围内均有效 D. 为非法变量42 以下正确的函数形式是( )A. double fun (int x,int y) z=x+y; return z;B. fun (int x
14、,y); int z; return z;C. fun (x;y) int x,y; double z; z=x+y; return z;D. double fun (int x, int y) double z; z=x+y; return z;43 若有定义int a3=1,2,3,4,5,6;,下面( )能访问元素5。A. A4 B. a0+4 C. *a+4 D. *(&a00+4)44 若有char s10,*p=s;,则下面表达式正确的是( )A. s=p+s; B. p=s0+10; C. s2=p4; D. p=s0;45 定义union sint w,x,y,z;char c
15、6;,则sizeof(union s)=( )A. 2 B. 6 C. 8 D. 1446 C语言规定,函数返回值的类型是由( )。A. return语句中的表达式类型所决定。B.调用该函数时的主调函数类型所决定。C.调用该函数时系统临时决定。D.在定义该函数时所指定的函数类型所决定。47 设已有定义:int x;,则下列对指针变量p进行定义且赋初值的语句中正确的是( )。A. int *p=1024; B. int *p=(int)x; C. int p=&x; D.int *p=&x;48 有下列程序:float f1(float a) return a*a;float f2(float
16、b) return 3*b;main( ) float (*p1)(float),(*p2)(float),(*t)(float),y1,y2; p1=f1; p2=f2; y1=p2(p1(3.0); t=p1; p1=p2; p2=t; y2=p2(p1(3.0); printf(%3.0f,%3.0fn,y1,y2);程序运行后的输出结果是( B ) 。A. 27,8 B. 27,81 C. 2,8 D. 2,8149 定义typedef structint x; A10; A a;,下面正确的是( B ) 。A. a.x=30; B. a0.x=30; C. a.A0.x=30; D.
17、 A0.x=20;50 结构化程序设计的基本原则不包括( ) 。A. 多元性 B. 自顶向下 C. 模块化 D. 逐步求精51 若函数中有定义语句:int k;,则( )A. 系统将自动给k赋初值0 B. 这时k中的值无定义C. 系统将自动给k赋初值-1 D. 这时k中无任何值52 以下不能定义为用户标识符的是( )。A. Main B. _0 C. _int D. sizeof53 下列运算符中,优先级最低的是( )。A. * B.!= C. + D. =54 若有以下类型说明语句: char a; int b; float c; short int d; 则表达式(c*b+a)*d的结果类
18、型是( )。 A. char B. int C. double D. float55 有以下程序,程序的运行结果是( )。#include void main() int x=8; for(;x0;x-) if (x%3) printf(%d,x-); continue; printf(%d, ,-x); A. 7,4,2 B. 8,7,5,2, C. 9,7,6,4, D. 8,5,4,2,56 有以下程序#include void main()int a44= 1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t; for(i=0;i3;i+) for(k=i+1;k
19、4;k+) if(aiiakk) t=aii;aii=akk;akk=t; for(i=0;i4;i+) printf(%d,a0i); 程序运行后的结果是( )。 A. 6,2,1,1, B. 6,4,3,2, C. 1,1,2,6, D. 2,3,4,6,57 有以下程序#include void main()int a44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j,k,t; for(i=0;i4;i+) for(j=0;j3;j+) for(k=j+1;kaki) t=aji;aji=aki;aki=t; for(i=0;i4;i+) prin
20、tf(%d,aii); 程序运行后的结果是( )。 A. 1,6,11,16, B. 1,7,11,12, C. 1,7,11,13, D. 1,6,2,11,58 在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。A.auto 和 register B.extern 和 register C.auto 和 static D.static 和 register59 有以下程序,输出结果是( )。#include void fun (int a,int b,int c)a=456;b=567;c=678;void main()int x=10,y=20,z=30; fun (x,
21、y,z); printf(%d,%d,%d,x,y,z);A. 30,20,10 B. 10,20,30 C. 456,567,678 D. 678,567,45660 下列程序的输出结果是( )。void main( ) int a23,*p,i; p=&a00; for(i=0;i6;i+) pi=i; for(i=0;i12?x+10:x-12; printf(%dn,y); A. 0 B. 22 C. 1 D. 2二、填空题1. 算法具有有穷性、可行性、确定性、 、输出等5个主要特征。2. 设A为int型的一维数组,如果A的首地址为p,那么A中第i个元素的地址为 。3. 人们根据特定的
22、需要,预先为计算机编制的指令序列称为 。4. 若以指数形式输出一个浮点数,则对应的格式控制字符为 。5. 设变量i已正确定义为整型,且初值为0,则printf(“%d,%”,i+,i+)的输出结果是 。6. 设有变量定义为int a3=1,4,7,*p=&a2;,*p的值是 。7. 结构变量可以作为函数的参数和返回值类型,以 方式传递参数。8. 结构指针是结构变量的内存地址,保存该指针的变量称为 。9. 逻辑运算的值也为“真”和“假”两种,在C语言中“真”用 ,“假”用0来表示。10. for(i=0; ;i+);如果此for语句要执行 10次,则需要在空白处填写 。11. 若k为整型变量,则
23、下面while循环执行的次数为: 。k=10;while(k=0) k=k-1;12. 若有定义:int k;,以下程序段的输出结果是 。for(k=2;k6;k+,k+) printf(#%d,k);13. 有以下定义:float b20;则数组b共有20个元素,其中的第一个元素为b0,最后一个元素为 。14. 若有定义:int k;,以下程序段的输出结果是 。for(k=2;k6;k+,k+) printf(#%d,k);15. for(i=0;i10;i+);结束后,i的值是 。16. 对定义语句char s=abcd;则数组的长度是 。17. 函数调用语句“f(e1,e2),(e3,e
24、4,e5)”中参数的个数是 。18. 在C语言中,一个函数一般由两个部分组成,它们是函数头和 。19. 根据变量作用域的不同可以将变量分为局部变量和 。20. 指针是C语言的重要特色,实际上它代表了机器的 。21. 结构类型的定义需要以关键字开始,其关键字为 。22. for(i=0;i10;i+);结束后,i的值是 。23. for(i=0; ;i+);如果此for语句要执行 10次,则需要在空白处填写 。24. 有以下定义:float b20;则数组b共有 个元素,25. 在C语言中,递归函数分为直接递归和 。 26. 有定义int arr10=0,1,2,3,4,5,6,7,8,9,*p
25、,i=2;若执行语句:p=arr;printf(“%d”,*(p+i);输出结果为: 。27. 结构数组是以 为基类型的数组,下标运算可以访问每个结构元素。28. 指针变量虽然都是存放指针,但 不同。29. 使用结构中成员变量必须先写上结构变量名,中间以 分割。30. 若有定义:int k;,以下程序段的输出结果是 。for(k=2;k6;k+,k+) printf(#%d,k);31. 有以下定义:float b20;则数组b共有20个元素,其中的第一个元素为 ,最后一个元素为b19。 32. 变量的存储类型有 、static、register和extern四种。33. 在C语言中,递归函数分为直接递归和 。 34. 指针变量虽然都是存放指针,但 不同。35. 使用结构中成员变量必须先写上结构变量名,中间以 分割。三、分析程序结果1. 以下程序的输出结果为 。#include main() int n=12345,d; while(n!=0) d=n%10; printf(%d,d); n/=10;2. 以下程序的输出结果为 。#include stdio.hmain()int i,a34=1,3,5,7,9,11,13,15,17,19,21,23; for(i=0;i3;i+) printf(%d,aii);3. 以下程序的输出结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1