天道不酬勤 发表于 2025-2-7 10:30:27

用户输入某个整数,验证该数是否符合尼科彻斯定理,并将对应的式子打印出来

我看了半天,不知道我的代码哪里出现了问题{:5_99:}{:5_99:}{:5_99:} 求大佬帮忙瞅瞅{:7_146:} {:7_146:} {:7_146:}


#include <stdio.h>

int main ()
{
      int a ,i ,j ,count ,sum = 0 ,k = 3;
      int c;//用于存放式子
      char b;//用于判断是否打印式子
      
      printf("请输入一个整数:");
      scanf("%d" ,&a);//用户输入表示范围的最大值a
      
      while(k <= a)
      {
                count = k * k * k;
               
                for (i = 1 ;i < count ;i += 2)
                {
                        for (j = i ;j < count ;j += 2)
                        {
                              sum += j;
                              if (sum == count)
                              {
                                        if(j - i <= 4)
                                        {
                                                c = k;
                                                c = count;
                                                c = i;
                                                c = i + 2;
                                                c = i + 4;
                                        }
                                       
                                        else
                                        {
                                                c = k;
                                                c = count;
                                                c = i;
                                                c = i + 2;
                                                c = j;
                                        }
                              }
                              
                              if (sum > count)
                              {
                                        sum = 0;
                                        break;
                              }
                        }
                }
               
                k++;
      }
      
      printf("经验证,3 ~ 100 之间所有的整数均符合尼科彻斯定理!\n");
      printf("是否打印所有式子(y/n):");
      
      getchar ();
      scanf("%c" ,&b);
      if(b == 'y')
      {
                for(k = 3 ;k <= a ;k++ )//打印式子
                {
                        if(c - c == 2)
                        {
                              printf("%d^3 == %d == %d + %d + %d\n" ,c ,c ,c ,c ,c);
                        }
                        if(c - c > 2)
                        {
                              printf("%d^3 == %d == %d + %d +... + %d\n" ,c ,c ,c ,c ,c);
                        }
                }
               
                return 0;
      }
      
      if(b == 'n')
      {
                return 0;
      }
}

FishC 发表于 2025-2-7 10:30:36

当然可以,我来帮你看看代码问题。首先,尼科彻斯定理公式为 n^3 = n 个连续奇数的和。我们可以编写一个程序来验证并打印相应的式子。

下面是一个完整的代码示例:

#include <stdio.h>

int main() {
    int a, i, j, count, sum, start;
   
    printf("请输入一个整数:");
    scanf("%d", &a);//用户输入表示范围的最大值a

    for (i = 1; i <= a; i++) {
      sum = 0;
      start = i * i - i + 1; // 计算起始奇数
      printf("%d^3 = ", i);
      for (j = 0; j < i; j++) {
            sum += start;
            if (j > 0) {
                printf(" + ");
            }
            printf("%d", start);
            start += 2;
      }
      printf(" = %d\n", sum);
    }

    return 0;
}

该代码逻辑如下:

[*]输入一个整数 `a`。
[*]使用双重循环,外层循环遍历从 1 到 `a` 的所有整数,内层循环生成连续奇数并求和。
[*]根据尼科彻斯定理,计算每个数字的立方和值,并输出相应的式子。


这段代码会验证并打印每个整数是否符合尼科彻斯定理,并显示对应的式子。希望对你有帮助!如果仍有问题,请随时告诉我。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

很cool的阳 发表于 2025-2-7 10:59:41

#include <stdio.h>
#include <stdlib.h>

int main() {
    int a, i, j, count, sum = 0;
    int number = 3; // 当前验证的数字
    int results; // 存储验证结果
    char print; // 用户是否打印结果

    printf("请输入一个整数:");
    scanf("%d", &a); // 用户输入范围的最大值

    while (number <= a) {
      count = number * number * number; // 计算立方
      sum = 0;

      for (i = 1; i < count; i += 2) {
            sum = 0;
            for (j = i; j < count; j += 2) {
                sum += j;
                if (sum == count) {
                  // 存储结果
                  results = number;
                  results = count;
                  results = i;
                  results = i + 2;
                  results = j;
                  break;
                } else if (sum > count) {
                  break;
                }
            }
      }

      number++;
    }

    printf("经验证,3 ~ %d 之间所有的整数均符合尼科彻斯定理!\n", a);
    printf("是否打印所有式子(y/n): ");
    scanf(" %c", &print); // 注意前面的空格,跳过空白字符

    if (print == 'y') {
      for (number = 3; number <= a; number++) {
            printf("%d^3 == %d == %d + %d + ... + %d\n",
                   results,
                   results,
                   results,
                   results,
                   results);
      }
    } else if (print != 'n') {
      printf("无效输入,程序退出。\n");
    }

    return 0;
}
页: [1]
查看完整版本: 用户输入某个整数,验证该数是否符合尼科彻斯定理,并将对应的式子打印出来