04737_C++程序设计_第1章_认识C++的对象

例1.1

演示使用结构对象的示例程序。

 1 //功能:将结构对象的两个域值相加,乘以2再加50
 2 #include <iostream>//包含头文件
 3 
 4 using namespace std;//使用命名空间
 5 
 6 int result(int, int);//result函数的原型声明
 7 const int k = 2;//定义常量
 8 struct Point//定义结构point
 9 {
10     int x, y;//定义结构成员x和y
11 };
12 //空行
13 int main()//主程序
14 {//主程序开始
15     int z(0), b(50);//初始化整数对象
16     Point a;//定义结构对象a
17 
18     cout << "输入两个整数(以空格区分):";//输出提示信息
19     cin >> a.x >> a.y;//接受输入数值
20 
21     z = (a.x + a.y)*k;//计算结果
22     z = result(z, b);//计算结果
23 
24     cout << "计算结果如下:" << endl;//输出信息并换行
25     cout << "((" << a.x << "+" << a.y//输出信息
26         << ")*" << k << ")+" << b//输出信息
27         << "=" << z//输出结果
28         << endl;//换行
29 
30     return 0;//主函数main的返回值
31 }
32 //*********************
33 //函数:result
34 //参数:整型对象a和b
35 //返回值:整型对象
36 //*********************
37 int result(int a, int b)
38 {
39     return a + b;//返回a+b
40 }

例1.2

函数重载产生多态性的例子。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int max(int, int);//2个整型参数的函数原型
 6 int max(int, int, int);//3个整型参数的函数原型
 7 
 8 int main()
 9 {
10     cout << max(35, 25) << "," << max(25, 39, 35) << endl;
11 
12     system("pause");
13 }
14 
15 int max(int m1, int m2)
16 {
17     return (m1 > m2) ? m1 : m2;
18 }
19 
20 int max(int m1, int m2, int m3)
21 {
22     int t = max(m1, m2);
23     return max(t, m3);
24 }

例1.3

演示使用new和delete的例子。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void main()
 6 {
 7     double *p;//声明double型指针
 8     
 9     p = new double[3];//分配3个double型数据的存储空间
10 
11     for (int i = 0; i < 3; i++)//定义对象i的初值为0
12     {
13         cin >> *(p + i);//将输入数据存入指定地址
14     }
15 
16     for (int i = 0; i < 3; i++)
17     {
18         cout << *(p + i) << " ";//将地址里的内容输出
19     }
20 
21     delete p;
22 }

例1.4

演示引用的例子。

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void main()
 6 {
 7     int x = 56;//定义并初始化x
 8     int& a = x;//声明a是x的引用,a和x的地址相同
 9     int& r = a;//声明r是x的引用,r和x的地址相同,即和x的地址也相同
10 
11     cout << "x=" << x << ",&x=" << &x << ",a=" << a << ",&a=" << &a
12         << ",r=" << r << ",&r=" << &r << endl;
13 
14     r = 25;//改变r,则a和x都同步变化
15 
16     cout << "x=" << x << ",&x=" << &x << ",a=" << a << ",&a=" << &a
17         << ",r=" << r << ",&r=" << &r << endl;
18 }

例1.6

演示数组升幂排序、复制、逆向和输出等操作的例子。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <iterator>
 4 
 5 using namespace std;
 6 
 7 void main()
 8 {
 9     double a[] = { 1.1,4.4,3.3,2.2 }, b[4];
10 
11     copy(a, a + 4, ostream_iterator<double>(cout, " "));//正向输出数组a,以空格隔开
12     cout << endl;
13 
14     reverse_copy(a, a + 4, ostream_iterator<double>(cout, " "));//逆向输出数组a,以空格隔开
15     cout << endl;
16 
17     copy(a, a + 4, b);//原样复制到数组b
18 
19     copy(b, b + 4, ostream_iterator<double>(cout, " "));//正向输出数组b,以空格隔开
20     cout << endl;
21 
22     sort(a, a + 4);//对数组a进行升幂排序
23 
24     copy(a, a + 4, ostream_iterator<double>(cout, " "));//输出数组a
25     cout << endl;
26 
27     reverse_copy(a, a + 4, b);//将a的内容按逆向复制给数组b
28 
29     copy(b, b + 4, ostream_iterator<double>(cout, " "));//输出数组b
30     cout << endl;
31 }

例1.7

演示数组降幂排序、查找和输出等操作的例子。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <functional>
 4 #include <iterator>
 5 
 6 using namespace std;
 7 
 8 void main()
 9 {
10     double a[] = { 1.1,4.4,3.3,2.2 };
11 
12     sort(a, a + 4);//升幂排序
13 
14     copy(a, a + 4, ostream_iterator<double>(cout, " "));
15     cout << endl;
16 
17     sort(a, a + 4, greater<double>());//降幂排序
18 
19     copy(a, a + 4, ostream_iterator<double>(cout, " "));
20     cout << endl;
21 
22     double *x = find(a, a + 4, 4.4);//查找
23 
24     if (x == a + 4)
25     {
26         cout << "没有值为4.4的数组元素";
27     }
28     else
29     {
30         cout << "有值为" << *x << "的数组元素";
31     }
32 
33     cout << endl;
34 
35     x = find(a, a + 4, 8);//x是double类型的指针
36 
37     if (x == a + 4)
38     {
39         cout << "没有值为8的数组元素";
40     }
41     else
42     {
43         cout << "有值为" << *x << "的数组元素";
44     }
45 }

例1.8

演示对一维数组进行局部操作的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <functional>
 6 #include <iterator>
 7 
 8 using namespace std;
 9 
10 void main()
11 {
12     double a[] = { 1.1,4.4,3.3,2.2 }, b[8] = { 8 };
13 
14     copy(a + 2, a + 4, ostream_iterator<double>(cout, " "));//输出a[2]和a[3]
15     cout << endl;
16     
17     reverse_copy(a + 1, a + 4, ostream_iterator<double>(cout, " "));//输出a[3]~a[1]
18     cout << endl;
19 
20     copy(a, a + 4, &b[4]);//将数组赋值到数组b的尾部
21 
22     copy(b, b + 8, ostream_iterator<double>(cout, " "));//输出数组b
23     cout << endl;
24 
25     sort(a + 1, a + 3);//对部分数组元素升幂排序
26 
27     copy(a, a + 4, ostream_iterator<double>(cout, " "));//输出数组a
28     cout << endl;
29 
30     sort(b, b + 6, greater<double>());//对部分数组元素降幂排序
31 
32     copy(b, b + 8, ostream_iterator<double>(cout, " "));//输出数组a
33     cout << endl;
34 }

例1.9

演示对字符数组进行操作的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <functional>
 6 #include <iterator>
 7 
 8 using namespace std;
 9 
10 void main()
11 {
12     char a[] = "wearehere!", b[11];
13 
14     reverse(a, a + 10);//数组元素逆向
15 
16     copy(a, a + 10, ostream_iterator<char>(cout));//输出逆向后的数组内容
17     cout << endl;
18 
19     copy(a, a + 11, b);//原样复制到数组b
20 
21     sort(a, a + 10);//默认升幂排序
22 
23     cout << a << endl;//输出排序结果
24     cout << b << endl;//输出数组b的内容
25 
26     reverse_copy(a, a + 10, b);//逆向复制到数组b
27 
28     cout << b << endl;//输出逆向后的数组b的内容
29 
30     reverse(b + 2, b + 8);//数组b部分逆向
31 
32     copy(b + 2, b + 8, ostream_iterator<char>(cout));//输出数组b逆向后的部分内容
33     cout << endl;
34 
35     sort(a, a + 10, greater<char>());//降序排序
36 
37     cout << a << endl;//输出排序后的数组a
38     cout << (*find(a, a + 10, 'e') == 'e') << " "
39         << (*find(a, a + 10, 'O') == 'O') << endl;
40 }

例1.10

使用setw设置输出宽度的例子。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <iomanip>
 5 
 6 using namespace std;
 7 
 8 void main()
 9 {
10     int a = 29, b = 1001;
11 
12     cout << a << setw(6) << b << endl;
13     cout << setw(6) << a << b << endl;
14 }

例1.11

在下面的程序中,当要求输入时,均输入100,给出程序的输出结果。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <iomanip>
 5 
 6 using namespace std;
 7 const double PI = 3.141592;
 8 
 9 void main()
10 {
11     cout << PI << endl
12         << setprecision(0) << PI << endl
13         << setprecision(1) << PI << endl
14         << setprecision(2) << PI << endl
15         << setprecision(3) << PI << endl
16         << setprecision(7) << PI << endl;
17 
18     int b = 100;
19 
20     cout << "Dec:" << dec << b << endl
21         << "Hex:" << hex << b << endl
22         << "Oct:" << oct << b << endl;
23 
24     cout << b << endl
25         << 100 << endl
26         << "Input b=";
27 
28     cin >> b;
29 
30     cout << b << endl;
31     cout << dec << setiosflags(ios_base::showpos) << b << endl;
32     cout << "Input b=";
33     
34     cin >> b;
35 
36     cout << b << endl;
37     cout << resetiosflags(ios_base::showpos);
38     cout << b << endl;
39 }

例1.12

分析下面程序的输出。

 1 #define _SCL_SECURE_NO_WARNINGS
 2 
 3 #include <iostream>
 4 #include <iomanip>
 5 
 6 using namespace std;
 7 
 8 void main()
 9 {
10     cout << setfill('*')
11         << setw(0) << 15 << endl
12         << setw(1) << 15 << endl
13         << setw(2) << 15 << endl
14         << setw(3) << 15 << endl
15         << setw(4) << 15 << endl;
16 
17     cout << setw(16) << setfill('*') << " " << endl;
18 
19     cout << setiosflags(ios_base::right)
20         << setw(5) << 1
21         << setw(5) << 2
22         << setw(5) << 3 << endl;
23 
24     cout << resetiosflags(ios_base::right);
25 
26     cout << setiosflags(ios_base::left)
27         << setw(5) << 1
28         << setw(5) << 2
29         << setw(5) << 3 << endl;
30 }
原文地址:https://www.cnblogs.com/denggelin/p/5542345.html