Если вы хотите, чтобы число было двойным (число с десятичными числами), вам нужно определить его как двойное, а не целое число. У меня есть этот код, который должен решить вашу проблему. Также обязательно скомпилируйте gcc FILEPATH -lm -o OUTPUTPATH
, если вы используете UNIX.
#include <stdio.h>
#include <math.h>
int main()
{
double x, y, power, num = 1; //doubles allow for decimal places so declare it as double
int position = 1; //Position seems to only be an integer, so declare it as an int.
while (position <= 100)
{
num = 1/num;
num++;
x = num;
power = pow(x, x);
printf("%f", power);
position += 1;
num = position;
}
}
Другой вариант - цикл for:
#include <stdio.h>
#include <math.h>
int main()
{
double x, y, power, num = 1;
for (int i = 1; i <= 100; i++) {
num = 1/num;
num = num + 1;
x = num;
power = pow(x, x);
printf("%f", power);
position += 1;
num = i;
}
}
Если вы пытаетесь приблизиться к числу Эйлера, я не понимаюне понимаю, почему бы просто не попробовать что-то вроде:
static const double E = 2.718281828459045;
Я просто исправил синтаксические ошибки в вашей программе, но я не думаю, что это действительно даст вам E. См. эту страницу о расчете E в C.