C语言问题求解 谢谢!!!!!

2025-02-25 02:41:57
推荐回答(2个)
回答1:

#include
#define N 3
void main()
{
void max_min(int *p,int n);
int a[N],s=0,i,av;
for(i=0;i scanf("%d",&a[i]);
for(i=0;i s=s+a[i];
av=s/N;
printf("av=%d\n",av);
max_min(a,N);
}
void max_min(int *p,int n)
{
int max,min;
max=min=*p;
for(;n--;p++) //只有这里进行了更改, p if(*p>max)
max=*p;
else if(*p min=*p;

printf("max=%d min=%d\n",max,min);
}

这样就好了
补充:
改的原因我在注释里面说了,你原来设立的条件总是成立的,程序就陷入了死循环,结束条件应该是每次循环次数达到n次,所以设计条件为n--,即每次n自减一,直至n为0.
注意,作为条件判断的时候,0为假,非0为真,n自减一到0的时候,条件才为假,跳出循环.

我说得应该明白了吧,如果还有疑问,可以hi我,继续探讨.

回答2:

void main()
{
void max_min(int *p,int n);
函数声明不能放在main函数里,也不能放在其他函数里
max_min(a,N);实参a是数组首地址,这里调用不符合函数定义