出自:许昌学院面向对象程序设计

[单选题,5分] 结构化程序设计的一种基本方法是 A.筛选法 B.递归法 C.逐步求精法 D.归纳法
[单选题,5分] 下面有关重载函数的说法,正确的是 A.重载函数必须具有不同的返回值类型; B.重载函数形参个数必须不同; C.重载函数必须有不同的形参列表 D.重载函数名可以不同;
[单选题,5分] 继承类的构造顺序下面说法正确的是 A.先调用成员对象的构造函数 B.先调用基类的构造函数 C.先调用自己的构造函数 D.调用构造函数的顺序不确定
4[单选题,5分] 考虑函数原型void test(int a,int b=7,char=’*’),下面的函数调用中,属于不合法调用的是 A.test(5) B.test(5,8) C.test(6,”#”) D.test(0,0,‘*’)
[单选题,5分] 在调用函数时,如果实参是指针变量时,它与对应形参之间的数据传递方式是 A.单向值传递 B.地址传递 C.由实参传给形参,再由形参传回实参 D.传递方式由用户指定
单选题,5分] 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 A.3 B.2 C.4 D.6
[单选题,5分] for(i=0;i<5;i++)语句执行循环的次数是 A.5 B.6 C.1 D.无限
[单选题,5分] 以下关于循环体的描述中,错误的是 A.循环体中可以出现break语句 B.循环体中还可以出现循环语句 C.循环体中不能出现continue语句 D.循环体中可以出现switch语句
[单选题,5分] 结构化程序设计所规定的三种基本控制结构是 A.输入、处理、输出 B.顺序、选择、循环 C.树形、网形、环形 D.主程序、子程序、函数
[单选题,5分] 设x=2.5,a=7,y=4.7 ;表达式x+a%3*(int)(x+y)%2/4的值是 A.4 B.3 C.2.5 D.2
[单选题,10分] 每个C++程序中都必须有且仅有一个 A.类 B.主函数 C.预处理命令 D.语句
[单选题,10分] 设有定义int a=1;float f=1.2;char c=’a’;,则下列表示错误的是 A.++a B.f-- C.c++ D.8++
[单选题,10分] 若已定义:int x[9], *p=x;并在以后的语句中未改变p的值,不能表示x[1]地址的表达式为 A. p+1 B.a+1 C.a++ D.++p
[单选题,10分] 有以下程序段 int j=0; while(j=1) j++; while 循环执行的次数是 A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行1次
[单选题,10分] 以下程序执行后sum的值是 void main() { int i , sum; for(i=1;i<10;i++) sum+="i;"> A.55 B.45 C.不确定 D.0
[单选题,10分] 设整型变量a为5,使b不为2的表达式是 A.b=a/2 B. b=a%2 C.b=6-(--a) D.b=a>3?2:1
[单选题,10分] 以下4个选项中,不能看作一条语句的是 A.{;} B.a=0,b=0,c=0; C.if(a>0); D.if(b==0) m=1;n=2;
[单选题,10分] 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是 A.(a+b)*h/2 B.(1/2)*(a+b)*h C.(a+b)*h*1/2 D.h/2*(a+b)
[单选题,10分] C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是 A. 增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念
[单选题,10分] 在函数调用过程中,如果函数funA调用了函数 funB,函数funB又调用了函数funA,则 A.称为函数的直接递归调用 B.称为函数的间接递归调用 C.称为函数的循环调用 D.C语言中不允许这样的递归调用
[应用题,25分] 请在横线中填入程序,完成如下PID控制仿真程序. (注意符号、标点符号、括号用半角) #include class AAA { int A,B; public: AAA() {A=100;B=200; cout<<"deflat constructing\n"; } AAA(int i,int j) {A=i,B=j; cout<<"constructing\n";} ~AAA(){cout<<"destructing\n";} void print( ) {cout<<><><><"\n";}> friend int add(AAA &s1); }; int add(AAA &s1) {return (s1.A+s1.B);} void main() {AAA a1,*a2; int s; a2=new AAA(5,6); a1.print(); a2->print(); s=add(*a2); cout<<”s=”<<><> delete a2; } 运行结果是:
[应用题,25分] #include class Cdate { int day,month,year; public: Cdate () { day=1; month=1; year=1999; cout<<"default constructing\n";} Cdate (int d,int m,int y) { day=d; month=m; year=y; cout<<"constructing\n"; } ~ Cdate (){cout<<"destructing"<<><"><><><>void print( ) {cout<<><"><><>}; void main() { Cdate a1,*a2; a2=new Cdate (30,12,1996); a1.print(); a2->print(); delete a2; } 运行结果是: <"><">
[应用题,25分] #include void f(int *p1, int *p2) { int *t; t=p1;p1=p2;p2=t; } main() { int a=10,b=20; cout<<><> f(&a,&b); cout<<><> }
[应用题,25分] #include fun(int *s,int n1,int n2) { int t; while(n1<> {t=*(s+n1); *(s+n1)=*(s+n2); *(s+n2)=t; n1++;n2--; } } main() { int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a; fun(p,0,3);fun(p+3,1,6); for(i=0;i<10;i++) { if(i%5= =0)cout<<> cout< } 运行结果:
[应用题,25分] #include #include #include main() { int a=4,b=5,c,d; cout<<”sqrt(a)=”<< sqrt(a)< c=a>b?a:b; cout<<”c=”<<> cout<<><><><> d=a; if(a>b) d=8; else if (a==b) d=0; else d=-1; cout<<”d=”<<><> } 程序运行结果为:
[应用题,25分] #include # include void fun(char *w,int m) {char s,*p1,*p2; p1=w; p2=w+m-1; while(p1<> { s=*p1;*p1=*p2;*p2=s; p1++; p2--; } } main() { char a[10]="abcdefghi"; char *p=new char[10]; strcpy(p,"student"); cout<<"compare:"<<> if(strcmp(a,p)==0) cout<<"a == p"<<> if(strcmp(a,p)>0) cout<<"a > p"<<> if(strcmp(a,p)<0) cout<<"a < p"<<> cout<<"before:\n"; cout<<><> cout<<><> cout<<"call fun"<<> fun(a,strlen(a)); fun(p,strlen(p)); cout<<"after:\n"; cout<<><> cout<<><> } 程序运行结果为:
[应用题,25分] #include float const PI=3.14; class point { private: float x,y,area; public: point(float x1=0.0,float y1=0.0) { cout<<"point构造函数被调用!\n"; } virtual ~point() { cout<<"point析构函数被调用!\n";} virtual float getarea(){return 0.0;} }; class circle:public point {private: float r; public: circle(float x1,float y1,float Nr):point(x1,y1) { r=Nr; cout<<"circle构造函数被调用!\n "; } ~circle(){cout<<"circle析构函数被调用!\n";} float getarea() { return PI*r*r; } }; void main() { point *p,p1(3,4); p=&p1; cout<getarea()< circle c(1,1,1); p=&c; cout<getarea()<<> } 程序运行结果为:
[应用题,25分] #include class Test; void fun1(Test t); Test fun2(); class Test { public: Test(int n=1) {val=n; cout<<"Con."< Test(const Test& t) {val=t.val; cout<<"Copy con."<<> Test& operator = (Test& t) { val=t.val; cout<<"Assignment."<<> return *this; } private: int val; }; void main() { Test t1(1); Test t2=t1; Test t3; t3=t1; fun1(t2); t3=fun2(); } void fun1(Test t){} Test fun2() { Test t; return t; } 运行结果为:
[应用题,11.1分] int fun (int i, int j) { int s; i=i+2; j=j-1; s=i+j; return s; } void main() { int i=4, j=5; cout<<><”><><”=""><="" fun(i,j)="">}; 程序运行结果为:<”>
[应用题,11.1分] int y=1, x, *p, a[ ]={2,4,6,8,10};   p=&a[1];   for(x=0;x<3;x++)   y + = * (p + x);   cout<<> 程序运行结果为:
[应用题,11.1分] #include class A{ int a; public: A(int aa=0){a=aa;} ~A(){cout<<"Destructor A!"<<><> }; class B : public A{ int b; public: B(int aa=0,int bb=0):A(aa){b=bb;} ~B(){cout<<"Destructor B!"<<><> }; void main() { B x(5),y(6,7);: } 程序运行结果为:
[应用题,11.1分] lass Box{ private: int a,b,c; public: Box(int a1,int b1,int c1) { a=a1; b=b1; c=c1;} int volum() { int v; v=a*b*c; return v; }}; void main() { Box box(4,5,6); cout<<” 体积为:”<<> } 程序运行结果为:
[应用题,11.2分] #include #include void main() { int i, max; char ch; char str[]="1234567"; for(i=0,j=strlen(str)-1;i;i++,j-- ) { ch=str[i]; str[i]=str[j]; str[j]=ch; } cout<<><> } 程序运行结果
[应用题,11.1分] 不用第三个变量,实现两个数的对调操作。 #include int main() { int a,b; cin>>a>>b; cout<<><><>< p=""> a= 【?】 ; b= 【?】 ; a= 【?】 ; cout<<><>< p=""> }
[应用题,11.1分] 分别求出一批非零整数中的偶数、奇数的平均值,用零作 为终止标记。 #include int main() { int x,i=0,j=0; float s1=0,s2=0,av1,av2; cin>>x; while(【?】) { if(x%2==0) {s1=s1+x;i++;} 【?】 { s2=s2+x; j++; } 【?】; } if(i!=0) av1=s1/i; else av1=0; if(j!=0) 【?】 ; else av2=0; cout<<"oushujunzhi:"<<"jishujunzhi><><><>< p=""> return 0; } <><><>
[应用题,11.1分] 统计一个字符串中的字母、数字、空格和其它字符的个数。 #include int main () { char s1[80];int a[4]={0}; int k; 【?】; gets(s1); 【?】; puts(s1); for(k=0;k<4;k++) cout<<>< p=""> } void fun(char s[],int b[]) { int i; for (i=0;s[i]!=.\0.;i++) if (.a.<=s[i]&&s[i]<=.z.||.A.<=s[i]&&s[i]<=.Z.) b[0]++; else if (【?】) b[1]++; else if (【?】 ) b[2]++; else b[3]++; return 0; }
[应用题,11.1分] 输出100到1000之间的各位数字之和能被15整除的所有数, 输出时每10个一行。 include int main() { int m,n,k,i=0; for(m=100;m<=1000;m++) { 【?】; n=m; do { k=k+【?】 ; n=n/10; } 【?】; if (k%15==0) { cout<<>< p=""> i++; if(i%10==0) 【?】; } } retun 0; }
[应用题,7.6分] 以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,然后输出a,b,c的值。请填空。 #include main() { int a,b,c; int temp; cout<<"Enter a,b,c:"; cin>>a>>b>>c; temp=[ ]; a=b; b=[ ]; [ ] cout<<"a="<<a<<" b="<<b<<" c="<<> }
[应用题,7.6分] 以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数.用输入零来结束输入,程序中用变量i统计大于零的整数个数,用变量j统计小于零的整数个数.请填空. #include #include main() { int n,i,j; cout<<"输入非零的整数(输入零结束程序)"; i=j=0; cin>>n; while[ ] { if(n>0) i=[ ]; if(n<0) [ ]; cin>>n } cout<<"i="<<setw(4)<<i<<" j="<<><><> }
[应用题,7.6分] 斐波那契数列中的头两个数是0和1,从第三个数开始,每个数等于前两个数的和,即:0,1,1,2,3,5,8,13,21,...等。下面这个程序就是求斐波哪契数列的前20个数。请填空。 #include void main() { int f,f1,f2,i; f1=0;f2=1; cout<<><><><> for(i=3;i<=20;[ ]) { f=[ ]; cout<<><> f1=f2; f2=[ ]; } }
[应用题,7.6分] 下面这个程序打印出以下这个三角形.请填空。 0 11 222 3333 44444 555555 6666666 77777777 888888888 9999999999 void main() { int i,j; for(i=0;i<[ ];i++) { for(j=0;j<[ ];j++) [ ]; cout<<> } }
[应用题,7.6分] 如图所示,该算式在四个字母所在处欠缺四个数位,下面这个程序用穷举法搜寻解法。请填空。 1A8 * 3B _________ C73D #include void main() { int A,B,C,D; int x,y,z; for(A=1;A<=9;A++) for(B=1;B<=9;B++) for(C=1;C<=9;C++) for(D=1;D<=9;D++) { x=100 + [ ] + 8; y=30+B; z=[ ]+700 +30 +D; if([ ]) cout<<"A="<<A<<",B="<<B<<",C="<<C<<",D="<<><> } }
[应用题,7.6分] 以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束,请填空。 #include void main() { [ ]; cin>>x; amax=x; amin=x; while([ ]) { if(x>amax) amax=x; if([ ]) amin=x; cin>>x; } cout<<"amax="<<amax<<", amin="<<><> }
[应用题,7.6分] 以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。 int fun ( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f=[ ]; } [ ] } void main() {cout<<"m="<<[ ])<<>< body="">
[应用题,7.6分] 函数fun的功能是计算x^n。主函数中已经正确定义m、a、b变量并赋值,并调用fun函数计算:m=a^4+b^4-(a+b)^3。 (说明:x^n即x的n次幂) #include double fun(double x,int n) { int i; double y=1; for(i=1;i<=n;i++) [ ]; [ ] } void main() { double m,a,b; a=7.3; b=5.1; m=[ ]; cout<<"m="<<><> }
[应用题,7.6分] 以下程序的功能是:在主函数中输入一个整数n,调用函数fun计算n的所有因子(不包括1与自身)之和。 #include int fun(int x) { int s=0,i; for(int i=2;i<=x-1;i++) if([ ]) s+=i; [ ]; } void main() { int n, sum; cout<<"请输入一个整数:"; cin>>n; cout<<[ ]; }
[应用题,7.6分] 以下程序的功能是将一个字符串的内容颠倒过来。 #include //或 #include #include void main() { int i, max; char ch; char str[]="1234567"; for(i=0,j=strlen(str)-1;[<>];[]) { ch=str[i]; []; str[j]=ch; } printf("%s\n", str); //或 cout<<><> }
[应用题,7.6分] 以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int a[M][N],int *sum) { int i,j,k,s=0; for(i=0;i<> { k=0; for(j=1;j<> if(a[k][i]>a[j][i])k=j; s+=[ ]; } [ ]=s; } void main() { int x[M][N]={3,2,5,1,4,1,8,3},s; SumColumMin([ ]); cout<<><> }
[应用题,7.6分] 以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空: #define N 3 #define M 4 void LineMax(int x[N][M]) { int i,j,p; for(i=0;i<> { p=0; for(j=1;j<> if(x[i][p] cout<<"The max value in line "<<><" is=""><[><> } } main() { int x[N][M]={1,.5,7,4,2,6,4,3,8,2, 3,1}; [ ]; }
[应用题,8.8分] fun函数的功能是:首先实现在N行M列的二维数组a中,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。 #define N 5 int fun(int a[N][N]) {int row,col,max,min; for(row=0;row<> {for(max=[ ],col=1;col<> if([ ]) max=a[row][col]; if(row==0) min=max; else if([ ]) min=max; } return min; }