hamletroy 发表于 2022-10-22 23:42:46

问题求解(C)

本帖最后由 hamletroy 于 2022-10-23 00:31 编辑

不知道问题出在哪里{:10_291:}

傻眼貓咪 发表于 2022-10-22 23:42:47

本帖最后由 傻眼貓咪 于 2022-10-23 08:01 编辑

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
    int num;
    if (scanf("%d", &num)) {
      num = num * num * num;
      for (int b, sum = 0, a = b = 1; b < num; b += 2) {
            sum += b;
            while (sum > num) {
                sum -= a;
                a += 2;
            }
            if (sum == num) {
                for (int i = a; i < b; i += 2) {
                  printf("%d + ", i);
                }
                printf("%d = %d\n", b, num);
            }
      }
    }
    return 0;
}5
21 + 23 + 25 + 27 + 29 = 125

7
43 + 45 + 47 + 49 + 51 + 53 + 55 = 343

jackz007 发表于 2022-10-22 23:57:31

本帖最后由 jackz007 于 2022-10-22 23:58 编辑

      你要贴代码文本,因为别人查找问题需要编译运行,得根据运行结果和表现才能确定问题所在。

hamletroy 发表于 2022-10-23 00:32:54

jackz007 发表于 2022-10-22 23:57
你要贴代码文本,因为别人查找问题需要编译运行,得根据运行结果和表现才能确定问题所在。

感觉是程序陷入死循环了。

jackz007 发表于 2022-10-23 00:37:03

本帖最后由 jackz007 于 2022-10-23 00:39 编辑

hamletroy 发表于 2022-10-23 00:32
感觉是程序陷入死循环了。

      你这个代码外层循环没有退出条件,又没有安排 break 退出,还真就是死循环。
页: [1]
查看完整版本: 问题求解(C)