鱼C论坛

 找回密码
 立即注册
查看: 3625|回复: 7

s1e21课后题最后一题,有人做了吗?好难理解不了,而且我照抄的代码打印出错!

[复制链接]
发表于 2017-8-4 10:53:38 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
检查不出来,,,怎么办啊,闹心
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-4 10:54:39 From FishC Mobile | 显示全部楼层
整不出来就不想向下学习!等会我上代码,大家帮我看看吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-4 11:18:02 | 显示全部楼层
代码上下看看。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-4 12:37:42 | 显示全部楼层
本帖最后由 lizhiyong_11 于 2017-8-4 15:27 编辑
ba21 发表于 2017-8-4 11:18
代码上下看看。

  1. #include <stdio.h>
  2. #include <stdbool.h>

  3. int main()
  4. {
  5.         int n, i, j, count, cubed, sum = 0;
  6.         bool result = true;
  7.         char answer;

  8.         printf("请输入一个整数:");
  9.         scanf("%d",&count);

  10.         int array[count][4];
  11.         for (n = 3; n <= count; n++)
  12.         {
  13.                 array[n][0] = 0;
  14.         }

  15.         for (n =3; n <= count; n++)
  16.         {
  17.                 cubed = n * n * n;
  18.                 for(i = 1; i < cubed; i += 2)
  19.                 {
  20.                         for (j = i; j < cubed; i +=2)
  21.                         {sum += j;
  22.                                 if (sum == cubed)
  23.                                 {
  24.                                         array[n][0] = cubed;
  25.                                         array[n][1] = i;
  26.                                         array[n][2] = i +2;
  27.                                         array[n][3] = j;

  28.                                         goto FINDIT;
  29.                                 }

  30.                                 if (sum > cubed)
  31.                                 {
  32.                                         sum = 0;
  33.                                         break;
  34.                                 }
  35.                         }
  36.                 }
  37. FINDIT:
  38.                 ;
  39.         }
  40.         for (n = 3; n <= count; n++)
  41.         {
  42.                 if (array[n][0] == 0)
  43. {
  44.                         result = false;
  45.                         break;
  46.                 }
  47.         }

  48.         if (result)
  49.         {
  50.                 printf("经验证,3~%d 之间的所有整数均符合尼克斯定理!\n\n",count);
  51.                 printf("是否打印所有等试(y/n):");
  52.                 getchar();
  53.                 scanf("%c",&answer);
  54.         }

  55. else
  56.         {
  57.                 printf("验证失败:整数%d无法找到对应的连续奇数!\n");
  58.         }

  59.         if (answer == 'y')
  60.         {
  61.                 for (n = 3; n <= count; n++)
  62.                 {
  63.                         if (array[n][3] - array[n][1] > 4)
  64.                         {
  65.                                 printf("%d^3 == %d == %d + %d +...+%d\n", n, array[n][0], array[n][1], array[n][2], array[n][3]);
  66.                         }
  67.                         else
  68.                         {
  69.                                 printf("%d^3 == %d == %d + %d +%d\n", n, array[n][0], array[n][1], array[n][2], array[n][3]);
  70.                         }
  71.                 }
  72.         }
  73.         return 0;
  74. }

复制代码

一点一点从我的虚拟机上copy下来的,可以通过编译,但是有问题,请看下一楼的输出结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-4 12:41:43 | 显示全部楼层
  1. xiaoyong@localhost s1e21]$ gcc task2.c && ./a.out
  2. 请输入一个整数:10
  3. 经验证,3~10 之间的所有整数均符合尼克斯定理!

  4. 是否打印所有等试(y/n):y
  5. 3^3 == 27 == 53 + 55 +1
  6. 4^3 == 64 == 73 + 75 +1
  7. 5^3 == 125 == 121 + 123 +1
  8. 6^3 == 216 == 181 + 183 +1
  9. 7^3 == 343 == 253 + 255 +1
  10. 8^3 == 512 == 337 + 339 +1
  11. 9^3 == 729 == 433 + 435 +1
  12. 10^3 == 1000 == 541 + 543 +1
  13. [xiaoyong@localhost s1e21]$
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-4 15:08:25 | 显示全部楼层
2017-08-04_150634.png
2017-08-04_150552.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-4 15:33:59 | 显示全部楼层
请你帮我看一下,如果我输入的count是3,接下来定义了一个3行4列的数组,那么在第一个循环的时候,n = 3,  那么数组arry[3][0]不是表示第4行第1列的数吗?岂不是越界了?
temp.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-1 15:11:48 | 显示全部楼层

关于 8的3次方,答案好像是错的
答案应该是:
8^3 == 512 == 17 + 19 +... + 47
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-31 20:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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