#include<iostream>
#include<iomanip>
using namespace std;
#define N 5
void fun(int *a);
void fun(double* a);
void fun(float* a);
int main() {
int h, a[N] = { 0 };
double b[N] = { 0 };
float c[N] = { 0 };
cout << "请选择你要输入的数据类型(int,double,float)==(1,2,3)\n";
cin >> h;
if (h == 1) {
cout << "请输入N个随机整型变量\n";
for (int i = 0; i < N; i++)
cin >> a[i];
fun(a);
}
if (h == 2) {
cout << "请输入N个随机双精度浮点型变量\n";
for (int i = 0; i < N; i++)
cin >> b[i];
fun(b);
}
if (h == 3) {
cout << "请输入N个随机单精度浮点型变量\n";
for (int i = 0; i < N; i++)
cin >> c[i];
fun(c);
}
return 0;
}
void fun(int a[N]) {
int e, k;
for (int i = 0; i < N; i++)
for (int j = 0; j < N - i; j++)
if (a[j] > a[j + 1])e = a[j], a[j] = a[j + 1], a[j + 1] = e;
for (k = 0; k < N; k++)
cout << setw(3) << a[k];
}
void fun(double a[N]) {
int k;
double e;
for (int i = 0; i < N; i++)
for (int j = 0; j < N - i; j++)
if (a[j] > a[j + 1])
e = a[j], a[j] = a[j + 1], a[j + 1] = e;
for (k = 0; k < N; k++)
cout << std::fixed << a[k];
}
void fun(float a[N]) {
int k;
float e;
for (int i = 0; i < N; i++)
for (int j = 0; j < N - i; j++)
if (a[j] > a[j + 1])e = a[j], a[j] = a[j + 1], a[j + 1] = e;
for (k = 0; k < N; k++)
cout << std::fixed<< a[k];
}
这个程序使用vs2022报错,Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.
在网上搜了搜,猜测是内存访问越界,但不知道如何修改,求帮助。