一.实验目的
1.复习巩固VC编程环境的使用,以及C++模板设计。
2.回顾并掌握VC单文件结构程序设计过程。
3.回顾并掌握VC多文件工程设计过程
4.掌握VC程序调试过程。
5.回顾C++模板和模板的程序设计。
二.实验内容
1. 设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。要求如下:
1)设计函数来计算“和”和“积”,在主函数中调用,并能考虑重载函数,使整数和小数均能计算。
2)分别使用单步调试和断点调试来调试程序。并多次运行力求熟练调试方法。
2.使用函数的模板来实现上述功能。
3.使用一个类来实现上述功能。要求:
1)使用类模板
2)使用多文件:类的声明有头文件中;类的函数定义一个源文件中,在主程序文件中设计主函数程序,在实例化输出结果。
三.代码
1.
#include<iostream>
using namespace std;
void count(int aa,int bb)
{
cout<<aa<<"+"<<bb<<"="<<aa+bb<<endl;
cout<<aa<<"*"<<bb<<"="<<aa*bb<<endl;
}
void count(double aa,double bb)
{
cout<<aa<<"+"<<bb<<"="<<aa+bb<<endl;
cout<<aa<<"*"<<bb<<"="<<aa*bb<<endl;
}
void input(int& a,int &b)
{
cout<<"请输入两个整数:";
cin>>a>>b;
}
void input(double& a,double &b)
{
cout<<"请输入两个实数:";
cin>>a>>b;
}
void main()
{
int a1,b1;
double a2,b2;
input(a1,b1);
count(a1,b1);
input(a2,b2);
count(a2,b2);
}
2.
#include<iostream>
using namespace std;
template <typename T>
void count(T aa,T bb)
{
cout<<aa<<"+"<<bb<<"="<<aa+bb<<endl;
cout<<aa<<"*"<<bb<<"="<<aa*bb<<endl;
}
template <typename T>
void input(T& a,T &b)
{
cout<<"请输入两个数:";
cin>>a>>b;
}
void main()
{
int a1,b1;
double a2,b2;
input(a1,b1);
count(a1,b1);
input(a2,b2);
count(a2,b2);
}
3.
//record.h文件
#include<iostream>
using namespace std;
template<class T>
class count
{
public:
count();
void input();
void output();
private:
T x,y;
};
template<class T>
count<T>::count()
{
x=0;
y=0;
}
template<class T>
void count<T>::input()
{
cout<<"请输入两个数:";
cin>>x>>y;
}
template<class T>
void count<T>::output()
{
cout<<x<<"+"<<y<<"="<<x+y<<endl;
cout<<x<<"*"<<y<<"="<<x*y<<endl;
}
//main.cpp文件
#include"record.h"
void main()
{
count<int> c1;
c1.input();
c1.output();
count<double> c2;
c2.input();
c2.output();
}
四.总结
本次实验复习一大一学的重载函数,模版,多文件程序。实验中存在了两个方面的问题。一,不会根据输入的数据的数据类型自动定义相应的变量,所有变量的数据类型都是事先定义的,没能很好的运用模版的灵活性。二,第三题中,把模版类的声明和模版类的定义放在两个文件时,build会出错,原因不明。把模版类的声明和模版类的定义放在同一个文件就能正常运行。该问题只出现在模版。