m0_74093137 2022-10-22 16:52 采纳率: 100%
浏览 50
已结题

提交到oj平台显示运行错误

在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=2
s/x/(x-1);
printf("%d",s/h);
return 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的情况。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 请详细说明问题背景 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示