为什么把四个seek函数放在(p+2)之前都能显示,放在之后就不可以了.
#include <stdio.h>
int main(void)
{
double aver(int p, int n);
void seek(int* p, int n);
void good(int* p, int n);
int a[6] = { 56,78,45,50,89,1 };
int b[6] = { 89,86,90,98,95 ,2};
int c[6] = { 79,88,99,78,67 ,3};
int d[6] = { 95,78,90,99,89 ,4};
int* p;
p = a;
*(p + 1) = b[0];
*(p + 2) = c[0];
seek(a, 5); seek(b, 5); seek(c, 5); seek(d, 5);
(p + 3) = d[0];
seek(a, 5); seek(b, 5); seek(c, 5); seek(d, 5);
printf("%lf \n",aver(p, 4));
good(a, 5); good(b, 5); good(c, 5); good(d, 5);
return 0;
}
double aver(int p, int n)
{
int i,sum;
sum = 0;
double a;
for (i = 0; i < n; i++)
sum = sum + p[i];
a = (double)sum / n;
return a;
}
void seek(int* p, int n)
{
int i;
int a = 0;
for (i = 0; i < n; i++)
if (p[i] < 60)
a = a + 1;
if (a > 1)
{
for (i = 0; i < n; i++)
printf("%d \n",p[i]);
aver(p, n);
printf("%lf \n",aver(p,n));
printf("%d \n",p[5]);
}
return;
}
void good(int* p, int n)
{
int i, j = 0;
for (i = 0; i < n; i++)
if (p[i] > 85)
j++;
if (aver(p, n) > 90)
printf("%d ", p[5]);
else if (j == 5)
printf("%d ", p[5]);
else printf("NULL ");
return;
}