副标题#e#
《数据结构》实验一:????? VC编程工具的灵活使用
??
一..实验目的
???? 复习巩固VC编程环境的使用,以及C++模板设计。
1.回顾并掌握VC单文件结构程序设计过程。
2.回顾并掌握VC多文件工程设计过程
3.掌握VC程序调试过程。
4.回顾C++模板和模板的程序设计。
二.实验时间
?? 第二周第二次课。2个学时。
三.实验内容
1. 设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。要求如下:
1)设计函数来计算“和”和“积”,在主函数中调用,并能考虑重载函数,使整数和小数均能计算。
2)分别使用单步调试和断点调试来调试程序。并多次运行力求熟练调试方法。
2.使用函数的模板来实现上述功能。
3.使用一个类来实现上述功能。要求:
? 1)使用类模板
? 2)使用多文件:类的声明有头文件中;类的函数定义一个源文件中,在主程序文件中设计主函数程序,在实例化输出结果。
一:
#include<iostream> #include<iomanip> using namespace std; int x1,x2; float x3,x4; void input1() { cout<<"请从键盘上输入两个整数:"<<endl; cin>>x1>>x2; } void input2() { cout<<"请从键盘上输入两个小数:"<<endl; cin>>x3>>x4; } int add(int a,int b) { int sum1; sum1=a+b; return sum1; //以上是求两个整数之和 } float add(float c,float d) { float sum2; sum2=c+d; return sum2; //以上是求两个小数之和 } int mul(int a,int b) { int mult1; mult1=a*b; return mult1; //以上:求两个整数之积 } float mul(float c,float d) { float mult2; mult2=c*d; return mult2; //以上:求两个小数之积 } int main() { input1(); cout<<"两个数的和: "<<add(x1,x2)<<endl; cout<<"两个数的积: "<<mul(x1,x2)<<endl; input2(); cout<<"两个小数的和: "<<add(x3,x4)<<endl; cout<<"两个小数的积: "<<mul(x3,x4)<<endl; return 0; }
程序的运行结果截图:
二:函数的模版
#include<iostream> #include<iomanip> using namespace std; int x1,x2; float x3,x4; void input1() { cout<<"请输入两个整数:"<<endl; cin>>x1>>x2; } void input2() { cout<<"请输入两个小数: "<<endl; cin>>x3>>x4; } template<class T> T add(T a,T b) { T sum; sum=a+b; return sum; } template<class F> F mul(F c,F d) { F mult; mult=c*d; return mult; } int main() { input1(); cout<<"两个数的和:"<<add(x1,x2)<<endl; cout<<"两个数的积:"<<mul(x1,x2)<<endl; input2(); cout<<"两个小数的和: "<<add(x3,x4)<<endl; cout<<"两个小数的积: "<<mul(x3,x4)<<endl; return 0; }
程序的运行结果截图:
#p#副标题#e##p#分页标题#e#
实验总结:
这次实验让我充分认识到
(1)函数重载的方便性及灵活性,增加了程序的可读性,就如求两个数的和,无论是整数还是小数,都可以使用同名函数add来实现,调用时只需要使用add函数即可,编译器将根据实参的类型判断应该调用那个函数。
(2)利用函数模板来实现时,先说明函数模板,然后实例化成相应的模板函数进行调用。感觉到了这种方法大大增强了函数设计的通用性。如:我所做的第二个程序中,template <class T>中的模板参数T可以实例化成整型和float型。