我知道这已经被问到了,但我还没找到并回答。 这是我的代码:
#include <cstdio>
#include <vector>
using namespace std;
int a[510];
int main()
{
int n, p;
bool rez;
while(1)
{
p = 0;
rez = 1;
scanf("%d", &n);
if(n == -1) break;
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
// printf("a");
for(int i = n-1; i >= 0; i--)
{
if((a[i]+p)%i)
{
rez = 0;
break;
}
p++;
}
if(rez) printf("S\n");
else printf("N\n");
}
return 0;
}
除测试用例外,所有测试用例都能正常工作: 4 1 1 3 0 但 4 1 0 3 1 作品。 同样在有问题的测试用例中我插入了printf(“a”); 但程序不会打印它,表明问题发生在该行之前。但是,如果我删除其余代码,一切正常。
答案 0 :(得分:0)
浮点异常不仅报告浮点错误,还报告整数除以0,包括取模数相对于0(如第一条评论中所述)。您的i
循环会迭代到零。一旦发生这种情况 - 即当break
语句未触发先前的i
值时 - 您将看到浮点异常。