实验目的:
1.复习巩固VC编程环境的使用,以及C++模板设计。
2.回顾并掌握VC单文件结构程序设计过程。
3.回顾并掌握VC多文件工程设计过程
4.掌握VC程序调试过程。
5.回顾C++模板和模板的程序设计。
实验内容一:
设计一个单文件结构程序完成从键盘输入两个数,输出二者的“和”和“积”的结果。
#include <iostream>
using namespace std;
void add(int a, int b){
cout << "两数之和是" << a + b << endl;
}
void mul(int a, int b){
cout << "两数之积是" << a * b << endl;
}
void add(float a, float b){
cout << "两数之和是" << a + b << endl;
}
void mul(float a, float b){
cout << "两数之积是" << a * b << endl;
}
void add(int a, float b){
cout << "两数之和是" << a + b << endl;
}
void mul(int a, float b){
cout << "两数之积是" << a * b << endl;
}
void add(float a, int b){
cout << "两数之和是" << a + b << endl;
}
void mul(float a, int b){
cout << "两数之积是" << a * b << endl;
}
int main() {
float a, b;
int c, d;
cin >> a >> b;
c = a;
d = b;
if ( a == c )
if ( b == d ) {
add(c, d);
mul(c, d);
}
else {
add(c, b);
mul(c, b);
}
else {
if ( b == d ) {
add(a, d);
mul(a, d);
}
else {
add(a, b);
mul(a, b);
}
}
return 0;
}
实验内容二:
#include <iostream>
using namespace std;
template<typename T>
void add(T a, T b) {
cout << "两数之和是" << a + b << endl;
}
template<typename U>
void mul(U a, U b) {
cout << "两数之积是" << a * b << endl;
}
int main() {
float a, b;
cin >> a >> b;
add(a, b);
mul(a, b);
return 0;
}
结果与“实验内容一”相同。
实验内容三:
#include <iostream>
using namespace std;
template <class T, class U>
class Add {
public:
Add(T a, U b) {
cout << "两数之和是" << a + b << endl;
}
};
template <class V, class W>
class Mul {
public:
Mul(V a, W b) {
cout << "两数之积是" << a * b << endl;
}
};
int main() {
float a, b;
int c, d;
cin >> a >> b;
c = a;
d = b;
if (a == c)
if (b == d) {
Add<int, int> m(c, d);
Mul<int, int> n(c, d);
}
else {
Add<int, float> m(c, b);
Mul<int, float> n(c, b);
}
else {
if (b == d) {
Add<float, int> m(a, d);
Mul<float, int> n(a, d);
}
else {
Add<float, float> m(a, b);
Mul<float, float> n(a, b);
}
}
return 0;
}
结果与“实验内容一”相同。
由于模板类在多种编译环境下不支持声明与定义分开,其他程序员也不建议这样子做。所以实验内容三的模板类分多文件处理,只分了头文件。头文件中包含了类的声明与定义。
main.cpp
#include <iostream>
#include "Add.h"
#include "Mul.h"
using namespace std;
int main() {
float a, b;
int c, d;
cin >> a >> b;
c = a;
d = b;
if (a == c)
if (b == d) {
Add<int, int> m(c, d);
Mul<int, int> n(c, d);
}
else {
Add<int, float> m(c, b);
Mul<int, float> n(c, b);
}
else {
if (b == d) {
Add<float, int> m(a, d);
Mul<float, int> n(a, d);
}
else {
Add<float, float> m(a, b);
Mul<float, float> n(a, b);
}
}
return 0;
}
Add.h
#pragma once
#include <iostream>
template <class T, class U>
class Add {
public:
Add(T a, U b) {
cout << "两数之和是" << a + b << endl;
}
};
Mul.h#pragma once
#include <iostream>
template <class V, class W>
class Mul {
public:
Mul(V a, W b) {
cout << "两数之积是" << a * b << endl;
}
};
运行结果也与实验内容一相同。