求助!C++问题:偶数相加出现Runtime Error

Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每 m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。

// 偶数求和.cpp: 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include
using namespace std;

int main()
{
int n, m, Average, i= 0;
int group,temp = 1;
int k = 1;
while (cin >> n >> m && n<=100)
{
if (n%m == 0)
group = n / m;
else
group = n / m + 1;
for (i = 1;i <= group;i++)
{
int flag = 0;
int sum = 0;
for (int j = 1;j <= m;j++)
{
if (k > n)
break;
else
{
temp = 2 * k;
sum += temp;
flag++;
k++;
}
}
Average = sum / flag;
cout << Average << " ";
}
}
}

结果出现Runtime Error,怎么解决?

单步调试吧,放几个断点看哪里有错误,程序比较小应该好找问题的。

从下往上注释掉代码,一一尝试。

程序能跑就加打印啊,不能跑就加断点啊

我用同样的代码在gcc编译器上面运行没有问题,只是处于循环中,因为最后没有break,所以一直在while里面,另外,group的计算方式有问题,因为m是二的倍数,group = n / (2 * m),不然算出来的组数有问题。

#include 后面的东西怎么不写
求连续偶数的和,你写的是
temp = 2 * k
变成以2为底的指数的和,早就超过int表示范围了

你的**k**在第二次输入之后没有**重置1**,此时如果你第二次输入的**n**小于等于第一次输入的**n**的话,
会导致第**二个for循环**不会执行,而此时**flag**为0,所以会报除零错误。正确的写法是把**k**放在**while大
循环**里**置1* * 。