C语言 必须用指针方法编程 输入一个一维实型数组,输出其中最大值、最小值和平均值。

2024-11-19 08:27:20
推荐回答(3个)
回答(1):

1 创建数组;

2 输入数组各个元素值;

3 遍历,求最大,最小,和平均值;

4 输出结果。

为提高效率,其中2,3两步可在同一个循环中完成。

代码如下:

int main()
{
    float a[10];
    int i;
    float *p, *pmax,*pmin, ave = 0;
    p = pmax= pmin = a;
    scanf("%f",p);
    for(i; i < 10; i++)
    {
 好蔽  团袜顷     scanf("%f", ++p);
        if(*pmax < *p) pmax = p;
        if(*pmin>*p)pmin=p;
      塌陆  ave+=*p;
    }
    ave/=10;
    printf("最大值=%f, 最小值=%f,平均值=%f\n",*pmax,*pmin,ave);
}

回答(2):

/*给你改好了, 具体的都在代码里加了注释, 只要输入的时候每次输入一个数字就按下回车,当输入了10个数字后自然会显示出结果*/

#include <谨腊stdio.h>

main()
{float a[10],i,n=0,*pa=a,sum=0.0,max,min;
for(i=0;i<10;i++)
{
scanf("%f",pa);
//祥岁滑if((*pa)=='\n') break; /*这句话不用, 只要你每次输入一个数字按下回车,等输到10个时自然会停止*/
sum += *pa;
n++;
pa++;

} //这雀吵里不用加分号了
max=*pa;
min=*--pa;
pa=&a[0];
for(i=0;i<10;i++)
{if(max<*pa) max=*pa;
if(min>*pa) min=*pa;
pa++;} //这里不用加分号了

printf("n=%f\n",n);
printf("max=%f\n",max);
printf("min=%f\n",min);
printf("sum=%f\n",sum/n);
} //这个分号是中文模式的, 要改成英文模式的

回答(3):

你的数组不是字符型 ,所以不能用'\n'判断输入是否完成.