输出一个整数序列中最大的数和最小的数的差。
【输入】
第一行为M,表示整数个数,整数个数不会大于10000;
第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。
【输出】
输出M个数中最大值和最小值的差。
【输入样例】
5
2 5 7 4 2
【输出样例】
5
#include
using namespace std;
int main()
{int max=-10001;int min=10001;
int n;
scanf("%d",&n);
int a[n];
for(int i=0;i
scanf("%d",&a[i]);
if(a[i]>=max)
{
max=a[i];
}
if(a[i]<=min)
{
min=a[i];
}
}
printf("%d",max-min);
}
int a[n];
这个语法是错的
首先,在每个块内,所有的定义必须在所有的代码前面,你这个定义在scanf后面就是错的
其次只有C99才支持数组长度放变量,低版本数组长度必须是常量
已经告诉了你不超过10000个数,你直接定义成a[10000]即可
你运行出现什么异常现象了啊?
int a[n]..这里必须是常量
int *p;
p=new int a[n];
delete []p; 主函数末尾 return 0之前
错误他们说的差不多了,我就说解决办法吧!
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[1020];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int max=a[0];
int min=a[0];
for(int i=0;i<n;i++){
if(a[i]<min){ //找最大
min=a[i];
}
if(a[i]>max){ //找最小
max=a[i];
}
}
printf("%d",max-min);
return 0;
}
供参考:
#include <stdio.h>
int main()
{
int max = -10000;
int min = 10000;
int n, a[10000]; //修改
scanf("%d", &n);
//int a[n]; 修改
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
if (a[i] > max) // =
{
max = a[i];
}
if (a[i] < min) //=
{
min = a[i];
}
}
printf("%d", max - min);
return 0;
}
数组长度需定义成常量。