问题遇到的现象和发生背景 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。对于每组输入数据,输出一个平均值序列,每组输出占一行。
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n,m,sum=0,i;
float t;
while(scanf("%d %d",&n,&m)==2&&n<=100){
int c=0;
int *a=(int *)malloc(sizeof(int)*m);
memset(a,0,sizeof(int)*m);
a[0]=2;
sum=sum+a[0];
for(i=1;i<m;i++){
c++;
a[i]=a[i-1]+2;
sum=sum+a[i];
if(i==m-1){
a[0]=a[i]+2;
i=1;
t=(float)sum/m;
printf("%.2f ",t);
sum=a[0];
}
if(c==n-1)break;
}
if(i!=0){
t=(float)sum/i;
printf("%.2f",t);
}
printf("\n");
}
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法 直接给a[0],i从1开始遍历,a[i]=a[i-1]+2,计算m-1次后进入if,把当前项+2重新赋给a[0],计算平均值
我想要达到的结果 求指导这串代码哪里有问题,感谢!