Было несколько проблем с вашим кодом.
sum= (1/k);
вычисляет целое деление 1 на k, и оно всегда дает 0. Преобразуйте его в удвоенное, чтобы получить правильное значение
sum=sum++;
Не уверен, что ты хотел сделать.sum++
означает sum=sum+1
уже.
И, вероятно, вы хотели сделать следующее:
sum = sum + (1.0/k)
1.0 гарантирует, что результат деления будет удвоен.
Инициализация отсутствует для суммы.
Кроме того, вы посчитали одну дополнительную итерацию.Лучше начинать с k = 0 и увеличивать в начале цикла.
#include <stdio.h>
#include <math.h>
int main()
{
int k=0;
double n, sum=0.0;
printf("Enter a value ");
scanf("%lf", &n); //n=2
while(sum>=0 && sum<=n) //when n=2, 1=<1<2
{
k++;
sum+=(1.0/k);
//when sum= 0 -> sum = 1 , k=1
//when sum= 1 -> sum = 1+ 1/2 = 1.5, k=2
//when sum= 1.5 -> sum = 1.5 + 1/3 = 1.83, k=3
//when sum= 1.83 -> sum = 1.83 +1/4 = 2.8, k=4
//sum is now 2.8
//2.8>2 , k=4 so loop terminates
}
printf("%d\n", k); //4 but it doesn't print anything???
return 0;
}