C++面向对象程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

习题2

1.C++语言的struct、enum、union与C语言有何区别?

2.const与#define有什么区别?

3.什么是类型转换?C++的类型转换有哪几种?在哪些情况下会发生隐式类型转换?

4.什么是函数重载?在函数调用时,C++是如何匹配重载函数的?

5.什么是引用?使用引用时要注意哪些问题?

6.什么是内联函数?它有什么特点,哪些类型的函数不能被定义为内联函数?

7.简述命名空间的概念?如何访问特定命名空间的成员?std命名空间是怎么回事。

8.C++的作用域有哪些类型?变量有哪些类型,变量类型与变量的初始化有什么关系?

9.指出下面程序的错误。

int &f1(int x=0,int y){
   return x*y;
}
int *f2(int a;int b=1){
   int t=a*b;
   return &t;
}
void main(){
   const r;
   int &a,*p;
   r=10;
   a=r;
   const char *pc1="dukang";
   char *const pc2="dukang";
   char const *pc3="dukang";
   const char const*pc4="dukang";
   pc1[2]='t';
   pc2[2]='t';
   pc3[2]='t';
   pc4[2]='t';
   cout<<f1(3);
   cout<<f2(2,3);
}

10.读程序,写出程序的执行结果。

(1)

#include <iostream>
using namespace std;
int print(int i){ return i*i; }
double print(double d){ return 2*d; }
void main(){
   int a=25;
   float b=9.2;
   double d=3.3;
   char c='a';
   short i=3;
   long l=9;
   cout<<print(a)<<endl<<print(b)<<endl<<print(d)<<endl;
   cout<<print(c)<<endl<<print(i)<<endl<<print(l)<<endl;
}

(2)

#include <iostream>
using namespace std;
int n;
int *p1;
void fun(){
   static int a;
   int b;
   cout<<"a="<<a<<", ";
   cout<<"b="<<b<<endl;
}
void main(){
   int *p2;
   int m;
   fun(){
      int n(10),m(20);
      cout<<"n="<<n<<endl<<"m="<<m<<endl;
   }
   cout<<"n="<<n<<endl<<"m="<<m<<endl;
   if(p1)
     cout<<"p1="<<p1<<endl;
   if(p2)
     cout<<"p2="<<p2<<endl;
}

(3)

#include <iostream.h>
double f(int a=10,int b=20,int c=5){return a*b*c;}
void main(){
    cout<<f()<<endl<<f(20)<<endl<<f(10,10)<<endl<<f(10,10,10)<<endl;
}

(4)

#include <iostream>
using std::endl;
using std::cout;
int &f(int& a,int b=20){
    a=a*b;
    return a;
}
void main(){
    int j=10;
    int &m=f(j);
    int *p=&m;
    cout<<j<<endl;
    m=20;
    cout<<j<<endl;
    f(j,5);
    cout<<j<<endl;
    *p=300;
    cout<<j<<endl;
}

11.编写重载函数min(),分别计算int、double、flaot、long类型数组中的最小数。

12.某单位职工的基本工资数据如下:

职工编号 姓名 基本工资 加班工资 奖金 扣除 实发工资

K01 tom 1200 500 1000 134

K02 john 2000 120 500 300

K03 white 1400 200 400 120

编写程序,从键盘输入各位职工的工资数据,存入磁盘文件Salary.dat中,然后从该文件读出职工的工资数据,并计算输出每位职工的实发工资,输出格式与上面相同,但要输出已被计算出来的实发工资。实发工资的计算方法如下:

实发工资=基本工资+加班工资+奖金奖扣除