用Matlab循环的取平均值可以先用循环求和,再除以数量。
x=rand(1,10)%调试用的向量
s=0%s为向量的和
len=length(x)%len为向量长度
for i=1:len
s=s+x(i)%循环求和
end
xmean=s/len %向量的和除以向量的长度就得到了平均值。
#include<stdio.h>main()
{
int a,i,sum=0
printf("input 10 number:")
for(i=0i<10i++)
{
scanf("%d",&a)
sum+=a
}
printf("%d",sum/10)
}
实现思路很简单:
将十个数相加后,再除以10即可.
1、设置一个循环队列,先进行初始化。2、分两种情况往进送数:a,队不满时,边往进送数,边送数边累加计算,跳出后计算平均值,代码如下:
while(!(Q->front==(Q->rear+1)%Q_size))//不满的情况下,进数
{
Q->rear=(Q->rear+1)%Q_size
Q->data[Q->rear]=rand()%1000
sum+=Q->data[Q->rear]
cout<<Q->data[Q->rear]<<endl
}
ave=sum/(Q_size-1)
cout<<"The Sum is"<<sum<<endl
cout<<"The Ave is"<<ave<<endl
3、满的情况下(Q->front==(Q->rear+1)%Q_size),进行如下 *** 作:
Q->front=(Q->front+1)%Q_size
x=Q->data[Q->front]//首元素出列
Q->rear=(Q->rear+1)%Q_size
Q->data[Q->rear]=rand()%1000//进新元素
4、分3种情况输出当前队列中的数据并计算平均值,因为每进一个数,由于固定队列长度的限制,当前队列的值都随之发生改变,每变一次输出一次,可以同时检验程序的正确性。
if(Q->front==Q_size-1){
for(i=0i<=Q->reari++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
if(!Q->front){
for(i=(Q->front+1)%Q_sizei<=(Q_size-1)i++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
else if(!(Q->front==Q_size-1)&&!(!Q->front)){
for(i=(Q->front+1)%Q_sizei<=(Q_size-1)i++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
for(i=0i<=Q->reari++){
cout<<Q->data[i]<<endl
sum+=Q->data[i]
}
ave=sum/(Q_size-1)
cout<<"Sum="<<sum<<endl
cout<<"Ave="<<ave<<endl
}
5、其他地方自己补充一下,该程序主要的缺点就是没有结束条件,会无限循环,但这满足不定时采样,和边采样边输出平均值的要求。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)