《数据结构》实验一: VC编程工具的灵活使用
一..实验目的
复习巩固VC编程环境的使用,以及C++模板设计。
1.回顾并掌握VC单文件结构程序设计过程。
2.回顾并掌握VC多文件工程设计过程
3.掌握VC程序调试过程。
4.回顾C++模板和模板的程序设计。
二.实验时间
第二周第二次课。2个学时。
三.实验内容
1. 设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。要求如下:
1)设计函数来计算“和”和“积”,在主函数中调用,并能考虑重载函数,使整数和小数均能计算。
2)分别使用单步调试和断点调试来调试程序。并多次运行力求熟练调试方法。
<pre name="code" class="cpp">#include<iostream>
using namespace std;
void suan(int a,int b); //求“和”和“积”
void suan(float a, float b); //重载
void suan(int a,float b); //重载
void suan(float a,int b); //重载
int main()
{
cout<<"请输入两个数:\t";
float a,b;
int c,d;
cin>>a>>b;
c=a,d=b;
a==c?a=c:a=a; //这里有点不懂,下面也是。
b==d?b=d:b=b;
suan(a,b);
return 0;
}
void suan(int a,int b)
{
cout<<"这两个数的和为:"<<a+b<<endl;
cout<<"这两个数的积为:"<<a*b<<endl;
}
void suan(float a,int b)
{
cout<<"这两个数的和为:"<<a+b<<endl;
cout<<"这两个数的积为:"<<a*b<<endl;
}
void suan(int a,float b)
{
cout<<"这两个数的和为:"<<a+b<<endl;
cout<<"这两个数的积为:"<<a*b<<endl;
}
void suan(float a,float b)
{
cout<<"这两个数的和为:"<<a+b<<endl;
cout<<"这两个数的积为:"<<a*b<<endl;
}
调试截图:
2.使用函数的模板来实现上述功能。
#include<iostream>
using namespace std;
template<class S> //定义函数模版
S suan(S a,S b)
{
cout<<"这两个数之和是:"<<a+b<<endl;
cout<<"这两个数之积为:"<<a*b<<endl;
return 1;
}
int main()
{
float a,b;
int c,d;
cout<<"请输入两个数:\t";
cin>>a>>b;
c=a;d=b;
a==c?a=c:a=a; //还是这个地方
b==d?b=d:b=b;
suan(a,b);
return 0;
}
调试截图:
3.使用一个类来实现上述功能。要求:
1)使用类模板
2)使用多文件:类的声明有头文件中;类的函数定义一个源文件中,在主程序文件中设计主函数程序,在实例化输出结果。
头文件:Suan.h
#pragma once
template<class SS> //声明类
class Suan
{
SS a,b;
public:
Suan(void);
Suan(SS num1,SS num2);
void C_out();
~Suan(void);
};
源文件:
#include<iostream>
#include "Suan.h" //调用头文件
using namespace std;
template<class SS>
Suan<SS>::Suan(void) //定义构造函数
{
SS num1,num2;
cout<<"请输入两个数:";
cin>>num1>>num2;
a=num1;
b=num2;
}
template<class SS>
Suan<SS>::~Suan(void) //析构函数
{
}
template<class SS>
void Suan<SS>::C_out() //输出函数
{
cout<<"这两个数之和为:"<<a+b<<endl;
cout<<"这两个数之积为:"<<a*b<<endl;
}
int main()
{
Suan<float> s1; //这一步我真不知道要怎么办,表示蒙了。
s1.C_out(); //实例化输出。
return 0;
}
调试截图:
四.参考资料
实验教程P159-170.
五.实验报告
1.在博客中先写上实习目的和内容,然后分别上传三个程序代码。插入调试关键结果截图。
2.写一个博文,总结重载和模板的知识点。
六.总结
总体来说,总算把C++中类的知识补得差不多了,但还有很多的不足,如类型转换问题,重载问题,等等。
这一次,做得比较粗心,也是因为知识不全所致。我会继续努力的,代码也会继续再改。