In C, ^
является побитовым оператором XOR, а не степенной функцией.
Во втором l oop, когда процессор пытается вычислить выражение
sk2[i-1]+=1/(i^2);
это фактически попытка делить на ноль!
(2 ^ 2) == (00000010 ^ 00000010) == 0
Что вы действительно хотите сделать, это использовать pow
;
int main(int argc, char** argv)
{
double sk1[100]={0};
double sk2[100]={0};
double sk3[100]={0};
double sk4[100]={0};
for(int i=1;i<101;++i)
{
sk1[i-1]+=(1/i)-log(i);
sk2[i-1]+=1/pow(i, 2);
sk3[i-1]+=1/pow(i, 3);
sk4[i-1]+=1/pow(i, 4);
printf("%e %e %e %e\n",sk1[i-1],sk2[i-1],sk3[i-1],sk4[i-1]);
}
return 0;
}