以下代码在调试期间始终在delete [] p1;之前中断。我不知道如何让它发挥作用:(
#include <iostream>
#include <iomanip>
int main() {
int N = 0;
double max = 0;
std::cin >> N;
double *p1 = new double[N];
for (int i = 0; i < N; i++) std::cin >> p1[N];
for (int i = 0; i < N - 1; i++)
{
if (p1[i] < p1[i + 1]) max = p1[i + 1];
else max = p1[i];
}
for (int i = 0; i < N; i++)
{
if (p1[i] == max) continue;
else std::cout << std::setprecision(2) << std::fixed << p1[i] << '\n';
}**strong text**
std::cout << std::setprecision(2) << std::fixed << max << '\n';
delete[] p1;
return 0;
}
答案 0 :(得分:3)
只是一个错字:
for (int i = 0; i < N; i++) std::cin >> p1[N];
=&GT;
for (int i = 0; i < N; i++) std::cin >> p1[i];
答案 1 :(得分:0)
您的代码for (int i = 0; i < N; i++) std::cin >> p1[N];
错误!显然,你想要做的是for (int i = 0; i < N; i++) std::cin >> p1[i];
。顺便问一下,你的意图是什么?找到最大值?如果是这样,你的代码就是错误,它应该是:
max = p1[0];
for(int i=1; i<N; ++i)
if(max < p1[i])
max = p1[i];
cout << max << endl;
您可以使用上面的代码来获得最大值。我希望这可以帮到你。