关于用指针求最大值 最小值和平均值的问题

#include <stdio.h>
main()
{
int a[5],i,*p,min,max,ave=0;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];

for(p=a;p<a+10;p++)
{
if(max<*p)
{
max=*p;
}
if(min>*p)
{
min=*p;
}
ave+=*p;
}
ave/=5;
printf("max=%d,min=%d,ave%d\n",max,min,ave);

}

for(p=a;p<a+10;p++)
修改为
for(p=a;p<a+5;p++)
前面数组a只有五个元素
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-03
正确代码和运行结果如下:
C语言代码:
#include <stdio.h>
int main(void)
{
int a[5],*p,min,max;
double ave;
ave = 0.0;
for(p = a; p != a + sizeof(a)/sizeof(int); ++p)
{
scanf("%d", p);
}
/* 注意必须在数组初始化之后再给max和min赋值 */
p = a;
max = min = *p;
for(p = a; p != a + sizeof(a)/sizeof(int); ++p)
{
if(max < *p)
{
max = *p;
}
if(min > *p)
{
min = *p;
}
ave += *p;
}
ave /= sizeof(a)/sizeof(int);
printf("max=%d,min=%d,ave=%lf\n",max,min,ave);
return 0;
}
运行结果:
D:\test> test.exe
12 23 43 22 45 56645 4564
max=45,min=12,ave=29.000000
说明:上面输如数字的时候,也可以一个数字一行;多个数字一行像上面,写多于5个也没有关系,程序会自己搞定

C++的代码如下,运行结果跟上面一样:
#include <iostream>
using namespace std;
int main(void)
{
int a[5],*p,min,max;
double ave;
ave = 0.0;
for(p = a; p != a + sizeof(a)/sizeof(int); ++p)
{
cin >> *p;
}
/* 注意必须在数组初始化之后再给max和min赋值 */
p = a;
max = min = *p;
for(p = a; p != a + sizeof(a)/sizeof(int); ++p)
{
if(max < *p)
{
max = *p;
}
if(min > *p)
{
min = *p;
}
ave += *p;
}
ave /= sizeof(a)/sizeof(int);
cout << "max=" << max << ", min=" << min << ", ave=" << ave << endl;
return 0;
}

希望对你有所帮助,如果还有问题,欢迎交流:)本回答被网友采纳
相似回答
大家正在搜