总浏览量:539.52万
福建师范大学2024年8月课程考试《C++语言程序设计》作业考核试题【奥鹏100分答案】

时间:2024-07-02 14:41来源:本站作者:点击: 152 次

可做奥鹏院校所有作业、毕业论文咨询请添加 QQ:3082882699
微信:jd958787

《C++语言程序设计》期末考试答题纸 


姓名:                   专业:

学号:                   学习中心:

成绩:


注意:请在答题纸上作答,否则不得分!

一、更多资料下载:(更多资料下载:2分,共20分)

1        2        3        4        5        6        7        8        9        10

                                                       



二、填空题(每空2分,共20分)

1、①               

2、②               

3、③               

4、④         

5、⑤               

6、⑥              

7、⑦               

8、⑧         

9、⑨               

10、⑩    

三、程序填空题(每空3分,共18分)

1、①               、②               

2、③               、④               4 a7 n, D' ?9 s6 A

3、⑤               、⑥              5 @$ t# E( C% [' n0 @4 {9 F5 c

四、程序分析题(更多资料下载:5分,共10分)

1.程序的功能是?其中if块起什么作用?8 x6 _' k% }  ?8 _( J- E* g# x

#include <iostream>. M* X+ ?6 c! b$ ~/ E% U

using namespace std;" f$ H' [( h( Y2 j5 g  S- E

int main()( }2 G' ]- ?8 A8 Z) f9 a) o

{  int x;6 e; h- b+ Q) G! G

   cout << "enter choice(1-4):";: |6 \8 ]3 R: k) z4 q( y3 O

   cin >> x;! a  V; n; j4 d4 R

   while (x < 1 || x > 4)

   {  cout << "Invalid choice, try again:";

      cin >> x;

      if ( cin.fail() )1 D" h2 f. w5 Y- W

       {  cin.clear();0 K. ?! S: `1 `7 Z7 `% u# t' E

          cin.sync();

          cin >> x;' V- L8 E/ g, _

       }

   }

cout << "Had choice:" << x <<endl;( H% r' D3 ]* P" |5 S

return 0;  }


0 v, \1 l+ W6 Q7 T

) X; a! f6 S) m6 k) l  _" W

  D& ]5 q/ s* r7 |' h

1 r* r1 t% ~7 z8 F

  D/ [% u6 \) ]: q

& i+ r+ W' g  R5 ^+ O5 i9 b


. a. i; Q- y* K- _% a0 B: {



2.给出下面程序输出结果。

#include <iostream>

using namespace std;

class Test / n) h6 n5 y  L; D0 g$ Z

{  public:

Test( int i, int j=0 ){x=i; y=j;}

int get( int i, int j ) {return i+j+x+y;}9 @9 Y2 L4 ?! f1 |# ]% B. H( ^

private:

int x,y;  };

int main( ) 9 W5 S) g7 i7 t$ a" ]+ {

{  Test t1(2), t2(4,6);

int (Test :: *p)(int, int);

p=&Test::get;

cout<<(t1. *p)(5, 10)<<endl;

cout<<(t2. *p)(7, 20)<<endl;

return 0;   }6 S6 ^# p4 q$ }2 P1 S


/ C7 q8 ~0 L7 i5 i. O) }

& c% w7 I# |% r- N# A) v! s

五、模板设计题(第1小题8分,第2小题8分,共16分)

1. 编写函数模板mid( )可用于求取并返回3个数据(整/单/双精/字符)值的中间数。& f& U  W2 g8 [: H  u% o* Y




2 D- |2 C7 k+ W# ?) W

- `6 e( I- r# B* s1 O* G

( U# D% R' @/ u1 B! D# ~7 t+ d


2.如下是矩阵类模板声明,请在模板外定义功能为矩阵相加的成员模板Madd( )。

template<class T, int m, int n>2 Z' h+ e) Z6 @' o

class  Matrix

{  public:' w5 U6 {0 B0 i+ @9 l

      Matrix( );

      Matrix(T a[][n]);

      Matrix< T, m, n> Madd(const Matrix< T, m, n> & m2);   ' m. s7 G3 O1 t: M0 L) \0 r! a/ M9 ]

      void  Mdisplay( );

   private:

      T x[m][n];  };! q* |0 C" N( R, t: n' G



9 E7 E% p& C: `4 h* P+ ?



& [+ a' u" P" n

, e) Q0 {3 D8 |6 J. ]2 i* r* Z


+ O' E4 f" Q+ e/ s

六、程序设计题(第1小题2分,第2小题6分,第3小题8分,共16分)% \; H  X4 e$ g7 g. y

1.如下是线性拟合类linearfit的声明,其中成员函数fit(double x[],double y[],int n)进行线性方程Y=a1X+a0拟合,对n个元素的测量值(存放在x、y数组中)用最小二乘法求线性方程系数a0、a1。最小二乘法方程系数公式:

class linearfit

{

        public:

                  linearfit( );

                void fit(double x[],double y[],int n);

                void val(double z[],double x[],int n);( N  l: T0 o, y5 e9 x6 W  Y

                double geta0( ){return a0;}. Y5 L3 b) J% v! H' Q

       double geta1( ){return a1;}

                void show( );' q! i6 k3 Z3 v, p+ g' f, N1 G

       void show(double x[],double z[],int n);: O0 |6 q/ P: O" c+ E8 P

   private:

                 double a0,a1;/ \; ^' Z  I* |4 I6 S5 E0 v

};

  @0 E' a5 l) S% A


请完成如下内容(分别注明类内与类外部分):

①类外定义无参构造函数,使成员a0和a1的初值为0;

②定义<<插入运算符重载函数,以下图方式输出显示拟合的线性方程参数。分别写出并注明类内声明和类外函数定义。

" E& @2 c- q" v7 _* a

③类外定义线性拟合功能的成员函数fit(double x[],double y[],int n)



; T7 ?$ c8 o+ k

  B3 T& z* D: `& [1 ]" N1 F8 }

《C++程序设计》期末考试试卷

注意:全卷请在答题纸上作答,否则不得分!

一、更多资料下载:(在更多资料下载:的四个备选答案中,选出一个正确的答案,并将答案代码写在答题纸上。更多资料下载:2分,共20分)1 }3 p1 k+ p1 z3 s0 {' V* V

1、下面的哪个保留字不能作为函数的返回类型(   )。

A. void        B. int         C. new         D. long

2. 决定C++语言中函数的返回值类型的是(  )。 ( |: @) H! t! |% A' @9 g

A. return语句中的表达式类型         + j) B! E9 k" x+ U3 Y+ V- L1 K

B. 调用该函数时系统随机产生的类型 ' z4 d; J% @+ K+ L* C

C. 调用该函数时的主调用函数类型   

D. 在定义该函数时所指定的数据类型 " q: l  n, D' }2 Q9 J

3. 一个函数功能不太复杂,但被频繁调用,则应把它定义为(   )。

A. 内联函数        B. 重载函数   

C. 递归函数        D. 嵌套函数

4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个整体,这整体就是(   )。

A.结构体      B. 对象      C. 函数体      D. 数据块 " v: k& _# x: ^) c1 [  G; G5 t% b

5. 下列不能作为类的成员的是(   )。

A. 自身类对象             B. 自身类对象的指针

C. 自身类对象的引用       D. 另一个类的对象 ' S9 [: l3 \+ U2 [

6、假定AB为一个类,则执行“AB  a(4) , b[3] , * p[2] ”语句时,自动调用该类构造函数的次数为(   )。 1 C6 S8 D4 k$ I0 o, ~& g6 s4 h* S

A. 3           B. 4            C. 6            D. 9 , T& r2 S# ]- u

7. 假定一个类的构造函数为A(int aa,int bb) {a=aa--;b=a*bb;},则执行A x(4,5);语句后 ,x.a和x.b的值分别为(   )。

A. 4和15      B. 4和5      C. 4和20      D.3和20 , P) z, j2 N5 s( }% {7 w/ ]

8. 在类中说明成员可以使用的关键字是(   )。

A. register      B. extern      C. cpu       D. public ; Q1 l4 d, O" D& ?. t: c+ Y

9.假定AA为一个类,a( )为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a( )的格式为(   )。

A.x.a      B.x.a( )      C.x->a      D.(*x).a( )2 d7 M7 h$ S+ x

10. 下列程序的输出结果是(   )。   y, M( J0 x4 \; V7 l

#include <iostream > $ G8 L+ a, v2 \  W5 y

using namespace std;

int main() 3 o* b9 ~" Y2 ~; p% `1 k& a6 t

{  int a[][3]={10,20,30,40,50,60};

   int (*p)[3];

   p=a;

   cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;  }; K9 c8 R1 T$ [( J( h' l

A. 10,20,30       B. 10,30,50    + b# ~0 G8 \# `* H8 W

C.20,40,60        D.10,30,609 x7 G* T+ J/ W1 L- I( {# q

二、填空题(每空2分,共20分)注:请在答题纸上做答,答案前注明题目号和填空号。

1.在C++面向对象的程序设计中,将一组对象的共同特性抽象出来形成   ①   。

2.表达式cout<<endl; 中的endl也可表示为   ②    。0 y3 e0 j7 i3 _

3.如下while循环执行次数是   ③   。

int n=0;5 _$ @! P: |6 c0 c7 z& h

while(n=1)n++;- w7 @/ \, {# s- E9 ^3 x$ ^

4.每个对象都是所属类的一个   ④   。" b' Z. S1 t- U& c9 U

5.用new来动态分配有10个元素的整型数组单元,并用指针ip指向该单元,应使用语句   ⑤   。

6.函数模板中,template< >尖括号内用于表示“类型名”参数的保留字是   ⑥    。

7.假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的一个新对象时,会调用   ⑦   构造函数来完成此功能。

8.对赋值运算符进行重载时,应声明为   ⑧   函数。

9.如果要把A类成员函数fun( )且返回类型为void声明为类B的友元函数,则应在类B的定义中加入的语句   ⑨   。

10.定义类的动态对象数组时,系统只能自动调用该类的  ⑩   构造函数对其进行初始化。

+ L) r8 F+ i4 c& q1 W! K9 n6 d

三、程序填空题(每空3分,共18分)6 G" b, F, p& [& c. N8 ^

1.在下面程序横线处填上适当字句,使该程序执行结果为反向输出数组的元素:- n$ x. x& W! x) z

50, 40, 30, 20, 10; P) ?5 z: t# K# ?; S6 t

0, 7.5, 8.4, 9.3, 10.2, 11.1

#include <iostream>

using namespace std;

template <class T>

void  fun(              ① )

{                  ② ;


for( int i=0; i<n/2; i++)

{  t=a; a=a[n-1-i]; a[n-1-i]=t; }: |9 j# ~' t8 n

}

int main( )

{  int  i,a[5]={10, 20, 30, 40, 50};

double  d[6]={11.1, 10.2, 9.3, 8.4, 7.5};5 u2 I' k: N: [/ V

fun(a, 5); fun(d, 6);0 b$ M3 t( g- p# a

for ( i=0; i<5; i++)  cout << a << ",";9 F/ Q% t( r& d4 V& `' `/ j

cout <<endl; % }* f, g8 W2 Q: f- x

for ( i=0; i<6; i++)  cout << d << ","; 5 o  j  Y. {2 R1 f8 K8 r

cout << endl;  }   

2. 在下面程序的底画线处填上适当的字句,使该程序执行结果为37。

#include <iostream>

using namespace std;0 x4 I5 ~$ U- T+ S

class Test

{ public: 3 X- T9 W: S; {" f; E

Test (int i=10) {x=i+x;}

static int Getnum( ) {return Test:: x;} / }# A$ H" P: J: Y5 k* z! L2 G) ~8 a

  private:- r0 X8 z' f0 V* S# f' m

            ③ ;

' n0 b) `) V. N1 @) b

};

             ④ ;

int main( ) 5 w- C' d, E5 c: K8 U3 F

{ Test test1, test2(7); * \" v& N4 R8 G# @( }6 B& ^" G

cout<< Test :: Getnum( ) << endl; # \! B; P; }% h) u& l

}     

3.产生10个[1-100]之间的随机数并输出显示,数间用空格分隔。9 L# {1 V$ P& S* ~; {! t2 r

#include <iostream>

#include <time.h> + G6 `$ g( L' H8 i! ?6 C3 j$ A

using namespace std;& h2 }: \# ?2 f


int main( ) ; X( e0 _/ g  }0 B9 `

{ int i,a[11]; ! A4 i. ]; R2 S: {

srand(time(NULL));9 a# v) `1 ~* f+ F6 N7 s' K

for( i=1; i<=10; i++)

                           ⑤  " b+ T2 L6 F; d! P( B) Y

for ( i=1; i<=10; i++)

                  ⑥ & D# [* w3 Q: h% w& q) E, ]

cout << endl;, J1 I* J9 [3 b; w

return 0;

}


四、程序分析题(更多资料下载:5分,共10分) , H! F5 Z1 o! N+ n& e7 s4 ~5 u

1.程序的功能是?其中if块起什么作用?  s7 j/ y: Q  \5 K

#include <iostream>

using namespace std;9 g/ g2 ?% x" V4 v

int main()

{  int x;$ u! S1 Z" r9 {/ {7 {9 y; f' m

   cout << "enter choice(1-4):";* Z9 U  k$ @' c$ U& U' _( [

   cin >> x;, C' r$ P- |4 R7 t

   while (x < 1 || x > 4)

   {  cout << "Invalid choice, try again:";1 L2 @& q# y0 I) R6 _" ]- M

      cin >> x;

      if ( cin.fail() )

       {  cin.clear();

          cin.sync();& K( E7 K, X- ?2 n

          cin >> x;

       }) M$ H( G# Q. C4 q% c

   }* e0 k2 K5 L  _; l8 f. s

cout << "Had choice:" << x <<endl;0 V0 c& G. a. v) Y# K, U' @+ y9 ^% U

return 0;  }

2 J- U3 N+ [/ v/ Y

2.给出下面程序输出结果。 ' C0 }% E- K+ D7 ?. K  m+ ]" N

#include <iostream>

using namespace std;

class Test

{  public: . ?+ P, U- X- \$ {9 ]

Test( int i, int j=0 ){x=i; y=j;} 5 z/ t" c4 s3 d

int get( int i, int j ) {return i+j+x+y;}

private:

int x,y;  };

int main( ) ( c+ M, o5 P9 ^* t+ u

{  Test t1(2), t2(4,6);

int (Test :: *p)(int, int); 8 v, e+ j; q$ \

p=&Test::get;$ U  k; p0 j+ {% V5 M6 x5 S! m8 n

cout<<(t1. *p)(5, 10)<<endl; - H* I6 V( |8 J7 I

cout<<(t2. *p)(7, 20)<<endl; 7 [; @- I/ i4 b' `

return 0;   }( D5 }0 t$ v5 l% V4 z" F

* i. W! ]9 K, G4 Y& x/ e0 `( u- h

五、模板设计题(第1小题8分,第2小题8分,共16分)

1. 编写函数模板mid( )可用于求取并返回3个数据(整/单/双精/字符)值的中间数。

2.如下是矩阵类模板声明,请在模板外定义功能为矩阵相加的成员模板Madd( )。

template<class T, int m, int n>; K3 p; i! |( a  F  I: i& e

class  Matrix

{  public:

      Matrix( );& N* p5 A1 j' H& w4 I" V+ q

      Matrix(T a[][n]);3 Y) C' N1 S! u) k

      Matrix< T, m, n> Madd(const Matrix< T, m, n> & m2);   

      void  Mdisplay( );

   private:. z5 v9 t: s5 y* R7 |

      T x[m][n];  };( [) E% I( w% a, H; O5 ?* ]


六、程序设计题(第1小题2分,第2小题6分,第3小题8分,共16分)  c' w4 a4 @9 R  s

1.如下是线性拟合类linearfit的声明,其中成员函数fit(double x[],double y[],int n)进行线性方程Y=a1X+a0拟合,对n个元素的测量值(存放在x、y数组中)用最小二乘法求线性方程系数a0、a1。最小二乘法方程系数公式:1 @" d- K( J7 X+ w  I& Q

class linearfit

{

        public:

                  linearfit( );; d( C, u/ J1 {. b! K* A' @7 g

                void fit(double x[],double y[],int n);

                void val(double z[],double x[],int n);! G: c% w# d. P$ H3 T& d$ m

                double geta0( ){return a0;}% F9 x, \: ?. C& g

       double geta1( ){return a1;}

                void show( );

       void show(double x[],double z[],int n);

   private:

                 double a0,a1;9 T5 i) S+ F& l) E

};


请完成如下内容(分别注明类内与类外部分):

①类外定义无参构造函数,使成员a0和a1的初值为0; 

②定义<<插入运算符重载函数,以下图方式输出显示拟合的线性方程参数。分别写出并注明类内声明和类外函数定义。

 

③类外定义线性拟合功能的成员函数fit(double x[],double y[],int n)


需要奥鹏作业答案请扫二维码,加我QQ

添加微信二维码,了解更多学习技巧,平台作业、毕业论文完成时间友情提醒。不再错过任何作业论文。