例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 }