鱼C论坛

 找回密码
 立即注册
查看: 255|回复: 2

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

[复制链接]
发表于 2025-2-7 10:30:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我看了半天,不知道我的代码哪里出现了问题 求大佬帮忙瞅瞅


  1. #include <stdio.h>

  2. int main ()
  3. {
  4.         int a ,i ,j ,count ,sum = 0 ,k = 3;
  5.         int c[100][5];//用于存放式子
  6.         char b;//用于判断是否打印式子
  7.         
  8.         printf("请输入一个整数:");
  9.         scanf("%d" ,&a);//用户输入表示范围的最大值a
  10.         
  11.         while(k <= a)
  12.         {
  13.                 count = k * k * k;
  14.                
  15.                 for (i = 1 ;i < count ;i += 2)
  16.                 {
  17.                         for (j = i ;j < count ;j += 2)
  18.                         {
  19.                                 sum += j;
  20.                                 if (sum == count)
  21.                                 {
  22.                                         if(j - i <= 4)
  23.                                         {
  24.                                                 c[k - 3][0] = k;
  25.                                                 c[k - 3][1] = count;
  26.                                                 c[k - 3][2] = i;
  27.                                                 c[k - 3][3] = i + 2;
  28.                                                 c[k - 3][4] = i + 4;
  29.                                         }
  30.                                        
  31.                                         else
  32.                                         {
  33.                                                 c[k - 3][0] = k;
  34.                                                 c[k - 3][1] = count;
  35.                                                 c[k - 3][2] = i;
  36.                                                 c[k - 3][3] = i + 2;
  37.                                                 c[k - 3][4] = j;
  38.                                         }
  39.                                 }
  40.                                 
  41.                                 if (sum > count)
  42.                                 {
  43.                                         sum = 0;
  44.                                         break;
  45.                                 }
  46.                         }
  47.                 }
  48.                
  49.                 k++;
  50.         }
  51.         
  52.         printf("经验证,3 ~ 100 之间所有的整数均符合尼科彻斯定理!\n");
  53.         printf("是否打印所有式子(y/n):");
  54.         
  55.         getchar ();
  56.         scanf("%c" ,&b);
  57.         if(b == 'y')
  58.         {
  59.                 for(k = 3 ;k <= a ;k++ )//打印式子
  60.                 {
  61.                         if(c[k - 3][4] - c[k - 3][3] == 2)
  62.                         {
  63.                                 printf("%d^3 == %d == %d + %d + %d\n" ,c[k - 3][0] ,c[k - 3][1] ,c[k - 3][2] ,c[k - 3][3] ,c[k - 3][4]);
  64.                         }
  65.                         if(c[k - 3][4] - c[k - 3][3] > 2)
  66.                         {
  67.                                 printf("%d^3 == %d == %d + %d +... + %d\n" ,c[k - 3][0] ,c[k - 3][1] ,c[k - 3][2] ,c[k - 3][3] ,c[k - 3][4]);
  68.                         }
  69.                 }
  70.                
  71.                 return 0;
  72.         }
  73.         
  74.         if(b == 'n')
  75.         {
  76.                 return 0;
  77.         }
  78. }
复制代码
最佳答案
2025-2-7 10:59:41
  1. #include <stdio.h>
  2. #include <stdlib.h>

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

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

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

  13.         for (i = 1; i < count; i += 2) {
  14.             sum = 0;
  15.             for (j = i; j < count; j += 2) {
  16.                 sum += j;
  17.                 if (sum == count) {
  18.                     // 存储结果
  19.                     results[number - 3][0] = number;
  20.                     results[number - 3][1] = count;
  21.                     results[number - 3][2] = i;
  22.                     results[number - 3][3] = i + 2;
  23.                     results[number - 3][4] = j;
  24.                     break;
  25.                 } else if (sum > count) {
  26.                     break;
  27.                 }
  28.             }
  29.         }

  30.         number++;
  31.     }

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

  35.     if (print == 'y') {
  36.         for (number = 3; number <= a; number++) {
  37.             printf("%d^3 == %d == %d + %d + ... + %d\n",
  38.                    results[number - 3][0],
  39.                    results[number - 3][1],
  40.                    results[number - 3][2],
  41.                    results[number - 3][3],
  42.                    results[number - 3][4]);
  43.         }
  44.     } else if (print != 'n') {
  45.         printf("无效输入,程序退出。\n");
  46.     }

  47.     return 0;
  48. }
复制代码
210629f2ihqqqqrhfj6q46.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-2-7 10:30:36 | 显示全部楼层
当然可以,我来帮你看看代码问题。首先,尼科彻斯定理公式为 n^3 = n 个连续奇数的和。我们可以编写一个程序来验证并打印相应的式子。

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

  1. #include <stdio.h>

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

  7.     for (i = 1; i <= a; i++) {
  8.         sum = 0;
  9.         start = i * i - i + 1; // 计算起始奇数
  10.         printf("%d^3 = ", i);
  11.         for (j = 0; j < i; j++) {
  12.             sum += start;
  13.             if (j > 0) {
  14.                 printf(" + ");
  15.             }
  16.             printf("%d", start);
  17.             start += 2;
  18.         }
  19.         printf(" = %d\n", sum);
  20.     }

  21.     return 0;
  22. }
复制代码


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


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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-7 10:59:41 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <stdlib.h>

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

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

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

  13.         for (i = 1; i < count; i += 2) {
  14.             sum = 0;
  15.             for (j = i; j < count; j += 2) {
  16.                 sum += j;
  17.                 if (sum == count) {
  18.                     // 存储结果
  19.                     results[number - 3][0] = number;
  20.                     results[number - 3][1] = count;
  21.                     results[number - 3][2] = i;
  22.                     results[number - 3][3] = i + 2;
  23.                     results[number - 3][4] = j;
  24.                     break;
  25.                 } else if (sum > count) {
  26.                     break;
  27.                 }
  28.             }
  29.         }

  30.         number++;
  31.     }

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

  35.     if (print == 'y') {
  36.         for (number = 3; number <= a; number++) {
  37.             printf("%d^3 == %d == %d + %d + ... + %d\n",
  38.                    results[number - 3][0],
  39.                    results[number - 3][1],
  40.                    results[number - 3][2],
  41.                    results[number - 3][3],
  42.                    results[number - 3][4]);
  43.         }
  44.     } else if (print != 'n') {
  45.         printf("无效输入,程序退出。\n");
  46.     }

  47.     return 0;
  48. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 00:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表