实验任务1
程序源码
#include <iostream> #include <complex> int main(){ using namespace std; complex<double> c1{3, 4}, c2{4.5}; const complex<double> c3{c2}; cout << "c1 = " << c1 << endl; cout << "c2 = " << c2 << endl; cout << "c3 = " << c3 << endl; cout << "c3.real = " << c3.real() << endl; cout << "c3.imag = " << c3.imag() << endl; cout << "c1 + c2 = " << c1 + c2 << endl; cout << "c1 - c2 = " << c1 - c2 << endl; cout << "abs(c1) = " << abs(c1) << endl; cout << boolalpha; cout << "c1 == c2 : " << (c1 == c2) << endl; cout << "c3 == c2 : " << (c3 == c2) << endl; complex<double> c4 = 2; cout << "c4 = " << c4 << endl; c4 += c1; cout << "c4 = " << c4 << endl; }
测试结果
实验任务2
程序源码
#include <iostream> #include <array> #include <string> // 模板函数 // 对满足特定条件的序列类型T,使用范围for输出 template<typename T> void output1(const T &obj) { for(auto i: obj) std::cout << i << ", "; std::cout << "\b\b \n"; } // 模板函数 // 对满足特定条件的序列类型T,使用迭代器输出 template<typename T> void output2(const T &obj) { for(auto p = obj.cbegin(); p != obj.cend(); ++p) //使用const迭代器 std::cout << *p << ", "; std::cout << "\b\b \n"; } int main(int argc, char const *argv[]) { using namespace std; array<int, 5> x1; // 创建一个array对象,包含5个int类型元素,未初始化 cout << "x1.size() = " << x1.size() << endl; // 输出元素个数 x1.fill(42); // 将x1的所有元素值都赋值为42 x1.at(0) = 999; // 把下标为0的元素修改为999 x1.at(4) = -999; // 把下标为4的元素修改为-999 x1[1] = 777; // 把下标为1的元素修改为777 cout << "x1: "; output1(x1); cout << "x1: "; output2(x1); array<double, 10> x2{1.5, 2.2}; // 创建要给array对象,包含10个double类型元素,初始化部分元素 cout << "x2.size() = " << x2.size() << endl; cout << "x2: "; output1(x2); array<int,5> x3(x1); cout << boolalpha << (x1 == x3) << endl; x3.fill(22); cout << "x3: "; output1(x3); swap(x1, x3); // 交换x1和x3的数据 cout << "x1: "; output1(x1); cout << "x3: "; output1(x3); }
测试结果
实验任务3
程序源码
- employee.hpp
#pragma once // Employee绫荤殑瀹氫箟 #include <iostream> #include <string> #include <iomanip> using std::string; using std::cout; using std::endl; using std::setfill; using std::setw; using std::left; using std::right; using std::to_string; struct Date { int year; int month; int day; }; class Employee { public: Employee(); Employee(string name0, double salary0, int y, int m, int d = 1); void set_info(string name0, double salary0, int y, int m, int d = 1); string get_name() const; double get_salary() const; void display_info() const; void update_salary(double s); void update_hire_date(int y, int m, int d); void raise_salary(double by_percent); public: static void display_count(); private: string id; string name; double salary; Date hire_date; public: static const string doc; private: static int count; }; const string Employee::doc {"a simple Employee class"}; int Employee::count = 0; Employee::Employee(): id{ to_string(count+1) } { ++count; } Employee::Employee(string name0, double salary0, int y, int m, int d): id{to_string(count+1)}, name{name0}, salary{salary0}, hire_date{y, m, d} { ++count; } void Employee::set_info(string name0, double salary0, int y, int m, int d) { name = name0; salary = salary0; hire_date.year = y; hire_date.month = m; hire_date.day = d; } string Employee::get_name() const { return name; } double Employee::get_salary() const { return salary; } void Employee::display_info() const { cout << left << setw(15) << "id: " << id << endl; cout << setw(15) << "name: " << name << endl; cout << setw(15) << "salary: " << salary << endl; cout << setw(15) << "hire_date: " << hire_date.year << "-"; cout << std::right << setfill('0') << setw(2) << hire_date.month << "-" << setw(2) << hire_date.day; cout << setfill(' '); } void Employee::update_salary(double s) { salary = s; } void Employee::update_hire_date(int y, int m, int d) { hire_date.year = y; hire_date.month = m; hire_date.day = d; } void Employee::raise_salary(double by_percent) { double raise = salary * by_percent / 100; salary += raise; } void Employee::display_count() { cout << "there are " << count << " employees\n"; }
- task3.cpp
#include "Employee.hpp" #include <iostream> void test() { using std::cout; using std::endl; cout << Employee::doc << endl << endl; Employee employee1; employee1.set_info("Sam", 30000, 2015, 1, 6); employee1.update_hire_date(2017, 6, 30); employee1.update_salary(35000); employee1.display_info(); cout << endl << endl; Employee employee2{"Tony", 20000, 2020, 3, 16}; employee2.raise_salary(15); employee2.display_info(); cout << endl << endl; Employee::display_count(); } int main() { test(); }
测试结果
实验任务4
程序源码(已更换测试数据)
- Complex.hpp文件源码
#include<iostream> #include<cmath> using std::cout; using std::endl; class Complex { public: Complex (); Complex (double x,double y=0); Complex (const Complex& x); ~Complex()=default; double get_real()const{return real;} double get_imag()const{return imag;} void show() const; void add(Complex const& c1); friend Complex add(Complex const& c1,Complex const& c2); friend bool is_equal(Complex const& c1,Complex const& c2); friend double abs(Complex const& c1); private: double real; double imag; }; Complex::Complex():real{0},imag{0}{} Complex::Complex(double x,double y):real{x},imag{y}{} Complex::Complex(const Complex& x):real{x.real},imag{x.imag}{} void Complex::show()const{ if(imag>0) cout<<real<<"+"<<imag<<"i"; else if(imag<0) cout<<real<<imag<<"i"; else cout<<real; } void Complex::add(Complex const& c1){ real+=c1.real; imag+=c1.imag; } Complex add(Complex const& c1,Complex const& c2){ Complex c3; c3.real=c1.real +c2.real; c3.imag=c1.imag +c2.imag; return c3; } bool is_equal(Complex const& c1,Complex const& c2){ if(c1.real==c2.real&&c1.imag==c2.imag) return true; else return false; } double abs(Complex const& c1){ return sqrt(c1.real*c1.real+c1.imag*c1.imag); }
- task4.cpp源码
#include "Complex.hpp" #include <iostream> void test() { using namespace std; Complex c1(7, -24); const Complex c2(2.5); Complex c3(c1); cout << "c1 = "; c1.show(); cout << endl; cout << "c2 = "; c2.show(); cout << endl; cout << "c2.imag = " << c2.get_imag() << endl; cout << "c3 = "; c3.show(); cout << endl; cout << "abs(c1) = "; cout << abs(c1) << endl; cout << boolalpha; cout << "c1 == c3 : " << is_equal(c1, c3) << endl; cout << "c1 == c2 : " << is_equal(c1, c2) << endl; Complex c4; c4 = add(c1, c2); cout << "c4 = c1 + c2 = "; c4.show(); cout << endl; c1.add(c2); cout << "c1 += c2, " << "c1 = "; c1.show(); cout << endl; } int main() { test(); }
测试结果(已更换测试数据)
实验任务5
程序源码(已更换测试数据)
- User.hpp文件源码
#include<iostream> #include<string> #include<iomanip> using namespace std; class User{ public: User(string name,string passwd="111111",string email=""); ~User()=default; void set_email(); void change_passwd(); void print_info(); static void print_n(); private: string name; string passwd; string email; static int n; }; User::User(string name,string passwd,string email) :name{name},passwd{passwd},email{email}{n++;} int User::n=0; void User::set_email(){ cout<<"Enter email address:"; cin>>email; cout<<"email is set successfully..."<<endl; } void User::change_passwd(){ string t; int i; cout << "Enter old password: "; cin >> t; while (i <2 ) { if (passwd == t) { cout << "Enter new password: "; cin >> passwd; cout << "new passwd is set successfully..." << endl; break; } else { i++; cout << "password input error. Please re-enter again: "; cin >> t; } } if (i ==2 ) { cout << "password input error. Please try after a while." << endl; } } void User::print_info() { string starPasswd(passwd.length(), '*'); cout << setfill(' ') << setw(8) << left <<"name:"<< name << endl << setfill(' ') << setw(8) << left <<"passwd:"<< starPasswd << endl << setfill(' ') << setw(8) << left <<"email:"<< email << endl; } void User::print_n(){ if(n==1) cout<<"there is 1 user."<<endl; else cout<<"there are "<<n<<" users."<<endl; }
- task5.cpp源码
#include "User.hpp" #include <iostream> void test() { using std::cout; using std::endl; cout << "testing 1......\n"; User user1("Eliwa", "9251995", "[email protected]"); user1.print_info(); cout << endl << "testing 2......\n\n"; User user2("Kim"); user2.change_passwd(); user2.set_email(); user2.print_info(); cout << endl; User::print_n(); } int main() { test(); }
测试结果(已更换测试数据)
标签:const,string,对象,void,int,Complex,实验,cout From: https://www.cnblogs.com/xu2993610/p/16785338.html