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

题目:C语言 必须用指针方法编程 输入一个一维实型数组,输出其中最大值、最小值和平均值。
编程如下:
main()
{int a[10],i,n=0,*pa=a,sum=0,max,min;
for(i=0;i<10;i++)
{scanf("%d",pa);
if((*pa)=='\n') break; /*问题在这,这段不起作用,我想用回车作结束标记,程序错在这里是吗?为什么错了?要怎么改?*/
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=%d\n",n);
printf("max=%d\n",max);
printf("min=%d\n",min);
printf("sum=%d\n",sum/n);


这个程序必须输入10个数,与题目要求不符。
要怎么做,说的详细些,先谢了。
2楼 用什么来判断呢?我问题就是这个:用什么语句来实现用“回车键”做为结束标记,而不是输入完整的10个字符让它自动结束。
办不到吗,那除字符型以后都不能用"\n"用判断的话。呜~~,还是想问如何让“整型”数组用"\n"来作结束标记。

3楼 我的字符是英文的,只是复制到网页上后输入中文备注时不小心改动了一下。至于分号的话,那个好像加不加问题不大哈。

被采纳答案的补充:

你把for()改成这样试下吧:
for(i=0;i<10;i++)
{
scanf("%f",pa);
sum += *pa;
n++;
pa++;
if(getchar() == '\n') break;

} //这里不用加分号了

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);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-17
/*给你改好了, 具体的都在代码里加了注释, 只要输入的时候每次输入一个数字就按下回车,当输入了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);
} //这个分号是中文模式的, 要改成英文模式的本回答被提问者采纳
第2个回答  2010-03-17
你的数组不是字符型 ,所以不能用'\n'判断输入是否完成.