#include<stdio.h> int main(){ int m,n; int avg,sum=0; while(scanf("%d%d",&n,&m)!=EOF) { int arr[n]; int i=0,ii=0; for(int i=0;i<n;i++) { arr[0]=2; arr[i+1]=arr[i]+2; } for(int i=ii;i<n-2;i++){ for(int j=ii;j<ii+m;j++) { sum+=arr[j]; } avg=sum/m; printf("%d ",avg); ii+=m; sum=0; if(n%m!=0) { for(int i=ii;i<n;i++) { sum+=arr[i]; } avg=sum/(n-ii); printf("%d\n",avg); } } } }
时间: 2024-02-14 08:28:26 浏览: 83
您的代码有一些问题。首先,在循环中创建数组的语法是不正确的。在C语言中,不允许使用变量来定义数组的大小。您可以使用动态内存分配来解决这个问题。其次,在循环中,您错误地将arr[0]的值设置为2,并在后面的迭代中重复设置相同的值。应该是arr[i] = arr[i-1] + 2。最后,在处理剩余元素时,计算平均值的代码逻辑有误。
以下是修复后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int m, n;
int avg, sum = 0;
while (scanf("%d%d", &n, &m) != EOF) {
int *arr = (int*)malloc(sizeof(int) * n);
arr[0] = 2;
for (int i = 1; i < n; i++) {
arr[i] = arr[i - 1] + 2;
}
int ii = 0;
for (int i = ii; i < n - m + 1; i += m) {
for (int j = i; j < i + m; j++) {
sum += arr[j];
}
avg = sum / m;
printf("%d ", avg);
sum = 0;
}
if (n % m != 0) {
for (int i = ii + (n - ii) / m * m; i < n; i++) {
sum += arr[i];
}
avg = sum / (n - ii - (n - ii) / m * m);
printf("%d\n", avg);
}
free(arr);
}
}
```
这个修复后的代码可以接受输入的两个整数n和m,并根据规定的算法计算出平均值并打印出来。
阅读全文