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

#include <stdio.h> int main() { int a,b; scanf("%d%d", &a,&b); if (a>b) { for (int i = a; i <= b; i++) { printf("%d ",i*i*i); } } if (a<b) { for (int i = b; i <= a; i++) { printf("%d ",i*i*i); } } return 0; }
这段代码的目的是读取两个整数a和b,然后输出它们之间所有整数的立方值。但代码的逻辑有误。

- 当a大于b时,循环从a开始到b结束,但a大于b时循环条件i <= b永远不会成立,所以不会输出任何内容。
- 当a小于b时,循环从b开始到a结束,同样b大于a时循环条件i <= a也不会成立。

问题在于循环的起始和结束条件写反了。当a > b时,应该从b循环到a;当a < b时,应该从a循环到b。

- 检查循环的起始值和结束值是否与判断条件匹配。
- 思考如何用一个循环处理两种情况,而不是写两个独立的循环。