1、编写一个模板函数Input,要求输入一个非负数,并负责验证所输入的数是否真的大于或等于0,如果不是,它将告诉该输入非法,需要重新输入一个数。在函数非 成功退出之前,应给三次机会。如果输入成功,函数应当把所输入的数作为引用参数返回。 输入成功时,函数应返回true, 否则返回false。
#include <iostream>
using namespace std;
template<typename T>
bool input(T &testNumber);
int main()
{
int testNumber;
int i=0;
cout << "please input the number " ;
cin >> testNumber;
i++;
while(!(input(testNumber))){
if(i >= 3){
cout << "three times already, bye bye~" << endl;
break;
}
cout << "please input again " ;
cin >> testNumber;
i ++;
}
}
template<typename T>
bool input(T &testNumber)
{
if (testNumber < 0)
{
cout << "input is illegal " << endl;
return false;
}
else
{
cout << "OK " << endl;
return true;
}
}
2、编写一个模板函数,用来测试数组中的元素是否按升序排列(即a [ i ]≤a [ i + 1 ] ,其中0≤ i<n - 1)。如果不是,函数应返回false否则应返回true。
#include <iostream>
using namespace std;
template <typename T>
bool testOrder(T (&arr)[10]);
int main()
{
int numberArray[] = {0, 1, 2, 3, 0, 5, 6, 7, 8, 9};
bool flag = testOrder(numberArray);
cout << flag;
return 0;
}
template <typename T>
bool testOrder(T (&numberArray)[10])
{
for (int i = 0; i < 10; i++)
{
if(numberArray[i] >= numberArray[i + 1]){
return false;
}
}
return true;
}