z578067809 发表于 2017-11-6 18:47:57

关于C语言 S1E21:指针课后习题02答案似乎有错误

本帖最后由 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 ;
       
        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 = b;
                                array = temp;
                                array = temp + 2;
                                array = 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 - array > 4 )
                                {
                                        printf("%d^3 == %d == %d + %d +... + %d\n", a, array, array, array, array);
                                }
                       
                                else
                                {
                                        printf("%d^3 == %d == %d + %d + %d\n", a, array, array, array, array);
                                }       
                        }       
                }
        }
       
        return 0;
}


       


PS:最后快要做到C语言课后习题的动态内存了,后面怎么没题目了,有没有哪套可以配套的题目可以推荐的,谢谢{:10_250:}
页: [1]
查看完整版本: 关于C语言 S1E21:指针课后习题02答案似乎有错误