阶乘的尾随零,C中的运行时错误? #包括 int main() { 长ctr[100000],i; 浮动j; 长d[100000],T,h,o; 扫描频率(“%ld”,T); printf(“\n”); 对于(i=0;i
Hmm),这个循环看起来是无限的阶乘的尾随零,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
#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;
}
这就是运行时错误的解决方案。:)
也许你应该使用高精度变量,我认为你需要比双精度数据类型更高的精度,因为你要处理大量的数字
更多信息请参见此处:一些观察结果:
需要400000字节的堆栈,假设long[100000]
是普通的32位,如果long
是64位,则需要800000字节。您有两个这样的数组,这可能会使程序达到操作系统堆栈大小限制long
scanf()
- 假设输入正数,循环
用于(h=d[i];h几个观察值:
需要400000字节的堆栈,假设long[100000]
是普通的32位,如果long
是64位,则需要800000字节。您有两个这样的数组,这可能会使程序达到操作系统堆栈大小限制long
scanf()
- 假设输入了正数,则循环
为(h=d[i];h循环将变为无穷大。请确保计数不会变为负数,否则将出现运行时错误。循环将变为无穷大。请确保计数不会变为负数,否则将出现运行时错误。是否尝试在调试器下运行代码?您学到了什么?您是否注意编译器警告注意
或scanf(“%ld”,T);
?你说你被零除了吗?这是一个大问题!不。实际上,这是一个在线练习问题。他们告诉我这是一个运行时错误。更简单的解决方案:格式还有很多需要改进的地方。你试过在调试器下运行代码吗?你学到了什么?你也注意到编译器警告了吗?注意到了吗scanf(“%ld”,d[i])有什么问题吗
或scanf(“%ld”,T);
有问题吗?你说你被零除了吗?这是一个大问题!没有。事实上,这是一个在线实践问题。他们告诉我这是一个运行时错误。更简单的解决方案:格式有很多需要改进的地方。有可能它会运行它的主体,:)如果你给d[i]输入一个负值,那么它可能会运行它的主体:)如果你给d[i]输入一个负值,那么假设这个问题是我发布的,那么输出是否正确?:)我刚刚回答了这个问题:“这个程序出现了运行时错误,有人能帮忙吗?”,这就是为什么,我只是在运行时错误上帮了你。假设问题是我发布的问题,那么输出是否正确?:)我刚刚回答了这个问题:“这个程序出现了运行时错误,有人能帮忙吗?”,这就是为什么,我只是在运行时错误上帮了你。scanf(“%ld”,d[i]);
scanf("%ld", &sampleVariable);