Jimmy Chen

A Programmer

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

编写的时候将章节弄错了,代码是第三章的课后习题的答案
编程环境为Visual Studio 2017

本文为博主原创文章,转载请标注出处

  1. 初学说道:

    初学者表示看不懂 没有简单的写法吗

    1. jimmychen说道:

      这个,博主表示这一章还是挺简单的吧,哪里看不懂了?

  2. chen说道:

    1.为什么double类型函数,在打印的时候使用的是%lf转换输出而不是%f呢?书上写的是%f转换说明打印十进制记数法的float和double类型浮点数
    2.printf("品脱:%f 盎司:%f 汤勺%f 茶勺%f", cup / 2, 8 * cup, 16 * cup, 48 * cup);
    比如说最后一道题。我在printf()里直接计算输出,跟您那种方式具体有什么区别吗?哪种方式更好?

    1. jimmychen说道:

      1. 这个问题我之前也没有注意到,特意再看了下,为了确保移植性,应该按照书上说的,使用%f来打印float和double类型的浮点数,%lf是用来表示long double的
      2. 就这题的语境见仁见智了,按照你的写简洁些,但是博主个人觉得这样写在可阅读性上面可能差了点。

    2. wan说道:

      并非不可取,但是你得告诉机器怎么做,而非将自己做好的直接交给机器,这就好比教课程,你得教会思考方式

  3. XP说道:

    请问开头为什么要把所有变量初始化为零呢?有什么特殊含义吗?刚开始学,有点不太懂,求指教。

    1. jimmychen说道:

      如果不初始化的话,有些变量的值就是变量所在内存地址上的值,这个值不一定为零,容易导致后面计算的时候出现奇怪的问题

  4. arcu说道:

    楼主第5个为什么中间要加gerchar呢,才知道变量定义不是必须在函数开始就定义完

    1. jimmychen说道:

      读取回车键用的

  5. 清风说道:

    老师,最后的mian()函数里 你在调用的p2_8(); 后 加上的()getchar();是干什么用的?

    1. jimmychen说道:

      :lol: :lol: 老师不敢当哈,因为编译环境用的是Visual Studio,所以不加getchar()的话,执行程序会一闪而过,看不到输出的结果的

      1. 清风说道:

        我的是visual sthdio 2017 不会一闪而过哎 :biggrin:

        你的代码让我改正不少编程风格,谢谢啦 :smile:

  6. 小甜甜说道:

    博主你好,我是一名C语言初学者,有个地方我很搞不懂,为什么scanf函数那里是scanf_s,没有见过这个函数啊,编译器也不识别,这是怎么回事呢?

    1. jimmychen说道:

      因为博主用的是visual studio 2017,但是不会设置,直接用scanf会函数不安全而编译报错,所以才直接用scanf_s的,要是你的编译器可以过就直接用scanf就行

  7. p a p e r说道:

    你好,您的practice 6错了,最后的printf函数里的最后一个变量打错了,应该是num_of_water_molecule,而不是NUM_OFWATER_MOLECULE_PER_QUART

    1. jimmychen说道:

      已修改,谢谢提醒 :mrgreen: :mrgreen:

  8. hwj说道:

    第五题开头为什么要这样写?#define SECONDS_PER_YEAR (3.156e7)
    void p2_5(void)
    不应该写#include什么什么的吗?
    以前用Windows7现在突然用10可能还没适应。

    1. jimmychen说道:

      C语言宏定义,至于宏定义是什么,百度一下估计就会有比较详细的解释了

  9. Chatus说道:

    想问一下老师,最后一题为什么使用浮点类型比整数类型合适呢?单纯只是因为“杯”转换成“品脱”的时候可能出现无法被2整除的问题吗?

    1. jimmychen说道:

      是的

      1. Chatus说道:

        谢谢老师!

  10. 进击的辛二狗说道:

    越级了啊 #define 是第四章才讲的为啥第三章就有呢 :eek:

    1. jimmychen说道:

      呃,这简单的内容,知道就行

发表回复

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