
最后一个测试点8答案错误,错误主要出现在a2的判断上,因为个人在输出a2时使用a2==0来判断输出。应该设置个标志判断a2是否有效。
#include "stdio.h"
#include <iostream>
using namespace std;
int main() {
int arr[1005] = { 0 };
int len = 0;
int a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, tot_a4 = 0;
bool flag = false; //false加 true减
bool flag_a2 = false; //判断a2是否存在计算
cin >> len;
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
for (int i = 0; i < len; i++) {
if (arr[i] % 5 == 0) {
if (arr[i] % 2 == 0) {
a1 += arr[i];
//cout << a1 << " " << arr[i] << endl;
}
}
if (arr[i] % 5 == 1) { //该点注意,这里可能结果和a2为0
flag_a2 = true; //在进入该函数内立即更新a2的标志,证明a2是有效的
if (flag == false) a2 += arr[i];
else a2 -= arr[i];
flag = !flag;
}
if (arr[i] % 5 == 2) {
a3++;
}
if (arr[i] % 5 == 3) {
a4 += arr[

博客指出PATB-1012题目中,最后一个测试点8的答案存在错误,关键问题在于对变量a2的判断。作者提到,原本通过a2==0来决定输出,但正确做法应设置有效标志来判断a2的状况。

489

被折叠的 条评论
为什么被折叠?



