期未复习模拟习题及答案_第1页
期未复习模拟习题及答案_第2页
期未复习模拟习题及答案_第3页
期未复习模拟习题及答案_第4页
期未复习模拟习题及答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、期未复习模拟习题及答案一、选择题1、当执行以下程序段时 ( B ) A)循环体将执行一次 B)循环体将执行两次 C)循环体将执行无限次 D)系统将提示有语法错误 x=-1; do x=x+1; while(!x); 2、设有int a =10,11,12,*p=&a0;则执行完*p+;*p+=1;后a0,a1,a2的值依次是 ( C ) A.10,11,12 B.11,12,12 C.10,12,12 D.11,11,123、在C+语言程序中( B ) (A) 函数的定义可以嵌套,但函数的调用不可以嵌套 (B) 函数的定义不可以嵌套,但函数的调用可以嵌套 (C) 函数的定义和函数的调用

2、均不可以嵌套 (D) 函数的定义和函数的调用均可以嵌套 4、以下叙述中不正确的是( 都正确 ) (A)在函数中,通过return语句传回函数值 (B)在函数中,可以有多条return语句(C)在C+中,main后的一对圆括号中也可以带有形参 5、执行语句:cout<<strlen(”abctdefg”); 后,显示的值为( C ) A、11 B、10 C、9 C、86、下列各个错误中,属于编译错误的是( D )。 A、数组下标超界 B、"= ="误写为"=" C、死循环 D、括号不配对7、要为字符型变量a赋初值,下列语句中哪一个是正确的( A

3、 )。 A、char a='3' B、char a="3" C、char a=%; D、char a=*;8、对C程序在作逻辑运算时判断操作数真、假的表述,下列哪一个是正确的( A )。 A、0为假,非0为真 B、只有1为真 C、-1为假,1为真 C、0为真,非0为假9、将整型变量a、b中的最大值为变量c赋值,下列语句中正确的是( B )。 A、c= =(a>b)? a:b; B、c=(a>b)? a:b; C、c=if(a>b)a else b; D、(a>b)? c=a:c=b;10、下列语句中,哪一个可以按照从z到a的顺序输出2

4、6个小写英文字母( D )。 A、for(i='z' i>='a' i+) cout<<i; B、for(i='z' i>='a' cout<<i-); C、for(i='z' i>='a' i+) cout<<i ; D、for(i='z' i>='a' -i ) cout<<i ;11、下列各语句定义了数组,其中哪一个是正确的( D )。 A、int a5,b2,3; B、char no(30

5、); C、int x; D、int x5=1,2,3;12、假如指针P已经指向某个整型变量x,则&*P相当于( C )。 A、x B、 * P C、 &x D、 * * p13、数组定义为"int a55;", 引用"*(a+1)+3"表示( B )。 A、a10+3 B、 a数组第1行第3列元素的地址 C、a01+3 D、 a数组第1行第3列元素的值14、与定义int *p4等价的是( C ) (A)int p4; (B)int * p; (C)int * (p4) ; (D)int (*p)4;15、C+语言可执行程序的开始执行点是(

6、 C ) (A) 程序中第一条可执行语言 (B) 程序中第一个函数 (C) 程序中的main函数 (D) 包含文件中的第一个函数 16、以下字符中,不正确的C语言转义字符是: (D) (A) ' t' (B) ' 011' (C) ' n' (D) ' 018'17、假设所有变量均为整型,表达式 (a=10,b=5,ab? a+:b+,a+b)的值是(C) (A)7 (B)8 (C)16 (D)2 18、程序运行输出了错误的结果,可以排除下列哪一个因素( C )。 A算法错误 B、运行时输入数据错误 C、未通过编译 D、系统资源配

7、置不当19、逻辑运算符中,运算优先级按从高到低依次为( D )。 A、&&, !, | B、|,&&, ! C、&&, |, ! D、!,&&, |20、下列各语句序列判别变量x, y的大小,若x<y则交换它们的值,其中正确的是( B)。 A、if (x<y) x=y;y=x; B、if (x<y) t=x;x=y; y=t; C、if ( x<y) x=y;y=x; D if (x<y) t=x;x=y; y=t;21、假如指针p1已经指向某个整型变量,要使指针p2也指向同一个变量,哪一个语句是正确

8、的( C )。 A、p2=&p1; B、p2=*p1; C、p2=&*p1; D、p2=*p1;22、数组定义为"ingt a45;", 引用"a1+3"表示( A )。 A、a数组第1行第3列元素的地址 B、a数组第1行第3列元素的值 C、a数组第4行的首地址 D、a数组第4列的首地址 23、以下叙述中正确的是( A )A、 a是实型变量,C允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。B、 在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。C、 执行表达式a=b后,在内存中a和b存储单元中的原有值都将改变

9、,a的值已由原值改变为b的值,b的值由原值变为0。D、 已有a=3,b=5。当执行了表达式a=b,b=a后,已使a中的值为5,b中的值为3。24、以下叙述中正确的是( C )A、 在C程序中无论是整数还是实数,只要在允许的范围内都能准确无误的表示。B、 C程序有主函数组成。C、 C程序由函数组成。D、 C程序由函数和过程组成。25、若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( C )A、a=a+b,b=a-b,a=a-b; B、t=a,a=b,b=t;C、a=t,t=b,b=a; C、t=b;b=a;a=t;26、为表示关系x>=y>=z,应使用的C语言表达式

10、是( A )A、(x>=y)&&(y>=z) B、(x>=y)AND(y>=x)C、(x>=y>=z) C、(x>=y)&(y>=z)27、以下函数的类型F是( C )A、与参数x的类型相同 B、无法确定 C、void类型 D、int 类型F ff(float x) cout<<x*x;28、下列各语句定义了数组,其中哪一个是不正确的( D )。A、int s_15,s_243; B、float x, a45;C、char string ="hello!" D、int x (10),y(10

11、);29、假设所有变量均为整型,表达式 (a=2,b=5,ab? a+:b+,a+b)的值是( A ) (A)7 (B)8 (C)9 (D)2 30、将整型变量a、b中的最大值为变量c赋值,下列语句中正确的是( B )。A、c= =(a>b)? a:b; B、c=(a>b)? a:b;C、c=if(a>b)a else b; D、(a>b)? c=a:c=b;二、填空题1、设int x=17,y=5; 执行语句x* =x+ +/ - -y后x的值为 69 。2、已知直角三角形的直角边长a,b,计算其面积的算术表达式为 double(a*b)/2 。3、计算a- b的绝对

12、值与a+b的绝对值之乘积的算术表达式为 abs(a-b)*abs(a+b) 。4、判断变量a是变量a、b、c中最大值的逻辑表达式为 a>=b&&b>=c 。5、判断整型变量m是否能被n整除的逻辑表达式为 m%n=0 。6、求解赋值表达式x= (a = 3, a* a), 表达式值、x、a的值依次为 9 , 3 。7、若a=13, b=25, c= -17, 条件表达式(y= (a<b) ? a:b)< c)? y: c的值为: -17 。8、整型变量m的值为31,语句printf("m =%x",m);的输出结果为 m=1F 。9、定

13、义a为共有5个元素的一维整型数组、同时定义p为指向a数组地址的指针变量的语句为: int a5,(*P)5=&a; 。10、当a=5,b=4,c=2时,表达式a>b!=c的值是 1 。11、语句"printf("%x,%o",16,12);"的输出结果是 10,14 。12、设 a=12 则表达式a+=a和a*=2运行后a 的值分别为 48 。13、有定义: static int a3=1,2,3,4,0,4,8,9,10,则cout<<*(*(a+1)+2);语句的输出结果为 4 。14、若已知a=10,b=15,c=1,d=

14、2,表达式a*b&&c的运算结果 1 。15、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是交换x与y的值。16、定义int a=12,b=12;则语句 cout<<(-a,+b);的输出结果是: 13 。 17、执行语句:for(i=1;i+<4;)后;变量i的值是 5 。18、在C+语言中,指针变量的值增1,表示指针变量指向下一个_内存单元_,指针变量中具体增加的字节数由系统自动根据指针变量的_所指向的数据类型_决定。19、语句cout<<strlen(t0x85xffn);的输出结果是_5_ 。20、假设所有变

15、量均为整型,表达式 (a=2,b=5,ab? a+:b+,a-b)的值是 -4 。 21、在C+语言中,能代表逻辑值"真"的是 非0 。22、为表示关系x>=y>=z,应使用C语言表达式 x>=y&&y>=z 。23、算术表达式,对应的C+表达式是(-b+sqrt(b*b-4*a*c)/(2*a)。24、typedef char nameTable10NN,把nameTable 定义为具有10行的字符串数组类型。25、P为一指针变量,将P所指向单元的数据增1并作为表达式的值的表达式为+*P。26、已知数组a定义为:int a46;,p

16、是一个一维数组;要使下标访问pij与aij等效,p应定义为 int * p4=a0,a1,a2,a3; 27、假定AB为一个类,则执行“AB a10”语句时,系统自动调用该类构造函数的次数为10次。28、当一个类对象被撤消时将自动调用该类的析构系数。29、假定AB为一个类,则执行“AB *p”语句时,系统自动调用该类构造函数的次数为0次。30、假定一个构造类型定义为“struct Dint a; unionint b;doouble c;D*d3;”,该类型的大小为24字节。三、给出下列程序运行后的结果(每小题5分,共20分)1、 以下程序的输出结果为 -1 。main() int x=2;

17、while (x-); cout<<x<<endl;2、以下程序的运行结果是 6 。 main() int m=5; if (m+ > 5) cout<<m<<endl; else cout<< m<<endl;3、当执行以下程序段后,i的值为 5 、j的值为 4 、k的值为 6 。int a,b,c,d,i,j,k;a=10; b=c=d=5; i=j=k=0;for( ; a>b; +b) i+;while (a>+c) j+;do k+; while (a>d+);4、以下程序的输出结果是 8

18、 。main() int k=2,m=4,n=6; int *pk=&k, *pm=&m, *p; *(p=&n)=*pk*(*pm); cout<<n<<endl;5、以下程序的输出结果是 4 。fun1(int a, int b) int c;a+=a; b+=b;c=fun2 ( a, b );return c*c;fun2( int a, int b) int c; c=a*b%3; return c;main() int x=11,y=19; cout<<fun1(x,y) <<endl;6、以下程序的输出结果是

19、 z=7 , r=21 。 func(int a, int b) int c; c=a+b; return c;main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); cout<<z<<” , “<<r<<endl;7、以下程序的输出结果为 2 3 main() int aa33=2,4,6,i,*p=&aa00;for(i=0;i<2;i+) if(i=0) aaii+1=*p+1; else +p;cout<<*p;cout<<endl;8、下列程序运行的输出结果

20、: 7 , 5 。 #define X 5 #define Y X+1 #define Z Y*X/2 main() int a; a=Y; cout<<Z<<” “<<-a<<endl; 9、下列程序运行的输出结果:constructor! 7constructor! 5#include <iostream.h>class Aint a,b;public:A(int aa=0,int bb=0):a(aa),b(bb)cout<<"constructor! "<<a+b<<en

21、dl;void main()A x(2,5),y5,*p=&x;10、下列程序运行的输出结果: abc in #include <iostream.h>#include <string.h>void main( ) char s110=“abc” char s220=“inter”; int k=0,j=0; while (s2k) k+; while(s1j) s2-k=s1+j; cout<<s1<<endl; cout<<s2<<endl;四、写出下列每个函数的功能(每小题5分,共20分)1、findmax

22、(int s , int t) int k,p; for(p=0, k=p; p<t; p+) if (sp>sk) k=p; return k;答: 找出具有长度p的整型数组s 中最大数的下标并返回2、#include <iostream.h>#include <stdio.h>#include <ctype.h>void main()int num26=0, i;char c;cin>>c;while(c!='')if (isupper(c) numc-'A'+=1;cin>>c;for

23、( i=0; i<26; i+)if (numi) cout<< char(i+'A')<<numi<<endl;答 : 程序的功能是输入若干个字符,统计每个大写字母的出现频度,若大写字母在文中不出现,则不统计,程序以输入”结束。3、#include "string.h"void fun(char str) int i,j,k; for(i=0,j=strlen(str)-1; i<j; i+,j-) k=stri; stri=strj; strj=k; 答:把一个字符串中的字符排列顺序倒过来。4、#inclu

24、de<iostream.h>void main() for (int i=0;i<6;i+) int j; for (j=0;j<5-i;j+) cout<<' ' for (j=0;j<10;j+) cout<<'*' cout<<endl; 答:打印以星号组成的平行四边形,共打印6行,每行10个星号;结果如下: 5、#include<iomanip.h>long fact(long n) if(n<=1L) return n; return fact(n-1)+fact(n-

25、2); void main() cout<<fact(4)<<endl;答:输出斐波那契数列的第四项的值 结果是3 ; 注斐波那契数列为 0,1,1,2,3,5,8,13,21, ;开始为第0项,每一项是前二项之和。6、#include <iostream.h>class compint a; int b;public:comp(int x=0,int y=0):a(x),b(y) double operator*(comp &x)double c;c=a*x.a+b*x.b;return c;void input(int x,int y)a=x;b

26、=y;void output()cout<<'('<<a<<','<<b<<")"<<endl;void main()comp x(10,20),y;double z;y.input(2,3);z=x*y; x.output();y.output();cout<<z<<endl;答:程序的输出为:(10,20)(2,3)80.0000007、#include <iostream.h>#define SIZE 10void main()i

27、nt dataSIZE;int m;cout<<"请输入"<<SIZE<<"个整数:"for(m=0;m<SIZE;m+)cin>>datam;int j=0,k=0;for(int i=1;i<SIZE;i+)if(datai>dataj)j=i;else if(datai<datak)k=i;if(k>0)int d=data0;data0=datak;datak=d;if(j!=1)int d=data1;data1=dataj;dataj=d;for (m=0;m<

28、;SIZE;m+)cout<<datam<<" "答:程序输入10个整数,若最小的数不在第0个位置,则与第0个位置的数交换位置,使得最小的数在第0个位置;若最大的数不在第1个位置,则与第1个位置的数交换位置,使得最大的数在第1个位置;最后输出排列后的10个数。8、#include<iostream.h>void main() int n=1,d=2; double s=0.0,s0; while (s0=double(n)/d)>=0.000001) s+=s0; n+=2; d+=d; cout<<“合计:”<&

29、lt;s<<endl; 答:计算 1/2+3/4+5/8+7/16+9/32+(2n-1)/2n 的值,精度准确到当项值小于0.000001时,裁去余项99、#include<iomanip.h>#define SIZE 25 void main() int a45=2,3,-5,0,2,12,-1,27,8,10,91,22,-32,1,9,1,2,3,4,5; int b45=25,13,65,0,5,-2,0,18,10,45,53,33,3,9,0,7,61,26,-37,-1; int c45; int i, j; for(i=0;i<4;i+) for

30、(j=0;j<5;j+) cij=aij+bij; for(i=0;i<4;i+) cout<<endl; for(j=0;j<5;j+) cout<<setw(5)<<cij; 答:计算矩阵CAB,即二维数组c的每个元素为二维数组a和二维数组b的对应位置的元素之和。最后输出矩阵C(每个元素显示5个字符的宽度,共4行5列)五、 编程题1、 输入一行数字字符(以回车符结束输入),请用数组元素作为计数器来统计每个数字字符的个数,并输出统计结果。用下标为0的元素统计字符0的个数,下标为1的元素统计字符1的个数,。#include<iostr

31、eam.h>main()int num10=0, i;char c;cin>>c;while(c!='n') numc-'0'+=1;cin>>c;for( i=0; i<10; i+)if (numi) cout<< char(i+'0')<<numi<<endl;2、下面findmax函数将计算数组中的最大元素及其下标值和地址值,请编写*findmax()函数。 #include<iostream.h> *findmax(int *s, int t, int

32、*k)int p; for(p=0, *k=p; p<t; p+) if (sp>s*k) *k=p; return s+*k;main() int a10=12,23,34,45,56,67,78,89,11,22,k,*add; add=findmax(a,10,&k); cout<<ak<<k<<add<<endl;注意与第四大题第1小题的区别3、编写程序,求135799101的值。 #include<iostream.h>main()int I,s=0;for (I=0;I<=50;I+)if (I/2=0) s+=2*I+1;else s-=2*I+1;cout <<”计算结果为:”<<s<<endl;4、以下程序将字符串中的第m个字符开始的全部字符复制成另一个字符串,在主函数中输入字符串及m的值并输出复制结果,在被调用函数copystr中完成复制。请编写copystr函数。#include<iostream.h> #include<string.h> main() int m;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论