Jimmy Chen

A Programmer

C Primer Plus 第六版 第九章课后编程练习答案

编程环境Visual Studio 2017

此文为博主原创文章,转载请注明出处

  1. Ninw说道:

    第八题
    你看下是不是有问题?
    我看不懂,我编译器结果输出不正确。

    递归这玩意该怎么理解啊?

    1. jimmychen说道:

      第八题我这边看这没有问题啊;递归理解可以简单理解为在一个函数里面自己调用自己,然后在合适的时候通过return来借宿递归

  2. Mr_cola说道:

    :exclaim:博主大大= =,能不能和我解释一下11题的代码最后int main(int argc, char **argv)这个函数的意义。感觉摸不到头脑,删掉这段结果也无误。如果能抽空解惑的话,万分感谢

    1. jimmychen说道:

      呃兄弟,这是c程序的main函数啊

      1. Mr_cola说道:

        = =之前没弄懂 char**是什么hh。现在已经明白了hh

  3. CQ说道:

    博主 请问一下为什么第一题要用getchar()
    新手求教 万分感谢!!!

  4. FDCQ说道:

    博主 请问第一题为什么要用getchar()??
    新手求教 万分感谢

    1. jimmychen说道:

      用来读取缓冲里面的回车键

  5. 友人A说道:

    第八题复制你的代码编译有警告,warning: control reaches end of non-void function。 位置是子函数的最后一行,是编译器的问题吗?我用的codeblock

    1. jimmychen说道:

      这是因为编译器检查到pow_rewrite子函数里面并不是每个执行路径里面都有返回值,所以才报的warning,你可以将if(index > 0)这个判断语句去掉,然后将return pow(base, index)作为默认的return语句

  6. sunrise说道:

    第二题 第三题 我怎么感觉是同一个意思,楼主能解释下区别么 这两题

  7. 新手学员说道:

    楼主,你这个函数有问题,运行起来不能完全显示出来,如果输入n等于6,显示前6个Fibonacci。
    结果只能显示:1 1 2 3 5,因为条件fib1 + fib2 等于8 ,判别式fib1 + fib2 < n 此时n等于6已经不成立。
    // practice 11
    void Fibonacci(unsigned int n)
    {
    int fib1 = 1;
    int fib2 = 1;

    printf("%d, %d", fib1, fib2);

    for (size_t i = 0; (i = (fib1 + fib2)) < n;)
    {
    printf(", %d", i);
    fib1 = fib2;
    fib2 = i;
    }

    putchar('\n');
    return;
    }
    应改为:
    void Fibonacci(unsigned int n)
    {
    int fib1 = 1;
    int fib2 = 1;
    int sum =0;
    printf("%d %d", fib1, fib2);
    for(int i = 2; i < n; i++)
    {
    sum = fib1 + fib2;
    printf(" %d", sum);
    fib1 = fib2;
    fib2 = sum;
    }
    return ;
    }
    这样的话就能完全达到题目要求。

  8. junxingzhou说道:

    博主 你第九题用递归处理幂函数的递归部分,在Xcode中提示这个bug"Control may reach end of non-void function" 请问如何解决呢

  9. c0nuT说道:

    博主,第七题中,如果是大写的话,题目要求返回的是跟大写一样的值,是不是应该多加一个大小写的判断? :confused:

    1. adsdf说道:

      直接return tolower(ch)-'a'+1;就可以了。

  10. GR10说道:

    答主递归写错了

  11. higanbanai说道:

    请问第11题主函数为什么要写while语句呢?

回复 jimmychen 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注