20011-2012学年第一学期《C语言程序设计》期末复习题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char a[7]="a0\0a0\0"; int i,j; i=sizeof(a); j=strlen(a); printf("%d %d\n",i,j); } 程序运行后的输出结果是_____C_____。 A.2 2 B.7 6 C.7 2 D.6 2 22.声明语句为“char a[10]”,执行下列语句后的输出结果为 ____C____。 printf(“%d, %d\n”, sizeof(a), strlen(strcpy(a, “Windows”))); A.7,7 B.7,8 C.10,7 D.10,8 23.函数“strcmp(“Int”, “int”)”的返回值为____B____。 A.0 B.-32 C.“intInt” D.“Intint” 24.以下能正确定义一维数组的选项是_____B_____。 A.int a[5]={0,1,2,3,4,5}; B.char a[]={0,1,2,3,4,5}; C.char a={'A','B','C'}; D.int a[5]="0123"; 25.若定义FILE *fp;则文件指针fp指向____B______。 A.文件在磁盘上的读写位置 B.文件在缓冲区上的读写位置 C.整个磁盘文件 D.文件类型结构体 26.有以下程序 main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i; for(i=0;i<3;i++)printf("%d",a[1][i]); } 程序运行后的输出结果是____D______。 A.0 1 2 B.1 2 3 C.2 3 4 D.3 4 5 27.设变量定义如下,则表达式*p->str++等价于____D______。 struct { int len; char *str; } *p; A.*p++->str B.(*p->str)++ C.*p->(str++) D.*(p->str)++
15.若k、s的当前值分别为4、0,执行语句“while(--k) s=s+k;”后,变 量k和s的值分别为___D_____。 A.10、0 B.0、10 C.6、0 D.0、6 16.执行语句“for(float x=0, s=0; x!=60; x=x+0.3) s=s+x;”后,变量x的 值为____D____。 A.不可能大于60 B.不可能大于60.3 C.一定小于60 D.可以远大于60 17.设变量定义如下,则表达式____D______是正确的。 struct student { int num; char name[20]; float score; } stud[10]; A.stud[2]=stud[1]+3 B.stud[1]==stud[2] C.stud[1]=stud[1]-stud[2] D.stud[1]=stud[2] 18.有以下程序 main() { int p[8]={11,12,13,14,15,16ห้องสมุดไป่ตู้17,18},i=0,j=0; while(i++<7) if(p[i]%2) j+=p[i]; printf("%d\n",j); } 程序运行后的输出结果是____B______。 A.42 B.45 C.56 D.60 19.对于以下递归函数f,调用函数f(4),其返回值是_____C_____。 int f(int n) { if(n>2) return f(n-1)+n; else return n; } A.9 B.10 C.2 D.4 20.不正确的赋值或赋初值的方式是____C______。 A.char *p=”hello”; B.char s[10]=”hello”; C.char s[10]; s=”hello”; D.char s[5]={‘h’,’e’,’l’,’l’,’0’}; 21.有以下程序 main() {
清空。√ 24.循环体中continue语句的作用是结束整个循环的执行。× 25.do-while语句先执行循环体,后判断循环条件,所以循环体至少会 执行一次。√ 26.C语言规定,else子句总是与它上面的最近的if配对。× 27.执行循环语句“for(i=1; i<10; i=i+2) s+=i;”后,i的当前值为11。√ 28.a是一维数组名,数组元素a[1]还可以写作“*(a++)”。 × 29.函数原型为“void sort(float a[ ], int n)”,调用该函数时,形参数组a 被创建,实参数组各元素的值被复制到a数组各元素中。× 30.若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被 清空。√ 二、单选题(每题2分,共20分) 1.若x是double型变量,n是int型变量,执行_____A_____,并输入3 1.25后,x=1.25,n=3。 A.scanf(“%d%lf”, &n,&x); B.scanf(“%d%lf”, n,&x); C.scanf(“%d%lf”, &n, x); D.scanf(“% d%lf”, &x,&n); 2.若变量已经被正确定义,为表示“变量x和y都能被3整除”,应使用的 C表达式是____D______。 A.(x%3!=0) || (y%3!=0) B.(x%3!=0) && (y%3!=0) C.(x%3==0) || (y%3==0) D.(x%3==0) && (y%3==0) 3.已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是 _____C_____。 A.数组a和b的长度相同 B.a数组长度小于b数组长度 C.a数组长度大于b数组长度 D.上述说法都不对 4.以下不能定义为用户标识符是____ D ______。 A.Main B._0 C._int D.sizeof 5.执行语句“k=x++ && y++ || z++;”(各变量当前值均为1)后,变量 k、x、y、z值依次为__A___。 A.1、2、2、1 B.1、2、2、2 C.0、2、2、1 D.0、2、2、2 6.计算变量x(x大于1)整数部分位数的表达式,可以写作 ____D____。 A.(int)log10(x) B.log10(x) C.log10(x)+1 D.(int)log10(x)+1 7.判断变量x、y中有且只有1个值为0的表达式为___A_____。 A.!(x*y)&&x+y B.(x*y)&&x+y C.x*y= =0 D.x= =0&&y!=0
8.while(_____B_____)等价于while(x)。 A.x==0 B.x!=0 C.x==1 D.x!=1 9.数字字符0的ASCII值为48,若有以下程序 main() { char a='1',b='2'; printf("%c,",b++); printf("%d\n",b-a); } 程序运行后的输出结果是___C_ _______。 A.3,2 B.50,2 C.2,2 D.2,50 10.下列程序段的输出结果是_____C_____。 int count=0, x,y,z; for(x=1;x<=2;x++) for(y=1;y<=3;y++) for(z=1;z<=4;z++) count++; printf(“%d”, count); A.10 B.9 C.24 D.0 11.若变量已经被正确定义,则语句____A______是不正确的。 A.p=&(x+1); B.p=&x; C.p=&x+1; D.p=&x, p++; 12.有以下语句:int b;char c[10];,则正确的输入语句是____B______。 A.scanf("%d%s",&b,&c); B. scanf("%d%s",&b,c); C.scanf("%d%s",b,c); D.scanf("%d%s",b,&c); 13.有以下程序 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); } 程序运行后的输出结果是_____D_____。 A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3 14.执行语句“for(s=0, k=1; s<20 || k<10; k=k+2) s+=k;”后,s、k的值 为____B____。 A.25、9 B.25、11 C.36、11 D.36、9
一、判断题(每题1分,共10分) 说明:在以下提供若干陈述中,逐一判断其正确与否,正确选择√,错 误选择×。 1.用数组名作函数参数时传递的是数组的值。× 2.全局变量可以被任何一个函数中的任何一个表达式使用。√ 3.不同类型的变量在内存中占用存储空间的大小都是一样的。× 4.程序调试就是找出并改正C源程序中的语法错误。× 5.一个函数可以带回一个整型值、字符值、实型值等,也可以带回指 针型的数据。√ 3.若表达式sizeof(int)的值为4,则int类型数据可以表示的最大整数为 231-1。√ 4.在所有的关系运算符(>=、>、= =、!=、<=、<)中,优先级最低 的运算符是“= =、!=”。 √ 6.表示数学式3<x<5的C表达式也是3<x<5。× 7.程序设计语言必须具备数据表达和流程控制的功能。√ 8.表达式i++与++i在任何场合功能完全相同。× 9.结构化程序设计语言的三种基本控制结构是顺序、选择和循环。√ 10.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类 型可以不相同。√ 11.在C源程序中将语句“if(x= =5) y++;”误写作“if(x=5) y++;”,将导致 编译错误。× 12.C的double类型数据可以精确表示任何实数。× 13.‘\n’不是一个字符常量。× 14.程序的执行总是从主函数开始,主函数执行完时,则程序执行结 束。√ 15.控制台标准输入设备一般是指键盘。√ 16.标准输入函数scanf的返回值为所输入数据的个数或EOF。√ 17.若x的当前值为5,执行语句“if(x=3) x=x+5;”后,x的值依然是5。 × 18.表达式(1.23<<2)符合C语言语法。× 19.与float型数据相比,double型数据的精度高,取值范围大。√ 20.在C语言中,表达式(010+2)的值是10。√ 21.do-while语句的循环体至少执行一次。√ 22.函数原型为“void sort(float a[ ], int n)”,调用该函数时,形参数组a 被创建,实参数组各元素的值被复制到a数组各元素中。× 23.若打开文件的方式为“w”而该文件已经存在,则文件中原有数据被
28.有以下程序 void f(int *x,int *y) { int t; t=*x;*x=*y;*y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) {f(p,q);p++;q--;} for(i=0;i<8;i++) printf("%d,",a[i]); } 程序运行后的输出结果是____D______。 A.8,2,3,4,5,6,7,1, B.5,6,7,8,1,2,3,4, C.1,2,3,4,5,6,7,8, D.8,7,6,5,4,3,2,1, 29.函数f定义如下,执行语句“m=f(5);”后,m的值应为___B_____。 int f(int k) {if(k= =0 || k= =1) return 1; else return f(k-1)+f(k-2); } A.3 B.8 C.5 D.13 30.函数f定义如下,执行语句“sum=f(5)+f(3);”后,sum的值应为 ___C_____。 int f(int m) {static int i=0; int s=0; for(; i<=m; i++) s+=i; return s; } A.21 B.16 C.15 D.8 三、程序填空题(每空2分,共20分) 说明:阅读下列程序说明和相应程序,在每小题提供的若干可选答案 中,挑出一个正确答案。 程序1、 【程序说明】 求2/1+3/2+5/3+8/5+…的前10项之和。(该序列从第2项起,每 一项的分子是前一项分子与分母的和,分母是前一项的分子) 【程序】