Следующая программа не производит вывод. Он входит в цикл for и принимает одно значение (через scanf
), но после этого блок кода останавливает выполнение. Ideone (онлайн-компилятор и инструмент отладки) говорит, что генерируется сигнал SIGXCPU.Ошибка SIGXCPU в программе C
#include <stdio.h>
#include <stdlib.h>
long fact(int);
int z(int);
int main()
{
int i, n;
scanf("%d",&n);
int a[10];long b[10];
int c[10];
for(i=0;i<n;i++)
{
scanf("%d", &a[i]);
b[i]=fact(a[i]);
c[i]=z(b[i]);
}
printf("\n");
for(i=0; i<n; i++)
{
printf("%d", c[i]);
}
return 0;
}
long fact(int m)
{
if (m==1) return 1;
else return (m*fact(m-1));
}
int z (int s)
{
int c=0, temp;
temp=s%10;
if(temp!=0) return c;
else
{
c++; z(temp);
}
}
Что означает сигнал SIGXCPU?
Ideone - это онлайн-компилятор и инструмент для отладки. В вашей программе используется Ideone, который также используется другими пользователями. Ваш код превысил бы предел на потребляемое процессорное время. –
Это сообщение, которое вы обычно не получаете в своей собственной системе, но Ideone установил предел, чтобы установить верхнюю границу того, сколько разрешений CPU для каждой программы разрешено. Найдите RLIMIT_CPU, чтобы узнать, как можно установить эти ограничения для себя. – grasshopper