【8.14】已知下列主函数:
- int main()
- {
- cout << min(10, 5, 3) << endl;
- cout << min(10.0,5.0,3.0) << endl;
- cout << min('a','b','c') << endl;
- return 0;
- }
- #include<iostream>
- using namespace std;
- template<typename T>
- T min(T a, T b, T c)
- {
- T minus;
- if (a < b&&a < c)
- minus = a;
- else if (b < a&&b < c)
- minus = b;
- else
- minus = c;
- return minus;
- }
- int main()
- {
- cout << min(10, 5, 3) << endl;
- cout << min(10.0,5.0,3.0) << endl;
- cout << min('a','b','c') << endl;
- system("pause");
- return 0;
- }
【8.15】编写一个函数模版,求数组中的最大元素,并写出调用此函数模版的完整程序,使得函数调用时,数组的类型可以是整数也可以双精度类型
- #include<iostream>
- using namespace std;
- template<typename T>
- T bigest(T *p)
- {
- int s;
- cout << "请输入元素个数s" << endl;
- cin >> s;
- cout <<endl;
- for (int i = 0; i < s;i++)
- cin >> p[i];
- T big = p[0];
- for (int i = 1; i < s; i++)
- {
- if (p[i] > big)
- big = p[i];
- }
- return big;
- }
- int main()
- {
- int s;
- cout << "请输入整型的一维数组的元素个数" << endl;
- cin >> s;
- int *pi = new int[s];
- cout << "数组中最大的数为: " << bigest(pi) << endl;
- cout << endl;
- int s2;
- cout << "请输入双精度类型的一维数组的元素个数" << endl;
- cin >> s2;
- double *pi1 = new double[s2];
- cout << "数组中最大的数为: " << bigest(pi1) << endl;
- system("pause");
- return 0;
- }
-
【8.16】编写一个函数模版,使用冒泡函数排序法将数组内容由小到大排列并打印出来,并写出调用此函数模版的完整程序,使得函数调用时,数组的类型可以是整形也可以是双精度型。
-
- #include<iostream>
- using namespace std;
- template<typename T, typename T1>
- void sort(T *p,T1 n) //冒泡法排序
- {
- T temp;
- for (int i = 1; i < n; i++)
- {
- for (int j = n - 1; j >= i; j--)
- if (p[j - 1] > p[j])
- {
- temp = p[j - 1];
- p[j - 1] = p[j];
- p[j] = temp;
- }
- }
- }
- template<typename T,typename T1>
- void print(T *p, T1 n)
- {
- cout << "排序后的数组如下:" << endl;
- for ( int i = 0; i < n; i++)
- {
- cout << p[i]<<" ";
- }
- cout << endl;
- }
- int main()
- {
- int a[9],i,j;
- double b[4];
- cout<<"please input nine int number";
- for(i=0;i<9;i++)
- cin>>a[9];
- cout<<"please input 4 double number:"
- for(j=0;j<4;j++)
- cin>>b[j];
- sort(a,9);
- print(a, 9);
- sort(d,4);
- print(d, 4);
- system("pause");
- return 0;
- }