关于无法输入直接无内容输出的问题

问题遇到的现象和发生背景

编译没问题,但是无法输入,运行后没有输入直接无内容输出

问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,a[n],i,t,max;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        if(a[i]>a[i+1])
        {
            t=a[i];
            a[i]=a[i+1];
            a[i+1]=t;
        }
    }
    for(i=n;i>n-n/2;i--)
    {
        max=max+a[i]/2;
    }
    printf("%d\n",max);
    return 0;
}

运行结果及报错内容

img

我想要达到的结果

以此题为例
输入
5
4 5 6 7 8
输出
7

    int n,a[n],i,t,max; -> 初始化为乱值,试图使用乱初始化值初始化变长数组,直接把编译器搞over了。

 for(i=0;i<n;i++) ->越界
    {
        if(a[i]>a[i+1])

for(i=n;i>n-n/2;i--) ->越界
    {
        max=max+a[i]/2;

max初始化一下,初始化为0,然后for循环中的i>n—n/2用括号括起来,并强制类型转换,(int )(n-n/2)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n, i;
    float t;
    float max = 0.0;
    scanf("%d", &n);
    float a[100];
    for (i = 0; i < n; i++)
    {
        scanf("%f", &a[i]);
    }
    for (i = 0; i < n; i++)
    {
        if (a[i] > a[i + 1])
        {
            t = a[i];
            a[i] = a[i + 1];
            a[i + 1] = t;
        }
    }
    for (i = n; i >(int)( n - n / 2); i--)
    {
        max = max + a[i] / 2;
    }
    printf("%f\n", max);
    return 0;
}