编译没问题,但是无法输入,运行后没有输入直接无内容输出
#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;
}
以此题为例
输入
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;
}