C期末考试复习题答案.docx
- 文档编号:25203257
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:27
- 大小:28.70KB
C期末考试复习题答案.docx
《C期末考试复习题答案.docx》由会员分享,可在线阅读,更多相关《C期末考试复习题答案.docx(27页珍藏版)》请在冰豆网上搜索。
C期末考试复习题答案
C语言复习题
一、单项选择题
1、C语言源程序文件经过C编译程序编译连接之后生成一个后缀为(C)的文件。
A).cB).objC).exeD).bas
2、)完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为(B)
A)连接、编译B)编译、连接C)连接、运行D)运行
3、关于C语言的叙述中,不正确的是(D)
A)C程序可由一个或多个函数组成B)C程序必须包含一个main()函数
C)C程序的基本组成单位是函数D)注释说明只能位于一条语句的后面
4、一个C程序的执行是从(A)。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序的main函数开始,到本程序文件的最后一个函数结束
D)本程序文件的第一个函数开始,到本程序main函数结束
5、以下正确的叙述是(C)
A)在C语言中,main函数必须位于文件的开头B)C语言每行中只能写一条语句
C)C语言本身没有输入、输出语句D)对一个C语言进行编译预处理时,可检查宏定义的语法错误
6、下列选项中,不能用作标识符的是(D)。
A)_1234_B)_1_2C)int_2_D)2_int_
7、常数的书写格式决定了常数的类型和值,0x1011是(C)
A)8进制整型常量B)字符常量C)16进制整型常数D)2进制整型常数
8、以下4组用户定义标识符中,全部合法的一组是(A)
A)_totalclu_1sumB)if-maxturb
C)txtREAL3COMD)intk_2_001
9、_(D)是合法的用户自定义标识符。
A)b-bB)floatC)123aD)_isw
10、以下选项中不正确的整型常量是(C)。
A)12LB)-10C)1,900D)123U
11、表达式(C)的值是0。
A)3%5B)3/5)0C)3/5D)3<5
12、设intx=3,y=4,z=5,则下列表达式中的值为0的是(D)
A)‘x’&&’y’B)x||y+z&&y-zC)x<=yD)!
((x z||1) 13、表达式! (x>0||y>0)等价于(D)。 A)! x>0||! y>0B)! (x>0)||! (y>0)C)! x>0&&! y>0D)! (x>0)&&! (y>0) 14、若变量已正确定义并赋值,表达式(D)不符合C语言语法。 A)4&&3B)+aC)a=b=5D)int(3)14) 15、C语句”x*=y+2;”还可以写作(C) A)x=x*y+2;B)x=2+y*x;C)x=x*(y+2);D)x=y+2*x; 16、下列格式符中,可以用于以8进制形式输出整数的是(B) A)%dB)%oC)%ldD)%x 17、下列格式符中,可以用于以16进制形式输出整数的是(D) A)%dB)%oC)%ldD)%x 18、设intx=1,y=1;表达式(! x||y--)的值是(C) A)-1B)0C)1D)2 19、若变量已正确定义并赋值,表达式-k++等价于(A)。 A)-(k++)B)(-k)++C)-(k+1)D)-(++k) 20、下面运算符优先级最低的是(B) A)<=B)=C)%D)&& 21、下列运算符中,优先级从高到低依次为(D)。 A)&&,! ,||B)||,&&,! C)&&,||,! D)! ,&&,|| 22、以下选项中,非法的字符常量是(C) A)‘\t’B)‘\17’C)”n”D)‘\xaa’ 23、若x是整型变量,表达式(x=10)0/4)0)的值是(D)。 A)2)5B)2)0C)3D)2 24、若变量c为char类型,则能正确判断出c为小写字母的表达式是(D)。 A)'a'<=c<='z'B)(c>='a')||(c<='z') C)('a'<=C)and('z'>=C)D)(c>='a')&&(c<='z') 25、若变量已正确定义并赋值,表达式(B)_不符合C语言语法。 A)a*b/c;B)3)14%2C)2,bD)a/b/c 26、以下所列的C语言常量中,错误的是(B) A)0xFFB)1)2e0)5C)2LD)‘\72’ 27、___C__是不正确的字符常量。 A)'n'B)'1'C)"a"D)'101' 28、在C程序中,用(B)表示逻辑值”真”。 A)1B)非0的数C)非1的数D)大于0的数 29、(C)把x、y定义成float类型变量,并赋同一初值3)14。 A)floatx,y=3)14;B)floatx,y=2*3)14; C)floatx=3)14,y=x=3)14;D)floatx=y=3)14; 30、以下定义语句中正确的是(C)。 A)chara='A'b='B'; B)floata=b=10;C)inta=10,*b=&a; D)float*a,b=&a; 31、若有以下程序段, intc1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是(A) A)0B)0.5C)1D)2 32、6.能正确表示逻辑关系: ”a≥=10或a≤0”的C语言表达式是(D) A)a>=10ora<=0B)a>=0|a<=10C)a>=10&&a<=0D)a>=10‖a<=0 33、设变量定义为”inta,b;”,执行下列语句时,输入_D____,则a和b的值都是10。 scanf("a=%d,b=%d",&a,&B); A)1010B)10,10C)a=10b=10D)a=10,b=10 34、若变量已正确定义,执行语句scanf("%d%d%d",&k1,&k2,&k3);时,(B)_是正确的输入。 A)2030,40B)203040C)20,3040D)20,30,40 35、若变量已正确定义,语句”if(a>b)k=0;elsek=1;”和(C)等价。 A)k=(a>b)1: 0;B)k=a>b;C)k=a<=b;D)a<=b? 0: 1; 36、下列各语句中,能够且仅输出整型变量a、b中最大值的是(C) A)if(a>b)printf(″%d\n″,a);printf(″%d\n″,b); B)printf(″%d\n″,b);if(a>b)printf(″%d\n″,a); C)if(a>b)printf(″%d\n″,a);elseprintf(″%d\n″,b); D)if(a 37、下列条件语句中,功能与其他语句不同的是(D) A)if(a)printf("%d\n",x);elseprintf("%d\n",y); B)if(a==0)printf("%d\n",y);elseprintf("%d\n",x); C)if(a! =0)printf("%d\n",x);elseprintf("%d\n",y); D)if(a==0)printf("%d\n",x);elseprintf("%d\n",y); 38、执行语句”for(s=0,i=1;i<=10;i=i+3)s+=i;”后,变量s、i的当前值是(A) A)22,13B)12,10C)22,10D)12,13 39、以下程序的输出结果是(C) main() {inti,b[10]; for(i=9;i>=0;i--)b[i]=10-i; printf(“%d%d%d”,b[2],b[5],b[8]); } A)258B)741C)852D)369 40、以下程序的输出结果是(B) main() {charst[20]=“hello\0\t\\”; printf(%d%d\n”,strlen(st),sizeof(st)); } A)99B)520C)1320D)2020 41、有以下程序段 intk=0 while(k=1)k++; while循环执行的次数是(A) A)无限次B)有语法错,不能执行C)一次也不执行D)执行1次 42、以下程序的输出结果是(D) main() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=10)break; if(b%3==1) {b+=3;continue;} } printf(“%d\n”,A); } A)101B)6C)5D)4 43、以下能正确定义二维数组的是(D) A)intb[][3]; B)intb[][3]=2{2*3}; C)intb[][3]={};D)intb[3][2]={{1},{2},{3,4}}; 44、下列各语句定义了数组,其中一个不正确的是(B) A)inta[5],b[2][3]; B)charno[30],rec[30,6]; C)intx[]={2,4,6,8,10}; D)intx[10]={1,2,3,4,5}; 45、(5)用inta[4]={1,2};对数组进行初始化后,数组元素a[3]的值是(B) A)随机值B)0C)1D)F 46、(6)在执行charstr[10]=“china\0”;strlen(str)的结果是(A) A)5B)6D)7D9 47、下面能正确进行字符串赋值操作的语句是(A)。 A)chars[]={“ABCDE”};B)chars[5]={'a','b','c','d’,'e',’\0’}; C)char*s;s=“ABCDEF”;D)char*s;scanf(“%s”,s); 48、下面是对数组a的初始化,其中不正确的是(D) A)a[5]={"ABCD"}B)a[5]={'A','B','C','D'} C)a[5]=""D)a[5]="ABCDE" 49、设变量定义为”ints[]="hello\nworld\n";”,则数组s中有(B)个元素。 A)12B)13C)14D)15 50、设变量定义为”intb[2]={1,3},*p=&b[0]+1;”,则*p的值是(B)。 A)2B)3C)4D)&b[0]+1 51、在C语言程序中,在函数内部定义的变量称为(D)。 A)全局变量B)全程变量C)外部变量D)内部变量 52、以下程序段的输出结果是(A) chars[]="\\141\141abc\t"; printf("%d\n",strlen(s)); A)9B)12C)13D)14 53、下列程序的输出结果是(D)。 fun(inta,intb,intC) {c=a*b;} voidmain() {intc; fun(2,3,C); printf(“%d\n”,C); } A)0B)1C)6D)无法确定 54、在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。 A)intB)doubleC)voidD)char 55、表达式strlen(“hello”)的值是_(B)。 A)4B)5C)6D)7 56、设变量定义为”intb[4];”,则表达式(D)不符合C语言语法。 A)*aB)b[0]C)aD)a++ 57、有以下定义和语句 intb[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=b[1]; 则*(p[0]+1)所代表的数组元素是(C) A)b[0][1] B)b[1][0] C)b[1][1] D)b[1][2] 58、下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的(B) A)floatd,*p=d;B)floatd,*p=&d;C)floatd,p=d;D)float*p=&d,d; 59、宏定义”#definep(x,y,z)x=y*z;”的宏替换”p(a,x+5,y-3)1)”应为() A)a=x+5*y-3)1B)a=(x+5)*(y-3)1); C)a=x+5*y-3)1D)a=(x+5)*(y-3)1) 60、下列语句定义p为指向float类型变量d的指针,其中哪一个是正确的() A)floatd,*p=d;B)floatd,*p=&d; C)floatd,p=d;D)float*p=&d,d; 61、设有定义: inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是(A) A)scanf("%d",pa); B)scanf("%d",a);C)scanf("%d",&pa); D)scanf("%d",*pa); 62、执行语句”for(i=0;i<10;++i,++a)scanf(″%d″,a);”试图为int类型数组a[10]输入数据,是错误的。 错误的原因是() A)指针变量不能做自增运算B)数组首地址不可改变 C)++i应写作i++D)++a应写作a++ 63、设变量定义为”intx,*p=&x;”,则&*p相当于__A___。 A)pB)*pC)xD)*&x 64、C程序中main函数的位置(C) A、必须在最开始B、必须在系统库函数后面 C、可以在自定义函数后面D、必须在最后 65、定义函数时,缺省函数的类型声明,则函数类型取缺省类型(D) A)voidB)charC)floatD)int 66、在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则(D) A)称为函数的直接递归调用 B)称为函数的间接递归调用 C)称为函数的循环调用 D)C语言中不允许这样的递归调用 67、关于C语言函数的描述中,正确的是(B) A)函数的定义可以嵌套,但函数的调用不可以嵌套B)函数的定义不可以嵌套,但函数的调用得意嵌套 C)函数的定义和函数的调用都可以嵌套D)函数的定义和函数的调用都不可以嵌套 68、下列程序执行后的输出结果是(B) #defineMA(x)x*(x-1) main() {inta=1,b=2;printf("%d\n",MA(1+a+b));} A)6B)8C)10D)12 69、有如下程序 intfunc(inta,intb) {return(a+b);} main() {intx=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%\d\n”,r); } 该程序的输出的结果是(D) A)12B)13C)14D)15 70、有如下程序 longfib(intn) {if(n>2)return(fib(n-1)+fib(n-2)); elsereturn (2); } main0 {printf(“%d\n”,fib(3)); 该程序的输出结果是(B) A)2B)4C)6D)8 71、当调用函数时,实参是一个数组名,则向函数传送的是(B) A)数组的长度B)数组的首地址 C)数组每一个元素的地址D)数组每个元素中的值 72、以下程序的输出结果是(B) A)16B)2C)9D)1 #defineSQR(X)X*X main() {inta=16,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(“d\n”,A); } 73、以下函数返回a所指数组中最小的值所在的下标值 fun(int*a,intn) {inti,j=0,p; p=j; for(i=j;iif(b[i]return(p); } 在下划线处应填入的是(D) A)i=pB)b[p]=b[i]C)p=jD)p=i 74、设有以下定义语句: structstudent{ intnum; charname[10]; floatscore; }wang,zhang;的变量wang所占的内存字节是(B) A)14B)16C)18D)9 75、设有以下定义语句: structstudent{ intnum; charname[10]; floatscore;}wang,zhang; 则不正确的叙述是(C) A)struct是结构体类型的关键字B)zhang是结构体变量名 C)wang是结构体类型名D)num,name,score都是结构体类型student的成员名 76、若structteacher{ intnum; charname[10]; charsex; intage; floatscore;}teacher1; 则变量teacher1所占用的内存字节是(C) A)5B)14C)19D)20 77、假定已有如下落不明变量说明和枚举定义: charch; intj,k; enumday{sum,mon,tue,wed,thu,fri,sat}; inta[sat]; 判定下列语句是否符合语法规则,结果是(C) chara;/*语句1*/ j+k=j;/*语句2*/ if(a[mon]>0)j++;/*语句3*/ A)语句2错误,其它正确B)语句1正确,其它错误 C)语句3正确,其它错误D)语句错误,其它正确 78、以下C语言共用体类型数据的描述中,不正确的是(D) A)共用体变量占的内存大小等于所需内在最大的成员所占的内存 B)共用体类型可以出现在结构体类型定义中 C)在定义共用体变量的同时允许对另一个成员的值进行初始化 D)同一共用体中各成员的首地址不相同 79、若有以下类型说明,叙述正确的是(A) typedefsturct{ intnum; char*name; intscore; }STU,*PSTU A)STU是变量名B)PSTU是变量名 C)PSTU是指向结构体类型STU的指针类型名D)类型说明语句有错误 80、设有如下定义语句: unionutype{ inti; doublex; floatf; }; structstr_type{ charstr[100]; unionu_typeu[2]; }; 则语句”printf(“%d”,sizeof(structstr-type));”的输出结果是(B) A)100B)116C)120D)200 81、下列对结构体类型变量定义不正确的是(C) A)structteacher{ intnum; intage; }teacher1; B)struct{ intnum; intage; }teacher1,teacher2; C)struct{ intnum; intage; }teacher, D)structteacher{ intnum; intage; }teacher; 82、以”只读”方式打开文本文件a: \aa.dat,下列语句中哪一个是正确的(D) A)fp=fopen(″a: \\aa.dat″,″ab″); B)fp=fopen(″a: \aa.dat″,″a″); C)fp=fopen(″a: \aa.dat″,″wb″); D)fp=fopen(″a: \\aa.dat″,″r″); 83、以下叙述正确的是(D) A)C语言中的文件是流式文件,因此只能顺序存取数据 B)打开一个已存在的文件进行了写操作后,原有文件中的全部数据必定被覆盖 C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第一个数据 D)当对文件的写操作完成之后,必须将它关闭,否则可能导致数据丢失 二、填空题 1、C语言的一个函数由函数头和函数体两部分组成。 2、在C语言中,程序的结构通常有三种: 顺序结构、选择结构和_循环结构_____。 3、C程序的基本组成单位是函数。 4、设ch是字符型变量,判断ch为英文字母的表达式是: (ch>=’A’&&ch<=’Z’)||(ch>=’a’&&ch<=’z’)__。 5、设已定义了整型变量a,b,c,其值分别为a=3,b=2,c=1,则表达式a 6、设inta=5,b=2;floatc=32.8;,表达式b*(int)c%a的值为__4____。 7、计算a、b中最小值的条件表达式为__a a: b____。 8、判断变量a、b、c的值是否是等差数列中连续的三项,写作C的表达式为__a-b==b-c____。 9、判断变量a、b的值均不为0的C表达式为__a*b! =0或a*b____。 10、执行语句”a=5+(c=6);”后,变量a、c的值依次为__11,6____。 11、整型变量x的值为23,语句”printf(″%o\\n″,x);”的输出结果为__27\n____。 12、整型变量x的值为40,语句”printf(″%o\n″,x);”的输出结果为_050_____ 13、表达式! ! 5的值是__1____。 14、表达式7/2的结果是3。 表达式7%2的结果是1。 15、执行语句”n=1;if(n=5)n++;"后,变量n值为__6___
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期末考试 复习题 答案