C语言期末考试复习题及答案3.docx
- 文档编号:10325033
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:22
- 大小:25.51KB
C语言期末考试复习题及答案3.docx
《C语言期末考试复习题及答案3.docx》由会员分享,可在线阅读,更多相关《C语言期末考试复习题及答案3.docx(22页珍藏版)》请在冰豆网上搜索。
C语言期末考试复习题及答案3
C语言期末考试复习题及答案
一、 选择题:
下列各题A)、B)、C)、D)四个选项中只有一个是正确的,请将正确的选项涂写在答案纸上。
答在试卷上不得分。
(1)C语言规定:
在一个源程序中,main函数的位置D。
A)必须在最后B)必须在系统调用的库函数的后面。
C)必须在最开始。
。
D)可以任意
(2)C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符A。
A)必须为字母或下划线。
。
B)必须为下划线。
C)必须为字母D)可以是字母、数字和下划线中的任一种字符。
(3)下面四个选项中,均是正确的八进制数或十六进制数的选项是B。
A)-100x8f-011B)010-0x110xf1
C)0abc-0170xcD)0a12-0x123-0xa
(4)C语言中int型数据在内存中占两个字节,则unsegnedint取值范围是A。
A)0~65535B)0~32767
C)-32767~32768D)-32768~327687
(5)若有定义:
inta=7;floax=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值是D。
A)2.750000B)0.00000C)3.500000D)2.500000
(6)已知ch是字符型变量,下面不正确的赋值语句是B。
A)ch=5+9;B)ch='a+b';C)ch='\0';D)ch='7'+'6';
(7)设x,y和z是int型变量,且x=3,y=4,z=5则下面表达式中值为0的
是A。
A)!
((x z||1)B)'x'&&'y'C)x||y+z&&y-zD)x<=y (8)设有程序段 intk=10; while(k=0)k=k-1; 以下描述正确的是A。 A)循环体语句一次也不执行。 B)循环是无限循环。 C)while循环语句执行十次。 D)循环体语句执行一次。 (9)以下C程序正确的运行结果是A。 main() {longy=23456; printf("y=%3x\n",y); printf("y=%8x\n",y); printf("y=%#8x\n",y); } A)y=5ba0B)y=5ba0C)y=5ba0D)y=5ba0 y=5ba0y=5ba0y=bba0y=5ba0 y=0x5ba0y=0x5ba0y=0x5ba0y=####5ba0 (10)当a=1,b=3,c=5d=4时,则执行完下面一段程序后,x的值是C。 if(a if(c else if(a if(b elsex=3; elsex=6; elsex=7; A)1B)3C)2D)6 (11)下面程序的运行结果是D。 #include"stdio.h" main() {inta=1,b=10 do {b-=a;a++;} while(b--<0); printf("a=%d,b=%d\n),a,b); A)a=3,b=11B)a=4,b=9 C)a=1,b=-1D)a=2,b=8 (12)以下for循环的执行次数是B。 for(x=0,y=0;(y=123)&&(x<4);x++); A)无限次。 B)4次。 C)0次。 D)3次。 (13)以下是死循环的程序段的是C。 A)for(i=1;;)B)i=32767 {if(++i%2==0)continue;do{if(i<0)break;}while(++i) if(++i%3==0)break;} C)for(i=1;;)D)i=1 if(++i<10)continue;while(i--); (14)若有说明: inta[10];则对a数组元素的正确引用是B。 A)a[10]B)a[10-10]C)a(5)D)a[3.5] (15)根据定义和数据的输入方式,输入语句的正确形式为A。 已有定义: floatf1,f2;数据输入方式: 4.25 3.5 A)scanf("%f%f",&f1,&f2);B)scanf("%f,%f",&f1,&f2); C)scanf("%3.2f%2.1f",&f1,&f2);D)scanf("%2.1f%3.2f",&f1,&f2); (16)已知ch是字符型变量,下面正确的赋值语句是C。 A)ch='123';B)ch='\08';C)ch='\xff';D)ch="\"; (17)以下if语句语法正确的是A。 A)if(x>0)B)if(x>0)printf("%f",-x) {x=x+y;printf("%f",x);}elseprintf("%f",-x); elseprintf("%f",-x); C)if(x>0)D)if(x>0) {x=x+y;printf("%f",x);};{x=x+y;peintf("%f",x)} elseprintf("%f",-x);elseprintf("%f",-x); (18)若W=1,X=2,Y=3,Z=4则条件式: W W: Y Y: Z的值是A。 A)1B)3C)4D)2 (19)以下程序段B。 x=-1; do{x=x*x;} while(! x); A)是死循环B)循环执行一次 C)循环执行二次D)有语法错误 (20)逻辑运算符两侧运算对象的数据类型B。 A)只能是0或1B)可以是任何类型的数据 C)只能是整型或字符型数据D)只能是0或非0正数 (21)下面程序中有错误的行是C。 (前面数字表示行号) 1、 main()5、scanf("%d",&a); 2、 {6、for(i=1;i<3;i++)a[0]=a[0]+a[i], 3、 inta[3]={1};7、printf("a[0]=%d\n",a[0]); 4、 inti;8、} A)3B)6C)5D)7 (22)下面的程序段D。 for(t=1;t<=100,t++) {scanf("%d",&x); if(x<0)continue; printf("%3d",t); } A)当x<0时整个循环结束B)当x>=0时什么也不输出 C)printf函数永远也不执行D)最多允许输出100个非负整数 (23)以下对一维整型数组a的正确说明是D。 A)inta(10)B)intn=10;a[n]; C)intn;D)#defineSIZE10 scanf("%d",&n);inta[SIZE]; inta[n]; (24)下面程序的运行结果是A。 a=1;b=2;c=2; while(a printf("%d,%d,%d",a,b,c); A)1,2,0B)2,1,0C)1,2,1D)2,1,1 (25)若有说明: inta[3][4];则对数组元素的非法引用是B。 A)a[0][2*1]B)a[0][4]C)a[4-2][0]D)a[1][3] (26)对以下说明的正确理解是B。 inta[10]={6,7,8,9,10} A)将5个初值依此赋给a[1]至a[5]B)将5个初值依此赋给a[0]至a[4] C)将5个初值依此赋给a[6]至a[10]D)因长度与初值个数不同,故语句错误 (27)若二维数组a有m列,则在a[i][j]前的元素个数为A A)i*m+jB)j*m+iC)i*m+j-1D)i*m+j+1 (28)以下程序段运行的结果是D。 charc[5]={'a','b','\0','c','\0'}; printf("%s",c); A)'a''b'B)abcC)abcD)ab (29)以下正确的函数定义形式是A。 A)doublefun(intx,inty)B)doublefun(intx;inty) C)doublefun(intx,inty);D)doublefun(intx,inty); (30)以下不正确的说法是D。 A)实参可以是常量、变量或表达式。 B)形参应与其对应的实参类型一致。 C)实参可以为任意类型。 D)形参可以是常量、变量或表达式。 (31)有两个字符数组a,b,则以下正确的输入格式是C。 A)scanf("%s%s",&a,&b)B)gets(a,b) C)scanf("%s%s",a,b)D)gets("a");gets("b") (32)以下程序正确的运行结果是C。 main() {inta=2,i; for(i=0;i<3;i++)printf("%4d",f(a)); } f(inta) {intb=0;staticintc=3; b++;c++; return(a+b+c);} A)777B)71013C)789D)7911 (33)#define能做简单的替代,用宏替代计算多项式4*x*x+3*x+2之值的函数f,正确的宏定义是C。 A)#definef(x)4*x*x+3*x+2B)#definef4*x*x+3*x+2 C)#definef(a)(4*a*a+3*a+2)D)#define(4*a*a+3*a+2)f(a) (34)当运行以下程序时,从键盘输入: ab c def ( #include"stdio.h" #defineN6 main() {charc(N); inti=0; for(;i for(i=0;i } A)abcdefB)aC)bD)ab bcc cdd d e f (35)请读程序: #defineAD(x)x+x main() {intm=1,n=2,k=3; intsum=AD(m+n)*k; printf("sum=%d",sum);} 上面程序的运行结果是B。 A)sum=9B)sum=10C)sum=12D)sum=18 (36)对下面程序段正确的判断是: _____C______ #defineA3 #defineB(a)((A+1)*a) x=3*(A+B(7)); A) 程序错误,不许嵌套宏定义。 B)x=21 C)x=93D)程序错误,宏定义不许有参数。 (37)执行以下程序后,a,b的值为 main() {inta,b,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; b=(-*p1)/(*p2)+7; printf("a=%d\n",a); printf("b=%d\n",b);} A)-1B)0C)1D)4 57610 (38)以下程序中调用scanf函数给变量a输入数值的方法是错误的,因为。 main() {int*p,*q,a,b; p=&a; printf("inputa: "); scanf("%d",*p); …} A)*p表示的是变量a的值,而不是变量a的地址。 B)*p表示的是指针变量p的地址。 C)*p表示的是指针变量p的值。 D)*p只能用来说明p是一个指针变量。 (39)以下程序的运行结果是。 #defineMIN(x,y)(x)<(y)? (x): (y) main() {inti=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); } A)15B)10C)100D)150 (40)以下正确的函数形式是 B)doublefun(intx,inty)B)fun(intx,y) {z=x+y;returnz;}{intz;returnz;} C)fun(x,y)D)doublefun(intx,inty) {intx,y;doublez;}{doublez;z=x+y;returnz;} (41)以下不正确的说法是。 A)在不同函数中可以使用相同名字的变量。 B)形式参数是局部变量。 C)在函数内的复合语句中定义的变量在本函数范围内有效。 D)在函数内定义的变量只在本函数范围内有效。 (42)C语言提供的预处理功能包括条件编译,其基本形式为: #XXX标识符 程序段1 #else 程序段2 #endif 这里XXX可以是。 A)define或include.B)ifdef或ifndef或if C)ifdef或ifndef或defineD)ifdef或include (43)以下程序的正确运行结果是。 #include"stdio.h" main() {intk=4,m=1,p; p=func(k,m);printf("%d,",p); p=func(k,m);printf("%d\n",p);} func(inta,intb) {staticintm=0,i=2; i+=m+1; m=i+a+b;return(m);} A)8,16B)8,17C)8,20D)8,8 (44)已有定义intk=2;int*p1,*p2,且p1和p2均已指向变量k,下面不能正确执行的赋值语句是。 A)k=*p1+*p2;B)p1=p2; C)p2=k;D)k=*p1*(*p2); (45)若有说明int*p,m=5,n;以下正确的程序段是。 A)p=&n;B)p=&n; Scanf("%d",&p);Scanf("%d",*p); C)Scanf("%d",&n)D)p=&n; *p=n;*p=m; (46)以下scanf函数调用语句中,对结构体成员的不正确引用为。 structpupil {charname[20]; intage; intsex; }pup[5],*p; p=pup; A)scanf("%s",pup[0].name);B)scanf("%d",&pup[0].age); C)scanf("%d",p->sex);D)scanf("%d",&(p->age)); (47)若有定义: inta[3][4];则对a数组的第i行第j列(假设i,j已正确说明并赋 值)元素值的正确引用为。 A)*(*(a+i)+j)B)(a+j)[j] C)*(a+i+j)D)*(a+i)+j (48)若已定义charS[10];则在下面表达式中不表示S[1]的地址的是。 A)S+1B)&S[1]C)&S[0]+1D)S++ (49)若有定义: inta[2][3]则对a数值的第i行,第j列元素地址的正确引用为。 A)*(a[i]+j)B)a[i]+jC)*(a+j)D)(a+i) (50)若有以下定义,且0<=i<6,则正确的赋值语句是。 ints[4][6],t[6][4],(*p)[6]; A)p=t;B)p=s[i];C)p=s;D)p=t[i]; (51)以下程序的运行结果是。 #include"stdio.h" main() {union{longa; intb; charc; }m; printf("%d\n",sizeof(m));} A)4B)2C)6D)8 (52)当顺利执行了文件,关闭操作时,fclose函数的返回值是。 A)0B)TURNC)-1D)1 (53)已知学生记录描述为 structstudent {intno; charname[20]; charsex; struct {intyear; intmonth; intday;}birth; }s; 设变量s中的“生日”应是“1984年6月6日”,下列对“生日”的正确赋值方式是。 A)year=1984;B)birth.year=1984; month=6;birth.month=6; day=6;birth.day=6; C)s.year=1984;D)s.birth.year=1984; s.month=6;s.birth.month=6; s.day=6;s.birth.day=6; (54)表达式a A)~,&,<,||B)~,<,&,|| C)~,&,||, (55)设有以下语句: charx=3,y=6,z; z=x^y<<2; 则z的二进制值是. A)00010100B)00011000C)00011100D)00011011 (56)已知函数的调用形式: fread(buffer,size,count,fp),其中buffer代表的是。 A)一个整型变量,代表要读入的数据项总数. B)一个文件指针,指向要读的文件. C)一个存储器,存放要读的数据项. D)一个指针,指向要读入数据的存放地址 (57)若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是。 A)(*p)max(a,b);B)*pmax(a,b); C)*p(a,b)D)(*p)(a,b) (58)在16位IBM-PC机上使用C语言,若有如下定义: uniondata {inti; charch; doublef; }b; 则其共用体变量b占用内存字节数是。 A)1B)2C)8D)4 (59)若有以下程序段 intx=1,y=2; x=x^y; y=y^x; x=x^y; 则执行以上语句后x和y的值分别是。 A)x=1B)x=2C)x=2D)x=1 y=2y=2y=1y=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末考试 复习题 答案