A Programmer

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

``````#include <stdio.h>

/************************************************************************/
/* practice 1                                                                     */
/************************************************************************/
#define SECONDS_PER_MINUTE (60)
void p5_1(void)
{
float hours = 0;
int minutes = 0;
int seconds = 0;
printf("please input the number of minutes(<= 0 to quit):");
scanf_s("%d", &minutes);

while (minutes > 0)
{
getchar();
hours = (float)minutes / SECONDS_PER_MINUTE;
seconds = minutes * SECONDS_PER_MINUTE;
printf("%d minute = %f hours or %d seconds\n", minutes, hours, seconds);

printf("please input the number of minutes(<= 0 to quit):");
scanf_s("%d", &minutes);
}

return ;
}

/************************************************************************/
/* practice 2                                                                     */
/************************************************************************/
void p5_2(void)
{
int input_num = 0;
scanf_s("%d", &input_num);
getchar();

printf("the ten integers after %d are:", input_num);
for (int i = 0; i <= 10; i++)
{
printf("%d ", (input_num + i));
}
printf("\n");

return;
}
/************************************************************************/
/* practice 3                                                                     */
/************************************************************************/
const int DAY_PER_WEEK = 7;
void p5_3(void)
{
int days = 0;
int weeks = 0;
int remain_day = 0;

printf("please input the number of day:");
scanf_s("%d", &days);
getchar();

weeks = days / DAY_PER_WEEK;
remain_day = days % DAY_PER_WEEK;
printf("%d days are %d weeks, %d days\n", days, weeks, remain_day);

return ;
}

/************************************************************************/
/* practice 4                                                                     */
/************************************************************************/
const float CM_PER_INCH = 2.54f;
const float CM_PER_FEET = 30.38f;
void p5_4(void)
{
float height_cm = 0;
int height_feet = 0;
float height_inch = 0.0;

printf("Enter a height in centimeters: ");
scanf_s("%f", &height_cm);

while (height_cm > 0) {
getchar();
height_feet = (int)(height_cm / CM_PER_FEET);
height_inch = (height_cm - CM_PER_FEET * height_feet) / CM_PER_INCH;
printf("%.1f cm = %d feet, %.1f inches\n", height_cm, height_feet, height_inch);

printf("Enter a height in centimeters(<=0 to quit): ");
scanf_s("%f", &height_cm);
}

return ;
}

/************************************************************************/
/* practice 5                                                                     */
/************************************************************************/
void p5_5(void)
{
int count, sum;
count = 0;
sum = 0;

scanf_s("%d", &count);
getchar();

do
{
sum += count;
} while (count-- > 0);

printf("sum = %d\n", sum);

return;
}

/************************************************************************/
/* practice 6                                                                     */
/************************************************************************/
#define SQUARE(X) ((X) * (X))
void p5_6(void)
{
int count, sum;
count = 0;
sum = 0;

scanf_s("%d", &count);
getchar();

do
{
sum += SQUARE(count);
} while (count-- >0);

printf("sum = %d\n", sum);

return;
}

/************************************************************************/
/* practice 7                                                                     */
/************************************************************************/
void cube(double input)
{
double cube_num = input * input * input;
printf("the cube of %lf is %lf\n", input, cube_num);

return;
}

void p5_7(void)
{
double input = 0.0;
scanf_s("%lf", &input);
getchar();

cube(input);

return;
}

/************************************************************************/
/* practice 8                                                                     */
/************************************************************************/
void p5_8(void)
{
int first_operand = 0;
int second_operand = 0;

printf("This program computes moduli.\n");
printf("Enter an integer to serve as the second operand:");
scanf_s("%d", &second_operand);
getchar();

printf("Now enter the first operand:");
scanf_s("%d", &first_operand);

while (first_operand > 0)
{
getchar();
printf("%d %% %d is %d\n", first_operand, second_operand, (first_operand % second_operand));

printf("Enter next number for first operand (<=0 to quit):");
scanf_s("%d", &first_operand);
}

printf("Done\n");

return;
}

/************************************************************************/
/* practice 9                                                                     */
/************************************************************************/
void Temperatures(const double temperature)
{
const double Fahrenheit_val = 32.0;
const double Kelvin_val = 273.16;
const double Fahrenheit_temp = 5.0 / 9.0 * (temperature - Fahrenheit_val);
const double Kelvin_temp = temperature + Kelvin_val;

printf("Celsius: %.2lf  Fahrenheit:%.2lf  Kelvin:%.2lf\n", temperature, Fahrenheit_temp, Kelvin_temp);
return;
}
void p5_9(void)
{
double temperature = 0.0;

printf("please enter the temperature (q to quit):");
while (scanf_s("%lf", &temperature) == 1)
{
getchar();
Temperatures(temperature);
printf("please enter the temperature (q to quit):");
}

return;
}

int main(int argc, char **argv)
{
p5_9();

getchar();

return 1;
}
``````

1. 岚霭说道：

emmmm 第三题有要求用循环重复输入 输入非正值的时候循环结束这样

1. jimmychen说道：

呃......，还是那句话书不在身边，到时候拿书看一下，可能写的时候忘记看题的要求了

1. 橙了个棒棒糖说道：

很厉害了！！！顶！

1. jimmychen说道：

谢谢，大家一起努力

2. 浮舟说道：

兄弟，第九题我还是没看懂

2. 小朱说道：

要是有注释就好了

1. jimmychen说道：

难理解的地方才加有注释，简单点的按照练习意思理解就好

3. 友人A说道：

第四题计算height_feet，用到了强制转换int，但是我去掉了这个，结果输出是一样的，怎么回事啊

1. jimmychen说道：

因为上面的代码里面我将height_feet定义为int，所以就算你将强制类型转换int去掉，当将最后计算出来的结果赋值给height_feet的时候还是会被截断为int的

4. 强迫症说道：

210行到213行：题目是输入华氏度，输出华氏度、摄氏度、开氏度。
输出的字符串名字错了，Fahrenheit_temp改成Celsius_temp比较好吧，毕竟定义了temperature就代表了华氏度

5. 张佚名说道：

我的妈呀最后一题怎样都看不懂有点崩溃

6. 法赛啊说道：

do while 还没学呢。。。。

7. 泡泡说道：

Hi 楼主，我感觉第9题函数里的公式好像写错了
书上说的是：
摄氏温度=5.0/9.0*（华氏温度-32.0）
开氏温度=摄氏温度+273.16

还有就是变量命名有点混淆
Fahrenheit是华氏温度，Celsius是摄氏温度
麻烦楼主有时间看一下~

8. 绵绵说道：

编译器打不出来啊