用c++语言,编写一个函数模板findmin,从键盘中输入十个数,包括小数和整数,该函数能寻找数组中的最小元素,将该元素的下标通过参数返回,函数返回值为其地址值
时间: 2023-12-11 22:02:23 浏览: 81
好的,这是一个简单的代码实现,希望能帮到你:
```c++
#include <iostream>
template <typename T>
T* findmin(T arr[], int size, int& index)
{
T* min = &arr[0];
index = 0;
for (int i = 1; i < size; ++i) {
if (arr[i] < *min) {
min = &arr[i];
index = i;
}
}
return min;
}
int main()
{
const int SIZE = 10;
int intarr[SIZE];
double doublearr[SIZE];
std::cout << "请输入10个整数:" << std::endl;
for (int i = 0; i < SIZE; ++i) {
std::cin >> intarr[i];
}
int intindex;
int* intmin = findmin(intarr, SIZE, intindex);
std::cout << "整数数组中最小元素的下标为:" << intindex << std::endl;
std::cout << "整数数组中最小元素的地址为:" << intmin << std::endl;
std::cout << "请输入10个小数:" << std::endl;
for (int i = 0; i < SIZE; ++i) {
std::cin >> doublearr[i];
}
int doubleindex;
double* doublemin = findmin(doublearr, SIZE, doubleindex);
std::cout << "小数数组中最小元素的下标为:" << doubleindex << std::endl;
std::cout << "小数数组中最小元素的地址为:" << doublemin << std::endl;
return 0;
}
```
这个函数模板的实现比较简单,就是用一个指针指向数组中的第一个元素,然后遍历数组,逐个比较,如果找到更小的元素,就把指针指向这个更小的元素,同时记录一下它的下标。最后返回指向最小元素的指针。
在主函数中,我们先定义了一个大小为10的整数数组和一个大小为10的双精度浮点数数组。然后分别从键盘输入这两个数组的元素,并调用findmin函数模板,分别得到它们的最小元素的地址和下标。最后输出这些结果。
希望这个代码能够解决你的问题。
阅读全文