问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include <stdio.h>
int max,min;
int s(int n)
{ int *p,a[n],sum=0;
float avg;
max=a[0];
min=a[0];
for(p=a;p<a+n;p++)
{ scanf("%d",p);
sum=sum+*p;
if(min>*p)
min=*p;
if(max<*p)
max=*p;
}
avg=sum/n;
return avg;
}
main()
{ int b;
float avg;
printf("请输入数组长度:\n");
scanf("%d",&b);
avg=s(b);
printf("%f\n",avg);
printf("%d\n",max);
printf("%d",min);
}
为什么数组长度不同 有的时候是最大值正确,最小值错误 有时候却是最大值错误,最小值正确
#include <stdio.h>
int min=1000000, max=-1000000;
int s(int n)
{
int* p, a[1024], sum = 0;
float avg;
//max = a[0];
//min = a[0];
for (p = a; p < a + n; p++)
{
scanf("%d", p);
sum = sum + *p;
if (min > *p)
min = *p;
if (max < *p)
max = *p;
}
avg = sum / n;
return avg;
}
void main()
{
int b;
float avg;
printf("请输入数组长度:\n");
scanf("%d", &b);
avg = s(b);
printf("%f\n", avg);
printf("%d\n", max);
printf("%d", min);
}
#include <stdio.h>
int max, min;
float s(int n)
{
int *p, a[n], sum = 0, i;
float avg;
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
max = a[0];
min = a[0];
for (i = 0, p = a; i < n; i++, p++)
{
sum = sum + *p;
if (min > *p)
min = *p;
if (max < *p)
max = *p;
}
avg = sum * 1.0 / n;
return avg;
}
void main()
{
int b;
float avg;
printf("请输入数组长度:\n");
scanf("%d", &b);
avg = s(b);
printf("%f\n", avg);
printf("%d\n", max);
printf("%d", min);
}