Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d", &n); float i = 1, sum = 0, mul; do { mul = i * i; i = i + 0.1; sum = sum + mul; } while (i <= n); printf("%.1f", sum); return 0; }
This code attempts to sum the squares of numbers from 1 to n, but it uses a step of 0.1 instead of 1. The loop variable `i` starts at 1 and increases by 0.1 each iteration, so it calculates squares of values like 1.0, 1.1, 1.2, etc., not integers. The final sum is printed with one decimal place.

- The loop condition `while (i <= n)` may cause an off-by-one or infinite loop because floating-point arithmetic with 0.1 is imprecise. For example, after many additions, `i` might never exactly equal `n`, or it could overshoot slightly.
- The variable `i` is declared as `float`, but the problem likely expects integer steps. Consider whether you need to use integer types for the loop counter and step.