阶乘的尾随零,C中的运行时错误? #包括 int main() { 长ctr[100000],i; 浮动j; 长d[100000],T,h,o; 扫描频率(“%ld”,T); printf(“\n”); 对于(i=0;i

阶乘的尾随零,C中的运行时错误? #包括 int main() { 长ctr[100000],i; 浮动j; 长d[100000],T,h,o; 扫描频率(“%ld”,T); printf(“\n”); 对于(i=0;i,c,C,Hmm),这个循环看起来是无限的 #include<stdio.h> int main() { long ctr[100000],i; float j; long d[100000],T,h,o; scanf("%ld",T); printf("\n"); for(i=0; i<T; i++) { scanf("%ld",d[i]); printf("\n"); fo

Hmm),这个循环看起来是无限的

#include<stdio.h>

int main()
{
    long ctr[100000],i;
    float j;
    long d[100000],T,h,o;

    scanf("%ld",T);
    printf("\n");

    for(i=0; i<T; i++)
    {
        scanf("%ld",d[i]);
        printf("\n");

        for(h=d[i]; h<=0; h--)
        {
            j=h%10;
            if(j==5)
            {
                ctr[i]++;
            }
        }
    }
    for(o=0; o<=i; o++)
    {
        printf("%ld\n",o);
    }
    return 0;
}
这就是运行时错误的解决方案。:)


也许你应该使用高精度变量,我认为你需要比双精度数据类型更高的精度,因为你要处理大量的数字


请参阅此处以获取更多信息:

嗯……这个循环看起来像是无限循环

#include<stdio.h>

int main()
{
    long ctr[100000],i;
    float j;
    long d[100000],T,h,o;

    scanf("%ld",T);
    printf("\n");

    for(i=0; i<T; i++)
    {
        scanf("%ld",d[i]);
        printf("\n");

        for(h=d[i]; h<=0; h--)
        {
            j=h%10;
            if(j==5)
            {
                ctr[i]++;
            }
        }
    }
    for(o=0; o<=i; o++)
    {
        printf("%ld\n",o);
    }
    return 0;
}
这就是运行时错误的解决方案。:)


也许你应该使用高精度变量,我认为你需要比双精度数据类型更高的精度,因为你要处理大量的数字


更多信息请参见此处:

一些观察结果:

  • long[100000]
    需要400000字节的堆栈,假设
    long
    是普通的32位,如果
    long
    是64位,则需要800000字节。您有两个这样的数组,这可能会使程序达到操作系统堆栈大小限制
  • scanf()

  • 假设输入正数,循环
    用于(h=d[i];h几个观察值:

    • long[100000]
      需要400000字节的堆栈,假设
      long
      是普通的32位,如果
      long
      是64位,则需要800000字节。您有两个这样的数组,这可能会使程序达到操作系统堆栈大小限制
    • scanf()

    • 假设输入了正数,则循环
      为(h=d[i];h循环将变为无穷大。请确保计数不会变为负数,否则将出现运行时错误。

      循环将变为无穷大。请确保计数不会变为负数,否则将出现运行时错误。

      是否尝试在调试器下运行代码?您学到了什么?您是否注意编译器警告注意
      scanf(“%ld”,T);
      scanf(“%ld”,d[i])有什么问题吗
      ?你说你被零除了吗?这是一个大问题!不。实际上,这是一个在线练习问题。他们告诉我这是一个运行时错误。更简单的解决方案:格式还有很多需要改进的地方。你试过在调试器下运行代码吗?你学到了什么?你也注意到编译器警告了吗?注意到了吗
      scanf(“%ld”,T);
      scanf(“%ld”,d[i]);
      有问题吗?你说你被零除了吗?这是一个大问题!没有。事实上,这是一个在线实践问题。他们告诉我这是一个运行时错误。更简单的解决方案:格式有很多需要改进的地方。有可能它会运行它的主体,:)如果你给d[i]输入一个负值,那么它可能会运行它的主体:)如果你给d[i]输入一个负值,那么假设这个问题是我发布的,那么输出是否正确?:)我刚刚回答了这个问题:“这个程序出现了运行时错误,有人能帮忙吗?”,这就是为什么,我只是在运行时错误上帮了你。假设问题是我发布的问题,那么输出是否正确?:)我刚刚回答了这个问题:“这个程序出现了运行时错误,有人能帮忙吗?”,这就是为什么,我只是在运行时错误上帮了你。
      scanf("%ld", &sampleVariable);