问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include <iostream>
#define N 5
using namespace std;
template <typename T>
T paixu(T *m)
{
int i,j;
T t;
for (j = 0; j < N; j++)
{
for (i = 0; i < (N-1-j); i++)
{
if (*m > *(m + i))
{
t = *m;
*m = *(m + i);
*(m + i) = t;
}
}
}
return 0;
}
int main()
{
cout << "请选择您想输入的数据类型" << endl;
cout << "输入1代表整形,输入2代表单精度,输入3代表双精度" << endl;
int q;
cin >> q;
cout << "请在宏定义处修改您想要输入的数字个数(初始宏定义为5)" << endl;
int i;
int a[N];
float b[N];
double c[N];
cout << "请输入" << N << "个数(这些数必须同时为整形,单精度或双精度)" << endl;
cout << "排序后的结果是:" << endl;
if (q == 1)
{
for (i = 0; i < N; i++)
{
cin >> *(a + i);
}
paixu(a);
for (i = 0; i < N; i++)
{
cout << *(a + i);
cout << '\t';
}
cout << endl;
}
if (q == 2)
{
for (i = 0; i < N; i++)
{
cin >> *(b + i);
}
paixu(b);
for (i = 0; i < N; i++)
{
cout << *(b + i);
cout << '\t';
}
cout << endl;
}
if (q == 3)
{
for (i = 0; i < N; i++)
{
cin >> *(c + i);
}
paixu(c);
for (i = 0; i < N; i++)
{
cout << *(c + i);
cout << '\t';
}
cout << endl;
}return 0;
}
运行结果及报错内容
排序结果不对
我的解答思路和尝试过的方法
我想要达到的结果
从小到大排序