栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++课后习题/期末考试复习资料

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++课后习题/期末考试复习资料

实验一、C++语言基础

[实验目的]

1、熟练掌握基本语句及其用法;

2、熟练掌握分支结构:if语句和switch语句;

3、熟练掌握循环结构:while语句、do-while语句、for语句。

[实验要求]

1、能熟练使用Code::Blocks的IDE环境;

2、能独立排除程序中的语法错误;

3、掌握基本问题的算法。

[实验内容]

1、编写程序,提示用户输入两个点(x1,y1)和(x2,y2),计算两点之间的距离并输出。

注:求平方根的库函数为sqrt(),要包含标准库

2、编写程序,提示用户输入年份和月份,显示这个月的天数。例如,输入年份为2016,月份为2,则应输出29天。

3、利用switch-case结构判断学生成绩的等级,

level=优秀            grade≥90良好    80≤grade<90及格   60≤grade<80不及格     grade<60

4、找出1-100中所有的素数。

5、计算1!+2!+…+10!

6、哥德巴赫猜想中写到,一个充分大的偶数(大于等于4),它可以分解为两个素数(质数)的和。

注:挑战题,可选做。

7、斐波那契数列,a1=1,a2=1,an=an-1+an-2,求前20项。

实验二、复合类型

[实验目的]

1、熟练掌握指针的使用语法;

2、熟练掌握数组的应用;

3、熟练掌握结构体的用法;

4、熟练掌握字符串的处理。

[实验要求]

1、会使用指针访问数组;

2、会利用数组进行数据统计;

3、会处理结构体数据;

4、理解字符串的三种定义形式。

[实验内容]

1、假设一个班级有30人,英语成绩如下表,统计班级的最高分、最低分、平均分、及各分数段的百分比。

92

45

89

70

69

56

80

66

45

90

88

90

76

56

99

100

89

55

79

34

67

37

93

95

85

66

78

96

64

62

(1)用一维数组存储,分别用下标法和指针法访问。

(2)用二维数组存储,分别用下标法和指针法访问。

2、杨辉三角

3、6个评委对5选手打分,去掉最高分和最低分,然后求出平均分就是他们的成绩。

4、生成100个0~9之间的随机数,然后显示每个数出现的次数。

5、输入一个字符串,统计该字符串中大小写字母的数目。

(1)按字符数组形式存储;

(2)按字符指针形式存储;

(3)按string方式存储。

6、假设一个班有6个学生,三门功课的成绩如下表,计算每个学生三门课的总分,并按总分排序。

姓名

英语

数学

语文

张小红

45

89

70

李明

80

66

45

周松

90

76

56

黄伟光

89

55

79

刘三喜

37

93

95

王小瑞

78

96

64

实验三、函数

[实验目的]

1、掌握函数的定义和调用;

2、理解三种参数传递方式;

3、理解变量的作用域与生命期;

4、掌握函数重载的解析过程。

[实验要求]

1、会将一个功能封装成函数,并加以调用,会使用递归解题;

2、能判断哪种调用情况会改变调用变量的值;

3、能识别变量的作用域,理解其生命期;

4、熟练了解重载函数的匹配规则。

[实验内容]

1、编写函数判断一个整数是否为2的阶次方数,返回bool类型的结果,并测试。

2、编写函数将字符数组a中的前n个字符复制到数组b中,数组a、b和整数n由参数传入。

3、将传入的字符串逆序,用递归和非递归两种方法实现。

4、交换两个数,分别用指针和引用作为函数的参数。利用函数重载的方法,也就是函数名相同,参数不同。

5、课本p161程序5.12 文件作用域上机调试分析与讨论。

//module0.cpp

static int ival=5;           //ival是文件作用域的

static int sf()          //函数sf()是文件作用域的

{

     ival++;

     return ival;

}

int fun()         //普通函数的默认作用域为全局的

{

     ival = 6;       //fun()中可以使用ival

     return sf();    //fun()中可以使用sf()

}

//----------------------------------------------

//----------------------------------------------

//module1.cpp

#include

using namespace std;

extern int ival; //!错误,ival只在module0.cpp中可见

int fun();               //OK

int main()

{

cout<

cout<

cout<

}

解释错误的原因。

6、请写出下面程序的输出,并上机验证,说明原因。

#include

using namespace std;

float maxx(float x,float y){

    cout<<"float function is called!"<

   return x>y?x:y;

}

int  maxx(int x,int y){

    cout<<"int function is called!"<

   return x>y?x:y;

}

char maxx(char x,char y){

    cout<<"char function is called!"<

   return x>y?x:y;

}

int main()

{

    cout<

    cout<

    cout<

    return 0;

}

实验四、类和对象

[实验目的]

1、理解类类型,掌握类的定义,对象的定义;

2、掌握访问限定符的作用;

3、掌握友元函数;

4、构造函数和析构函数的语法格式和功能;

5、常成员的含义和作用;

6、静态成员的含义和作用。

[实验要求]

1、能正确设计实现一个基本类;

2、能根据自己定义的类,定义一个对象并实例化;

3、能理解构造函数的作用、自动触发调用机制;

4、正确使用友元函数、常成员和静态成员。

[实验内容]

1、设计时间Time类,要求:

(1)有表示时、分、秒的数据成员;

(2)初始化操作(构造函数);

(3)有get和set方法;

(4)以24小时格式输出当前时间。

编写测试程序。

2、设计实现一个平面点Point类,要求:

  (1)用x、y两个坐标值表示一个点;

  (2)正确初始化每个点,默认坐标值为原点;

  (3)计算点到原点的距离;

  (4)计算点到另一个点的距离(友元函数)。

  编写测试程序。

3、设计实现一个圆形类Circle,要求:

  (1)圆心和半径数据成员;

  (2)π定义为常数据成员;

(2)合理初始化,默认圆心为原点,默认半径为1;

(3)计算面积、计算周长、获取半径、移动和缩放。

编写测试程序。

4、设计并实现一个ObjectCounter类,要求:(静态数据成员)

(1)对系统中现存的本类实例计数;

(2)每个对象都有一个唯一的整型ID,按照创建的次序建立;

(3)获取当前系统中本类对象的个数;

(4)获取每个对象的ID。

编写测试程序。

实验五、对象的初始化与复制

[实验目的]

1、理解构造函数和初始化的关系;

2、掌握默认构造函数、类型转换构造函数和拷贝构造函数;

3、理解深拷贝和浅拷贝;

4、了解析构函数的作用。

[实验要求]

1、能正确判断创建对象调用了哪个构造函数;

2、能识别深拷贝和浅拷贝的应用场景;

3、能在析构函数中完成内存回收工作;

[实验内容]

1、分析下面程序的输出结果,并说明原因。

#include

using namespace std;

class A{

  public:

      A();

      A(int i,int j);

      void print(){

        cout<<"x="<

      }

  private:

    int x,y;

};

A::A(){

  x=y=0;

  cout<<"default constructor called."<

}

A::A(int i,int j){

   x=i;

   y=j;

   cout<<"two parameters constructor called."<

}

int main(){

  A a,b(3,4);

  a.print();

  b.print();

 return 0;

}

2、分析下面程序的输出结果,并说明原因。

#include

using namespace std;

class M{

  public:

      M(int i,int j){

         x=i;

         y=j;

      }

      void sum(M a,M b){

         x=a.x+b.x;

         y=a.y+b.y;

      }

      void print(){

         cout<<"x="<

      }

  private:

    int x,y;

};

int main(){

  M a(2,3);

  M b(a);

  M c(a);

  c.sum(a,b);

  c.print();

 return 0;

}

此题调用什么构造函数,这个构造函数怎么来的?如果让你来实现此构造函数,怎么实现?

3、分析程序,回答问题。

#include

using namespace std;

class T{

  public:

      T(int i){

        t=i;

        cout<<"int constructor called."<

      }

      T(double i){

        t=(int)i;

        cout<<"double constructor called."<

      }

      ~T(){

        cout<<" destructor called."<

      }

  private:

    int t;

};

int main(){

  int a=8;

  double b=10.5;

  T t1(2),t2(3.5),t3(0);

  t3=T(a);

  t3=T(b);

  cout<<"exit main."<

 return 0;

}

(1)分析程序输出的结果;

(2)主程序共创建了几个对象?各对象名是什么?它们分别调用了哪个构造函数?

(3)调用几次析构函数,分别释放哪个对象?

4、按下列要求编写一个程序,并上机验证。

(1)类中有构造函数的重载;

(2)类中有一个友元函数;

(3)类中有静态成员;

(4)类中有常成员。

5、编写一个字符串处理类,并上机验证。(深拷贝与浅拷贝)

(1)类中有构造函数;

(2)类中拷贝构造函数;

(3)输出字符串;

实验六、运算符重载

[实验目的]

1、理解运算符重载的实质;

2、掌握运算符重载的语法;

3、了解运算符重载的限制与用途;

[实验要求]

1、能对基本的运算符进行重载;

2、掌握各种类型运算符重载的方法(友元函数形式和成员函数形式)

[实验内容]

1、分析下列程序的输出结果。

#include

using namespace std;

class Matrix{

  public:

      Matrix(int r,int c){

        row=r;

        col=c;

        elem=new double[row*col];//动态分配内存

      }

      double & operator()(int x,int y){

        return elem[x*col+y];

      }

      ~Matrix(){

         delete[] elem;//回收内存

      }

  private:

    double *elem;

    int row,col;

};

int main(){

  Matrix m(10,10);

  for(int i=0;i<5;i++){

    m(i,10)=i+5;

    cout<

  }

  cout<

 return 0;

}

函数double & operator()的作用是什么?去掉函数中的&可不可以?为什么?

2、采用成员函数的形式进行元算符的重载,实现复数的四则运算。

3、采用友元函数的形式进行元算符的重载,实现复数的四则运算。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号