15级C程序设计复习资料.docx
- 文档编号:25071899
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:44
- 大小:40.46KB
15级C程序设计复习资料.docx
《15级C程序设计复习资料.docx》由会员分享,可在线阅读,更多相关《15级C程序设计复习资料.docx(44页珍藏版)》请在冰豆网上搜索。
15级C程序设计复习资料
15级C程序设计复习资料
C语言练习题
(一)
一、判断题
1.C语言简洁、紧凑、移植性好,可以直接对硬件进行操作,并能编制出功能复杂的程序。
(×)
2.ab.c是C语言的合法标识符。
(×)
3.一个算法应该具有“确定性”、“有穷性”、“有效性”、“有零个或多个输入”、“有一个或多个输出”等五个特性。
(√)
4.一个C语言程序是由函数组成的。
(√)
5.设变量n是整型,j是实型,i是双精度型,则表达式10+‘n’+i*j值的数据类型为double型。
(√)
6.在C语言中,char型数据在内存中的存储形式是ASCII码。
(√)
7.若有如下定义inta,b;doublec;则其赋值语句是a=b=int(c);。
(×)
8.下列的优先级顺序为从低到高”<”→”%”→”+”→”!
=”。
(×)
9.设x、y和z是int型变量,且x=5,y=6,z=7,则!
((x z||1)=0。 (√) 10.设x、y和z是int型变量,且x=5,y=6,z=7,则x||y+z&&y-z=0。 (×) 11.判断char型变量c2是否为小写字母的表达式为(’a’>=c2)(’z’<=c2)。 (×) 12.字符串“a”在内存中占据的字节个数为2。 (√) 13.a、b是字符串,if(strcpy(a,b))是判断字符串a和b是否相等的语句。 (×) 14.for循环语句中,可以包含多条语句,但要用花括号括起来。 (√) 15.for循环是先执行循环体语句,后判定表达式。 (×) 16.for循环不仅能用于循环次数已经确定的情况,也可以用于循环次数不确定的情况。 (√) 17.在for循环中,不能用break语句跳出循环体。 (×) 18.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 (×) 19.do-while循环由do开始,用while结束,在while(表达式)后面要写分号。 (√) 20.在do-while循环体中,一定要有能使while后面表达式的值变成零(“假”)的操作。 (√) 21.do-while循环中,根据情况可以省略while。 (×) 22.C语句intn;scanf(“%d”,&n);inta[n];是对一维数组的合法定义。 (×) 23.C语句voidFun(intn){inta[2*n];…}是对一维数组的合法定义。 (√) 24.C语句inta[3*5];是对一维数组的合法定义。 (√) 25.C语句intn,a[2*n];是对一维数组的合法定义。 (×) 26.若二维数组a有n列,则在a[i][j]前面的元素个数为j*n+i。 (×) 27.若二维数组a有n列,则在a[i][j]前面的元素个数为i*n+j。 (√) 28.若二维数组a有n列,则在a[i][j]前面的元素个数为i*n+j+1。 (×) 29.当a=7,b=6,c=1时,表达式a>b! =c的值是1。 (√) 30.在C语言中,二维数组元素在内存中存放的顺序是按行存放的。 (√) 31.函数体包括声明部分和语句部分。 (√) 32.在函数调用中,如果是调用无参函数,则“实参表列”可以没有,但括号不能省略。 (√) 33.在函数调用中,如果实参表列包含多个实参,则各参数间用分号隔开。 (×) 34.在函数被调用结束后,其中的静态(static)局部变量的值会被继续保留,其占用的存储单元也不释放,在下一次再调用该函数时,该变量已有值。 (√) 35.指针变量中只能存放地址,不能将一个整数赋给一个指针变量。 (√) 36.变量的指针是指该变量的名。 (×) 37.若用数组名作为函数调用的实参,传递给形参的是数组的首地址。 (√) 38.若用a[1]作为函数调用的实参,传递给形参的是a数组中第一个元素的值。 (×) 39.do-while循环和while循环在第一次循环条件判断就为假时,执行循环的次数相同。 (×) 40在一个函数中,可以有多条return语句,但只执行其中的一条。 (√) 二、选择题 1.若以下选项中的变量已正确定义,则正确的赋值语句是。 A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3; 答案: C 2.若有以下程序段: intc1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是。 A)0B)0.5C)1D)2 答案: A 3.设x和y均为int型变量,则以下语句: x+=y;y=x-y;x-=y;的功能是。 A)把x和y按从大到小排列B)把x和y按从小到大排列 C)无确定结果D)交换x和y中的值 答案: D 4.以下4个选项中,不能被看作是一条语句的是。 A){;}B)a=0,b=0,c=0; C)if(a>0);D)if(b==0)m=1;n=2; 答案: D 5.在C语言中不合法的整数是。 A)20B)0x4001C)08D)0x12ed 答案: C 6.下列程序的运行结果是。 #include“stdio.h” voidmain() {inti=23; do{++i;} while(i); printf(“%d”,i); } A)23B)24C)死循环D)无任何结果 答案: C 7.下列关于单目运算符++、--的叙述中正确的是。 A)它们的运算对象可以是任何变量和常量 B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D)它们的运算对象可以是char型变量、int型变量和float型变量 答案: D 8.已定义ch为字符型变量,下列赋值语句中错误的是。 A)ch='\';B)ch=62+3;C)ch=NULL;D)ch='\xaa'; 答案: A 9.若有语句scanf(”%d%c%f”,&a,&b,&c),假设输入序列为2223a123o.12,a、b、c的值为。 A)无值B)2223,a,123o.12 C)2223,a,无D)2223,a,123 答案: D 10.语句“printf("%d",(a=2)&&(b=-2));”的输出结果是。 A)无输出B)结果不确定C)-1D)1 答案: D 11.已定义c为字符型变量,则下列语句中正确的是。 A)c='97'B)c=“97“C)c=97D)c=“a” 答案: C 12.若有程序段: for(m=1;m<=100;m++) { scanf("%d",&y); if(y<0)continue; printf("%3d",m); } 正确的描述是()。 A)当y<0时整个循环结束B)y>=0时什么也不输出 C)printf函数永远也不执行D)最多允许输出100个非负整数 答案: D 13.sizeof(float)是()。 A)一个双精度型表达式B)一个整型表达式 C)一种函数调用D)一个不合法的表达式 答案: B 14.设c1,c2均是字符型变量,则以下不正确的函数调用为()。 A)scanf(“c1=%cc2=%c”,&c1,&c2);B)c1=getchar(); C)putchar(c2);D)putchar(c1,c2); 答案: D 15.有定义如下: charstr1[50],str2[20],ch; 则下列语句中正确的是()。 A)str1={“Crazy”};B)str1={“Crazy”}; str2=str1;str2={“English”}; strcpy(str1,str2); C)ch=“xy”;D)ch='x'; 答案: D 16.以下非法的赋值语句是。 (A)n=(i+2,i++);(B)j++;(C)++(i+1);(D)x=j>0; 答案: C 17.有以下程序 #include voidmain() {intx=102,y=012; printf(“%2d,%2d\n”,x,y); } 执行后输出结果是。 (A)10,01(B)02,12(C)102,10(D)02,10 答案: C 18.若变量a是int类型,并执行了语句: a=’A’+1.6;,则正确的叙述是。 (A)a的值是字符C(B)a的值是浮点型 (C)不允许字符型和浮点型相加(D)a的值是字符'A'的ASCII值加上1 答案: D 19.下列运算符中优先级最高的是 A)! B)%C)-=D)&& 答案: A) 20.以下定义语句中正确的是。 A)chara='A'b='B';B)floata=b=10.0; C)inta=10,*b=&a;D)float*a,b=&a; 答案: C 21.设有如下程序段 intx=2002,y=2003; printf("%d\n",(x,y)); 则以下叙述中正确的是。 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为2002 D)输出值为2003 答案: D 22.如果在用户的程序中使用C语言库函数中的sqrt函数,应在该源文件中使用的include命令是。 A)#include C)#include 答案: B 23.下面的程序。 #include voidmain() { intx=3,y=0,z=0; if(x=y+z) printf("****"); else printf("####"); } A)有语法错误不能通过编译 B)输出**** C)可以通过编译,但是无法连接,因而不能运行 D)输出#### 答案: D 24.putchar函数可以向终端输出一个。 A)整型变量表达式的值B)实型变量的值 C)字符串D)字符或字符型变量的值 答案: D 25.已知ch是字符型变量,下面不正确的赋值表达式是。 A)ch='a+b'B)ch='\0'C)ch='7'+'9'D)ch=5+9 答案: A 26.C语言中,运算对象必须是整形数的运算符是_______。 A)*B)%C)+D)/ 答案: B 27.已知intt=1;t+=9;y=t++;则y=_______。 A)11B)10C)9D)1 答案: B 28.分析以下程序,其输出结果是_______。 #include"stdio.h" voidmain() { inta,b,c=210; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } A)210,-1B)210,C)2,-1D)2,1 答案: D 29.有以下程序 #include voidmain() { printf("%d\n",NULL); } 程序运行后的输出结果是。 A)0B)1C)-1D)NULL没有定义,出错 答案: A 30.下列程序输入’a’字母后,执行程序后输出的结果是。 #include voidmain() { charc; c=getchar(); c=c-32; printf("%c\n",c); } A)65B)AC)97D)a 答案: B 31.以下选项中不能作为合法常量的是______。 A)1.234e04B)1.234e0.4C)1.234e+4D)1.234e0 答案: B 32.有以下程序 #include voidmain() { intm=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m); } 程序运行后的输出结果是______。 A)12353514B)12353513C)12343514D)12343513 答案: A 33.以下叙述中正确的是______。 A)调用printf函数时,必须要有输出项 B)使用putchar函数时,必须在之前包含头文件stdio.h C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 答案: B 34.以下描述不正确的是。 A.使用while和do-while循环时,循环变量初始化的操作应在循环体语句之前完成 B.while循环是先判断表达式,后执行循环语句 C.do-while和for循环均是先执行循环语句,后判断表达式 D.for、while和do-while循环中的循环体均可以由空语句构成 答案: C 35.已知x=3、y=2,则表达式x*=y+8的值为。 A)3B)2C)30D)10 答案: C 36.以下循环体的执行次数是。 #include voidmain() { inti,j; for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d\n",i); } A)3B)2C)1D)0 答案: C 37.下面程序的输出结果是()。 #include voidmain() { intx=5,a=0,b=0; if(x! =(a+b))printf("x=5\n"); elseprintf("a=b=0\n"); } A)有语法错,不能通过编译B)通过编译,但不能连接 C)x=5D)a=b=0 答案: C 38.若变量已正确定义,要求程序段写成5! 的计算,不能完成此操作的程序段是()。 A)for(i=1,p=1;i<=5;i++)p*=i; B)for(i=1;i<=5;i++){p=1;p*=i;} C)i=1;p=1;while(i<=5){p*=i;i++;} D)i=1;p=1;do{p*=i;i++;}while(i<=5); 答案: B 39.有如下程序 #include voidmain() { inti,sum; for(i=1;i<=3;sum++) printf("%d\n",sum); } 该程序的执行结果是。 (A)6(B)3(C)死循环(D)0 答案: C 40.已知x、a、b、c、d均为int型变量,则执行如下程序段后,x的值是_______。 a=1;b=2;c=3;d=4; x=(a a: b; x=(a a: c; x=(a a: d; A)4B)3C)2D)1 答案: D 41.以下结论中正确的是_______。 A)break语句是switch语句中的一部分 B)switch语句中可以根据需要使用或不使用break语句 C)break语句只能用于循环结构中 D)以上三个结论中没有一个正确 答案: B 42.运行下列程序段后a的值是_______。 inta=10; switch(a) { case9: a++; case10: a++; case11: a++; default: a++; } A)11B)12C)13D)10 答案: C 43.关于以下三条语句的描述中,正确的是_______。 if(a)a=1;elsea=2;if(a==0)a=2;elsea=1;if(a! =0)a=1;elsea=2; A)三条语句相互等效B)三条语句中与等效 C)三条语句中与等效D)三条语句各不等效 答案: A 44.下面程序的运行结果为_______。 #include voidmain() { inti,sum; i=1,sum=0; for(;i<=10;) ++i; sum=sum+i; printf("i=%dsum=%d\n",i,sum); } A)i=11,sum=55B)i=10,sum=55 C)i=11,sum=11D)形成死循环 答案: C 45.在以下程序段中,while循环招待的次数是_______。 intk=0; while(k=1)k++; A)循环体将执行一次B)循环体将一次也不执行 C)循环体将执行无限次D)会提示有语法错误 答案: C 46.以下对结构体类型变量td的定义中,错误的是。 (A)typedefstructaa(B)structaa {intn;{intn; floatm;floatm; }AA;}td; AAtd;structaatd; (C)struct(D)struct {intn;{intn; floatm;floatm; }aa;}td; structaatd; 答案: C 47.给出以下定义 charx[]="abcdefg"; chary[]={'a','b','c','d','e','f','g'}; 则正确的叙述为。 A)数组x和数组y等价 B)数组x和数组y的长度相同 C)数组x的长度大于数组y的长度 D)数组x的长度小于数组y的长度 答案: C 48.设有以下说明语句 structex { intx;floaty;charz; }example; 则下面的叙述中不正确的是 A)struct是结构体类型的关键字B)example是结构体类型名 C)x,y,z都是结构体成员名D)structex是结构体类型名 答案: B 49.表达式strcmp("box","bottle")的值是。 A)正整数B)负整数C)0D)不确定的数 答案: A 50.若有语句: char*line[5];,以下叙述中正确的是______。 A)定义line是一个指针数组,每个数组元素是一个基类型为char的指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 答案: A 51.以下语句或语句组中,能正确进行字符串赋值的是______。 A)char*sp;*sp="right! ";B)chars[10];s="right! "; C)chars[10];*s="right! ";D)char*sp="right! "; 答案: D 52.下面程序段的运行结果是。 charstr[]="ABC",*p=str; printf("%d\n",*(p+3)); A)67B)0 C)字符‘C’的地址D)字符‘C’ 答案: B 53.若有说明: intj,k=7,*p=&j; 则与j=k;等价的语句是() A.j=*p;B.*p=*&kC.j=&k;D.j=**p; 答案: B 54.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是。 A)chars[10]="abcdefg";B)chart[]="abcdefg",*s=t; C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg"); 答案: C 55.若有定义语句: int(*p)[M];,其中的标识符p是 A)M个指向整型变量的指针 B)指向M个整型变量的函数指针 C)一个行指针,它指向具有M个整型元素的一维数组 D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量 答案: C 56.以下叙述中正确的是。 A)全局变量的的作用域一定比局部变量的作用域范围大 B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 C)函数的形参都属于全局变量 D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值 答案: B 57.C语言程序由函数组成。 以下说法正确的是()。 A)主函数必须在其它函数之前,函数内可以嵌套定义函数 B)主函数可以在其它函数之后,函数内不可以嵌套定义函数 C)主函数必须在其它函数之前,函数内不可以嵌套定义函数 D)主函数必须在其它函数之后,函数内可以定义函数 答案: B 58.返回值为void的函数,其含义是()。 A)调用函数之后,被调用的函数没有返回值 B)调用函数之后,被调用的函数不返回 C)调用函数之后,被调用的函数的返回值为任意的类型 D)以上三种说法都是错误的 答案: A 59.若用数组名作为函数调用的实参,传递给形参的是()。 A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 答案: A 60.一个函数返回值的类型是由()。 A)return语句中的表达式类型决定 B)定义函数时所指定的函数类型决定 C)调用该函数的主调函数的类型决定 D)在调用函数时临时指定 答案: B 61.以下关于函数的叙述中正确的是______。 A)每个函数都可以被其它函数调用(包括main函数) B)每个函数都可以被单独编译 C)每个函数都可以单独运行 D)在一个函数内部可以定义另一个函数 答案: B; 62.下面程序中存在语法错误,关于错误的原因正确说法是()。 #include voidp_ch1(); voidmain() { inta=5,b; … b=p_ch1(A); } A)语句voidp_ch1();有错,它是函数调用语句,不能使用void说明 B)变量名不能使用大写字母 C)函数说明和函数调用语句之间有矛盾 D)函数名中不能使用下划线 答案: C 三、程序填空 1、下面程序的功能是将字符串中大写字母转换为对应小写字母之后的第四个字母;若小写字母为v~z,使小写字母ASCII值减15。 例如,若形参是字母A,则转换为小写字母e;若形参是字母W,则转换为小写字母h。 #include intfun(chars[]) {inti; f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 程序设计 复习资料