请问数组依次存放着六个同学的平均值,怎么输出从大到小的分数排列以及对应的人
#include <iostream>
using namespace std;
int main()
{
float avg[6] = {82.5, 69.0, 75.5, 91.0, 88.5, 77.0}; // 六个同学的平均分数
int group[6] = {1, 2, 3, 4, 5, 6}; // 对应的组数
int i, j, max_idx;
for (i = 0; i < 5; i++)
{
max_idx = i;
for (j = i + 1; j < 6; j++)
{
if (avg[j] > avg[max_idx])
{
max_idx = j;
}
}
// 交换平均分数和组号
swap(avg[i], avg[max_idx]);
swap(group[i], group[max_idx]);
}
// 输出排序结果
cout << "降序排列后的平均分数和对应的组号为:" << endl;
for (i = 0; i < 6; i++)
{
cout << "第 " << group[i] << " 组的平均分数为 " << avg[i] << endl;
}
return 0;
}
#include <iostream>
#include <typeinfo>
using namespace std;
template<int len>
int foo(int (&arr)[len])
{
cout << typeid(arr).name() << endl;
return sizeof(arr) / 4; //这里可以直接返回len
};
int main()
{
int arr1[3] = {1, 2, 3};
int arr2[5] = {8, 8, 8, 8, 8};
cout << foo(arr1) << endl;
cout << foo(arr2) << endl;
system("pause");
return 0;
}
这样,在调用时,编译器根据函数模板为不同的参数类型会生成不同的函数,能够匹配int[3]、int[5]等类型。