c语言期末总复习对答案作了小小的修改仅供参考错了求轻喷.docx
- 文档编号:15382463
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:13
- 大小:35.73KB
c语言期末总复习对答案作了小小的修改仅供参考错了求轻喷.docx
《c语言期末总复习对答案作了小小的修改仅供参考错了求轻喷.docx》由会员分享,可在线阅读,更多相关《c语言期末总复习对答案作了小小的修改仅供参考错了求轻喷.docx(13页珍藏版)》请在冰点文库上搜索。
c语言期末总复习对答案作了小小的修改仅供参考错了求轻喷
期末总复习
一.填空
1.已知charch=’A’;则下列表达式的值是:
a、
Ch=(ch>=’A’&&ch<=’Z’)?
(ch+32):
ch;(括号内语句为真则选择前面的,为假则选择后面的)
2.若x=1,y=2,z=3,则表达式z+=++x+y++之值是7
(++在前先加后用,++在后先用后加)
3.若x=2,y=3,则x%=y+3之值为2
4..若有定义inty=3;floatz=5.2,x=4.8;则表达式y+=(int)x+x+z的值为17.0(int+float=doule)
5.设x,y,z为int型变量,且x=3,y=-4,z=5,请写出下列各表达式的值
1)(x&&y)==(x||z)1
(1)==
(1)为真,所以值为1
2)!
(x>y)+(y!
=z)||(x+y)&&(y-z)1
0+1=1;因为y!
=z已经为1,所以不用在运算||之后的表达式
3)x++-y+(++z)13
(++在前先加后用,++在后先用后加)
6.设x,y,z为int型变量,请用C语言表达式描述下列命题
1)x和y中有一个小于z(x 2)x,y和z中有两个为负数(x<0)+(y<0)+(z<0)==2 3)y是奇数abs(y)%2==1 7.下面for循环语句最多可执行4次 For(x=0,y=0 ;(y ! =99)&&(x<4) ;x++) 8.设i,j,k均为int型变量,则执行以下for语句后,k的值是10 For(i-0,j=10 ;i<=j ;i++,j__) (这里题目不知道是不是有问题……个人认为如果是For(i=0,j=10 ;i<=j ;i++,j--)的话) K=i+j ; 9.若已知x,y,z,m,n均为int型变量,则执行下面语句后,x的值为7y的值为9z的值为7 m=10;n=5; x=(--m==n++)? --m: ++n;(在第一个n++时n已经+1,然后++n输出为7) y=m++;(在第一个--m时m已经-1,然后m++输出为9) z=n;(在++n时n已经再次+1,然后n输出为7) 10.若有说明语句: w=1,x=2,y=3,z=4;则表达式w>x? W: z>y? z: x值是4(? : 运算符结合方向是从右到左) 11.若定义的函数没有返回值时,则应该在该函数定义时加上类型说明符void 12.凡在函数中未指定存储类型的变量,其隐含的存储类别为自动变量 13.在C语言中,一个函数直接或间接地调用自身,编构成函数的递归调用 14.如果被调用的自定义函数和调用函数不再同一个文件中,则在应以函数的文件中应将该文件的存储类型定义成外部函数型,在调用函数的文件中将该函数说明为extern型。 15.对于所定义的二维数组a[2][3],元素a[1][2]是数组的第6个元素。 16.若有定义: char*str=”Iamastudent.”;则字符串在存储单元中占16个字节。 (最后还有一个’\0’所以是16个) 17.在执行inta[][3]={{1,2},{3,4}};语句后,a[1][2]的值是0。 18.调用strlen(”abc\0ef\0g”)的返回值是3 19.设有定义: chars[12]=”string”;则printf(”%d\n”,strlen(s));的输出值是6 20.执行下列程序段后, inta[5]={1,3,5,7,9};*p=a;p++; *p等于3 二.判断(trueorfalse)(仅供参考、这货果然还是问老师要答案吧) 1.调用函数时,实参的类型、个数和顺序与函数定义时形参的类型、个数和顺序完全一致。 T 2.函数可以嵌套定义F 3.函数必须有返回值,否则不能正确作用F 4.C程序中有调用关系的所有函数必须放在同一源程序文件中。 F 5.全局变量与函数体内定义的局部变量重名时,局部变量不起作用。 F(局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量) 6.函数定义时可以不制定形参的类型,函数调用时有实参的类型决定形参的类型F 7.当函数定义放在main()函数前面时,可以缺省函数声明。 (看不懂==) 8.C语言中允许函数嵌套调用T 9.局部静态变量是在编译时赋初值的,即只赋一次初值。 T 10.外部变量必须定义在文件的开头部分F 11.字符’\0’是字符串的结束标记,其ASCII码为0.T 12.若有说明 : inta[3][4]={0};则数组a中每个元素的初值都为0.T 13.若有说明 : inta[2][4]={0,0};则只有a[0][0]和a[0][1]的初值为0,其余元素的初值均不为0.F 14.若有说明 : inta[3][4];则数组a中各元素可在程序的编译阶段达到初值0F 15.若用数组名作为函数调用时的实参,则实际上传递给形参的是数组的第一和元素值。 F 16.在两个字符串的比较中,字符个数多的字符串比字符少的字符串大。 F 17.当需要接受用户从键盘上输入的含有空格的字符串时,应使用gets()函数。 T 18.在C语言中,二维数组元素在内存中的存放顺序合一随意调整变化。 F 19.&b指的是变量b的地址处所存放的值;F 20.指针变量可用于保存同类型变量的地址值;T 21.存放地址的变量同其他类型的变量一样,可以存放任何类型的数据;T 22.指向同一数组的两指针p1,p2相减的结果与所指元素的下标相减的结果是相同的。 T 23.如果定义函数时参数是指针变量,那么,调用函数时的参数就可以是同类型的指针变量,数组名或简单变量的地址T 24.char*name[5]定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。 T 25.语句y=*p++;和y=(*p)++;是等价的。 F 26.函数指针指向的是函数的入口地址。 T 27.int*p;定义了一个指针变量,其值是整型的。 F 28.用指针作为函数参数时,采用的是“地址传送”方式T 三、选择题 1.下列变量名中哪些是合法的? π2aa#C$t3_varθint 2.语言中用________表示逻辑值“真”。 A)trueB)整型值0C)非零整数值D)T 3.下列合法的字符常量为________。 A)"a"B)'\n'C)'china'D)a 4.设有语句charc='\72';则变量c________。 A)包含1个字符B)包含2个字符C)包含3个字符D)不合法 5.字符常量"\t\"Name\\Address\n"的长度为________。 A)19B)15C)18D)不合法 6.设a,b,c为int型变量,且a=3,b=4,c=5,下面表达式值为0的是________。 A)'a'&&'b'B)a<=b C)a||b+c&&b-cD)! ((a c||1) 7.若有以下定义: chara;intb;floatc;doubled; 则表达式a*b+d–c的值的类型为_____________ A)floatB)intC)charD)double 8.设有语句inta=3;执行了语句a+=a-=a*a;后,变量a的值是________。 A)3B)0C)9D)-12 9.设有语句inta=3;执行了语句printf("%d",-a++);后,输出的结果是__C______,变量a的值是____B____。 A)3B)4C)-3D)-2 10.将下列数学表达式表示为合法的C语言表达式。 (1) (2) (3) (4) (5) (6) 12.下列可作为C语言赋值语句的是: _____________。 A)x=3,y=5B)a=b=cC)i--;D)y=int(x); 13.以下程序的输出结果为: _____________。 main() { inta=2,c=5; printf("a=%%d,b=%%d\n",a,c); } A)a=%2,b=%5B)a=2,b=5C)a=%%d,b=%%dD)a=%d,b=%d (卧槽这题…难道我没认真听课? 完全不知道这东西…… printf("%%d");会输出%d 因为%用来作格式符,如%c,%与c搭配表示输出一个字符,%d表示输出一个整数。 而%%表示输出一个%) 14.在下面的条件语句中,只有一个在功能上与其它三个语句不等价(其中s1和s2表示它是C语句),这个不等价的语句是: 。 A)if(a)s1;elses2; B)if(! a)s2;elses1; C)if(a! =0)s1;elses2; D)if(a==0)s1;elses2; 15.设有声明语句: inta=1,b=0;则执行以下语句后输出为: 。 switch(a) { case1: switch(b) { case0: printf("**0**");break; case1: printf("**1**");break; } case2: printf("**2**");break; } A)**0**B)**0****2**C)**0****1****2**D)有语法错误 16.在while(x)语句中的x与下面条件表达式等价的是: 。 A)x==0B)x==1C)x! =1D)x! =0 17.若intx;且有下面的程序片断,则输出结果为: 。 for(x=3;x<6;x++) { printf((x%2)? "**%d": "##%d\n",x); } A)**3B)##3C)##3D)**3##4 ##4**4**4##5**5 **5##5 18.以下能对外部的一维数组a(含有10个元素)进行正确初始化的语句是: 。 A)inta[10]=(0,0,0,0,0); B)inta[10]={}; C)inta[]={0}; D)inta[10]={10*1};(只对第一个元素赋值) 19.以下能对外部的二维数组a进行正确初始化的语句是: 。 A)inta[2][]={{1,0,1},{5,2,3}}; B)inta[][3]={{1,2,1},{5,2,3}}; C)inta[2][4]={{1,2,1},{5,2},{6}}; D)inta[][3]={{1,0,2},{},{2,3}}; 20.若二维数组a有m列,则在a[i][j]之前的元素个数为: 。 A)j*m+iB)i*m+jC)i*m+j-1D)i*m+j+1 21.已知: staticinta[3][4];则数组a中各元素。 A)可在程序运行阶段得到初值0B)可在程序编译阶段得到初值0 C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0 (书P207最上面有提及,不知道你们怎么理解_(: з)∠)_) 22.判断字符串s1是否大于字符串s2,应当使用: 。 A)if(s1>s2)B)if(strcmp(s1,s2)) C)if(strcmp(s2,s1)>0)D)if(strcmp(s1,s2)>0) 23..若用数组名作为函数调用时的实参,则实际上传递给形参的是: 。 A)数组的首地址;B)数组的第一个元素值; C)数组中全部元素的值;D)数组元素的个数。 24.在函数调用时,以下说法中正确的是: 。 A)在C语言中,实参与其对应的形参各占独立的存储单元; B)在C语言中,实参与其对应的形参共占同一个存储单元; C)在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元; D)在C语言中,形参是虚拟的,不占存储单元。 25.C语言中形参的缺省存储类别是: 。 A)自动(auto)B)静态(static)C)寄存器(register)D)外部(extern) 26.C语言规定: 简单变量做实参时,它和对应形参之间数据的传递方式为: 。 A)地址传递;B)单向值传递; C)由实参传给形参,再由形参传回给实参;D)由用户指定传递方式。 27. (1)阅读程序,选择程序的运行结果。 #include intTry(intn) { if(n>0) return(n*Try(n-2)); else return1; } main() { intx; x=Try(5); printf("%d\n",x); } A.15B.120C.1D.前面三个答案都是错的 (2)下面的函数f两次进行调用,请选择程序的运行结果。 #include intFun(intm) { staticintn=0; m/=2; m=m*2; if(m) { n*=m; return(Fun(m-2)); } else returnn; } main() { inta,i,j; for(i=0;i<2;i++) { a=Fun(4+i); printf("%d\n",a); } } ①第一次输出的结果A.8B.0C.64D.4 ②第一次输出的结果A.8B.0C.64D.4 28.指向变量的指针,其含义是指该变量的 A)值B)地址C)名D)一个标志 29.若int(*p)[5] ;,则其中p的含义是 A)5个指向整形变量的指针; B)指向5个整形变量的函数指针; C)一个指向具有5个整形元素的一维数组的指针; D)具有5个指针元素的一维数组指针,每个元素都只能指向整型量; 30.设有定义: inta=3,b,*p=&a;则下列语句中使b不为3的语句是 A)b=*&a;B)b=*P;C)b=a;D)b=*a; 31.设char**s;则以下表达式中,正确的是 A)s=”computer”;B)*s=”computer”; C)**s=”computer”;D)*s=’s’ (个人理解: 由于char**s表示定义一个指向字符指针变量的指针变量,则如果设这个字符数组(假设地址为2000~2009)存放着”computer”,那么引用*s可以获得指向该字符数组的地址(也就是字符串首字符的地址2000),*s是以该数组长度为单位的(也就是9个字节);而引用**s可以获得该字符数组的首字符,它是以字符为单位的(1个字节)。 所以*s表示字符数组也就是”computer”这个字符串,而**s表示该字符串的首字符也就是’c’这个字符 如果错了求轻虐_(: з)∠)_) 32.设chars[10],*p=s;,以下表达式中不正确的是 A)p=s+5;B)s=s+p;C)s[2]=p[4];D)*p=s[0]; (原因和P235页最上面那两行字差不多意思) 33.执行下列程序段后,*p等于 inta[5]={1,3,5,7,9},*p=a;p++ A)1;B)3;C)5;D)7; 程序设计题 1.编程计算1*2*3+3*4*5+99*100*101的值。 2.编程计算a+aa+aaa+….+aa..a(n个a)的值,n和a的值由键盘输入。 3.利用 前100项之积计算π。 4.编程计算 的值。 (m,k从键盘上输入,m>k) 5.用整数1-12依次表示1-12月,由键盘输入一个月份数,输出对应的季节英文名称(12-2月为冬季,3-5月为春季,6-8月为夏季,9-11月为秋季),要求输入输出表达的意义清楚明白。 6.编程打印以下图形 1 12 123 1234 … 7.用递归的方法求n的阶乘 8.编写求两个整数的最大公约数和最小公倍数的函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末 复习 答案 小小 修改 仅供参考 求轻喷