在Dev-c++上运行没问题,输出结果也对,但提交到oj平台上一直显示运行错误,求解答qaq
#include<stdio.h>
int main()
{
int n,i,x,h;
int s=1;
int k=0;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]!=a[i-1])
{
k=k+1;
}
}
x=k;
while(k>0)
{
s=sk;
k--;
}
h=2s/x/(x-1);
printf("%d",s/h);
return 0;
}

提交到oj平台显示运行错误
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 沉远 2022-10-22 20:10关注
#include <stdio.h> #include <malloc.h> #include <stdlib.h> int main() { int n, i, x, h; int s = 1; int k = 0; int *a;//动态数组名 scanf("%d", &n); //动态分配内存 a = (int*)malloc(n * sizeof(int)); if (!a)exit(1); for (i = 0; i < n; i++) { scanf("%d", &a[i]); } //例如n=1时,x=k=1,h = 2 * s / x / (x - 1);中分母(x-1)为0,运算错误 if (n < 2) { printf("%d", 0); return 0; } for (i = 0; i < n; i++) { if (a[i] != a[i - 1]) { k = k + 1; } } x = k; while (k > 0) { s = s * k; k--; } h = 2 * s / x / (x - 1); printf("%d", s / h); return 0; }
OJ上显示「运行错误」一般都是数组越界,分母为0或内存分配的问题。感觉这个 n 是不是要考虑一下等于1或0的情况。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报