C++ 马克斯;C+中的最小1函数+;

C++ 马克斯;C+中的最小1函数+;,c++,function,c++17,C++,Function,C++17,输出 6 -80 800 -8000 -800 80 8000 在初始化之前,您正在使用n(在inti,n,a[n];和a[0]) *(a+i)=max;和*(a+i)=min;应该是max=*(a+i);和min=*(a+i);更新max和min 可变长度数组不在标准C++中。 #包括 使用名称空间std; 国际货币基金组织(国际货币基金组织[],国际货币基金组织) { int i,max,min;//max和min有问题 对于(i=0;i>*(a+i); 如果(i==0) { max

输出

6
-80 800 -8000 -800 80 8000 
  • 在初始化之前,您正在使用
    n
    (在
    inti,n,a[n];
    a[0]
  • *(a+i)=max;
    *(a+i)=min;
    应该是
    max=*(a+i);
    min=*(a+i);
    更新
    max
    min
  • 可变长度数组不在标准C++中。
#包括
使用名称空间std;
国际货币基金组织(国际货币基金组织[],国际货币基金组织)
{
int i,max,min;//max和min有问题
对于(i=0;i>*(a+i);
如果(i==0)
{
max=min=a[0];
}
其他的
{
如果(*(a+i)>max)max=*(a+i);

如果(*(a+i)
int i,n,a[n];
是未定义的行为。因为
a
是在
n
初始化之前创建的。
*(a+i)=max
您想修改哪一个?您的函数应该返回
int
,但它不返回任何内容。这也是UB。您不需要数组,并且正在赋值“向后”。还需要翻转
*(a+i)=max
->
max=*(a+i)
。为清晰起见,请将
*(a+i)
s更改为
a[i] S>代码> STD::向量可以避免这里的丑陋分配,但这可能是另一个蠕虫的分配。我也会分裂收集输入,计算MI/Max。实际上,我的老师不想让我使用向量2他想要我2使用C或指针混搭的简单数组和来自C++的东西。
6
-80 800 -8000 -800 80 8000 
max is 4253776 min is 4253776
# include<iostream>
using namespace std;
int ma_mi(int a[],int n)
{
    int i,max,min; // problem with max and min
    for(i=0;i<n;i++)
    {
        cin>>*(a+i);
        if(i==0)
        {
            max = min = a[0];
        }
        else
        {
            if (*(a+i)>max) max=*(a+i);
            if (*(a+i)<min) min=*(a+i);
        }
    }
    cout<<"max is"<<' '<<max<<' '<<"min is"<<' '<<min;
}
int main()
{
    int i,n;
    cin>>n;
    int* a = new int[n];
    ma_mi(a,n);
    delete[] a;
}