Онлайн компилятор C

#include <stdio.h> int main() { int i, j; scanf("%d%d", &i, &j); if (i > j) { int t; t = i; i = j; j = i; } while (i <= j) { printf("%d", i * i); i++; } return 0; }
这段代码的目的是从用户输入两个整数,然后输出这两个数之间(包括两端)所有整数的平方。但代码中存在逻辑错误。

- 在 `if (i > j)` 的交换部分,你写的是 `j = i;`,但此时 `i` 已经被赋值为原来的 `j`,所以实际上两个变量都变成了原来较小的数,丢失了较大的数。交换两个变量的值需要借助临时变量,但你的赋值顺序有误。
- 循环中 `printf("%d", i * i);` 没有添加空格或换行,所有平方数会连在一起输出,不易阅读。可以考虑在格式字符串中加入空格或换行符。