|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 z578067809 于 2017-11-6 18:58 编辑
以下是关于C语言 S1E21:指针课后习题02答案的问题
原题目的答案中,8^3这行的答案好像有些问题,发个贴子,希望能讨论一下。
原答案如下:
很明显的,可以看到 8^3这行的右边是不会等于左边的。
我个人觉得答案应该是下面这样:
下面是我的code,也不知道是否完全正确,希望大家能够讨论一下,如果有什么错误,还希望各位鱼友不吝指出,谢谢。
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int a, b, sum = 0, i = 1, temp;
- //a为底数,b为a的3次幂,temp为连续奇数串的第1个奇数 ,i遍历奇数串
-
- int range;// range为数据范围的最大值
- char answer;
-
- printf("请输入一个整数:");
- scanf("%d", &range); // range为数据范围的最大值
-
- int array[range][4] ;
-
- for ( a = 3; a <= range; a++ )
- {
- b = pow(a,3);
- temp = 1;
-
- while ( i < b ) //通过i来遍历相加奇数串,不符合则奇数串后移一位重新开始
- {
- sum = sum + i;
-
- if ( sum > b ) //通过temp存储奇数串后移之后的第1个奇数 ,以便后面使用
- {
- temp += 2;
- i = temp;
- sum = 0;
- continue;
- }
-
- else if ( sum == b )
- {
- array[a][0] = b;
- array[a][1] = temp;
- array[a][2] = temp + 2;
- array[a][3] = i;
- break;
- }
-
- i += 2;
- }
-
- if ( i > b)
- {
- printf("验证失败:整数 %d 无法找到对应的连续奇数\n",a);
- break;
- }
- }
- // a(range以内的数)全部验证结束了
- // 若没有全部验证结束(即存在不符合定理的数),则不会有a > range
- if ( a > range )
- {
- printf ("经验证, 3 ~ %d 之间所有的整数均符合尼科彻斯定理!\n\n", range);
- printf("是否打印所有式子(y/n):");
- getchar();
- scanf("%c", &answer);
-
- if ( answer == 'y' )
- {
- for ( a = 3; a <= range; a++ )
- {
- if ( array[a][3] - array[a][1] > 4 )
- {
- printf("%d^3 == %d == %d + %d +... + %d\n", a, array[a][0], array[a][1], array[a][2], array[a][3]);
- }
-
- else
- {
- printf("%d^3 == %d == %d + %d + %d\n", a, array[a][0], array[a][1], array[a][2], array[a][3]);
- }
- }
- }
- }
-
- return 0;
- }
-
复制代码
PS:最后快要做到C语言课后习题的动态内存了,后面怎么没题目了,有没有哪套可以配套的题目可以推荐的,谢谢 |
|