C语言 必须用指针方法编程 输入一个一维实型数组,输出其中最大值、最小值和平均值。
题目:C语言必须用指针方法编程输入一个一维实型数组,输出其中最大值、最小值和平均值。编程如下:main(){inta[10],i,n=0,*pa=a,sum=0,max,...
题目: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;
} //这里不用加分号了 展开
编程如下:
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;
} //这里不用加分号了 展开
3个回答
展开全部
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);
}
展开全部
/*给你改好了, 具体的都在代码里加了注释, 只要输入的时候每次输入一个数字就按下回车,当输入了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);
} //这个分号是中文模式的, 要改成英文模式的
#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);
} //这个分号是中文模式的, 要改成英文模式的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-03-17
展开全部
你的数组不是字符型 ,所以不能用'\n'判断输入是否完成.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询