C Primer Plus(第六版) 第五章(5.11.1~5.11.9)编程练习答案(仅供参考)

最近在复习C语言,在做编程练习的过程中自己也有些许收获,现将第五章编程练习题及个人答案发布如下,欢迎各位参考学习,若在参考过程中发现有何问题或者有其他思路请评论或私信我,感谢各位!

1.编写一个程序,把用分钟表示的时间转换成用小时和分钟表示的时间。使用#define 或const 创建一个表示60 的符号常量或const 变量。通过while 循环让用户重复输入值,直到用户输入小于或等于0 的值才停止循环。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define HOUR 60

int main(void)
{
	int min = 1;
	while (min > 0)
	{
		printf("请输入时间(若输入的数字小于或等于0时结束程序):");
		scanf("%d", &min);
		if (min > 0)
		{
			printf("您输入的时间为:%d时%d分\n", min / HOUR, min % HOUR);
		}	
	}
	printf("程序结束!谢谢您的使用!\n");

	return 0;
}

参考结果如下:

2.编写一个程序,提示用户输入一个整数,然后打印从该数到比该数大10 的所有整数(例如,用户输入5 ,则打印5 ~15 的所有整数,包括5 和15 )。要求打印的各值之间用一个空格、制表符或换行符分开。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int num_1 = 0, num_2 = 0;
	printf("请输入一个整数,我们将为您打印该数到该数大10的所有整数:");
	scanf("%d", &num_1);
	num_2 = num_1 + 10;
	while (num_1 <= num_2)
	{
		printf("%d ", num_1);
		num_1++;
	}
	printf("\n打印结束,感谢您的使用!\n");

	return 0;
}

参考结果如下:

 3.编写一个程序,提示用户输入天数,然后将其转换成周数和天数。例如,用户输入18 ,则转换成2周4天。以下面的格式显示结果:

18 days are 2 weeks, 4 days.

通过while 循环让用户重复输入天数,当用户输入一个非正值时(如0 或-20),循环结束。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
const int DAY = 7;

int main(void)
{
	int day = 1;
	while (day > 0)
	{
		printf("请输入天数,我将为您转换为周数和天数(输入非正数或右上角×号结束本程序):");
		scanf("%d", &day);
		if (day > 0)
			printf("您输入的周数和天数为:%d周%d天\n", day / DAY, day % DAY);
	}
	printf("程序结束!谢谢您的使用!\n");


	return 0;
}

参考结果如下:

4.编写一个程序,提示用户输入一个身高(单位:厘米),并分别以英尺和英寸为单位显示该值,允许有小数部分。程序应该能让用户重复输入身高,直到用户输入一个非正值。其输出示例如下:

Enter a height in centimeters: 182

182.0 cm = 5 feet, 11.7 inches

Enter a height in centimeters (<=0 to quit): 168.7

168.7 cm = 5 feet, 6.4 inches

Enter a height in centimeters (<=0 to quit): 0

bye

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
const double INCH = 2.54;
const double FEET = 30.48;

int main(void)
{
	int feet = 0;
	double height = 1.0, inch = 1.0;
	while (height > 0)
	{
		printf("请输入您的身高(单位:厘米),我将以英尺和英寸显示该值(输入非正数或右上角×号结束本程序):");
		scanf("%lf", &height);
		feet = (int)(height / FEET);//他等于是要XXX厘米=XXX英寸xxx英尺,所以要先把英尺数算出来(不是问你XXX厘米=多少英尺=多少英寸)
		inch = (height - feet * FEET) / INCH;//英尺数算完了,要从总身高里把英尺数对应的身高减掉,再把剩下的换算成英寸
		if (height > 0)
			printf("您的身高为:%d英尺%.1LF英寸\n", feet, inch);
	}
	printf("程序结束!谢谢您的使用!\n");

	return 0;
}

参考结果如下:

5.修改程序addemup.c (程序清单5.13),你可以认为addemup.c 是计算20天里赚多少钱的程序(假设第1天赚$1、第2天赚$2、第3天赚$3,以此类推)。修改程序,使其可以与用户交互,根据用户输入的数进行计算(即,用读入的一个变量来代替20)。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
    int count = 0, sum = 0, num_1 = 1;

    printf("请输入天数,我将为您计算这些天来总共赚了多少钱:");
    scanf("%d", &num_1);
    while (count++ < num_1)
    {   
        
        sum = sum + count;
        if (count == num_1)
            printf("太好了!您总共赚了%d元!\n", sum);//count必须在if读条件之前加到sum上,不然永远少最后一天的钱,亏死!
    }

    printf("程序结束!谢谢您的使用!\n");

    return 0;
}

参考结果如下:

 6.修改编程练习5的程序,使其能计算整数的平方和(可以认为第1天赚$1、第2天赚$4、第3天赚$9,以此类推,这看起来很不错)。C没有平方函数,但是可以用n * n 来表示n 的平方。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>

int main(void)
{
    int count = 0, sum = 0, num_1 = 1;

    printf("请输入天数,我将为您计算这些天来总共赚了多少钱:");
    scanf("%d", &num_1);
    while (count++ < num_1)
    {
        sum = sum + pow(count,2);//count * count也可以
        if (count == num_1)
            printf("太好了!您总共赚了%d元!\n", sum);//count必须在if读条件之前加到sum上,不然永远少最后一天的钱,亏死!
    }

    printf("程序结束!谢谢您的使用!\n");

    return 0;
}

参考结果如下:

注:使用pow()函数记得添上#include<math.h>

7.编写一个程序,提示用户输入一个double 类型的数,并打印该数的立方值。自己设计一个函数计算并打印立方值。main() 函数要把用户输入的值传递给该函数。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>

double function_1(double num_1);

int main(void)
{
	double num_1 = 0.0, num_2 = 0.0;

	printf("请输入一个double类型的数,我将为您打印该数的立方值:");
	scanf("%lf", &num_1);
	num_2 = function_1(num_1);
	printf("您输入的数的立方值为:%.4lf\n", num_2);
	printf("程序结束!谢谢您的使用!\n");

	return 0;
}

double function_1(double num_1)
{
	double num_2 = 0.0;
	num_2 = pow(num_1, 3);//要用pow()函数记得要加math.h
	return num_2;
}

参考结果如下:

8.编写一个程序,显示求模运算的结果。(求模即求余运算)把用户输入的第1个整数作为求模运算符的第2个运算对象,该数在运算过程中保持不变。用户后面输入的数是第1个运算对象。当用户输入一个非正值时,程序结束。其输出示例如下:

This program computes moduli.

Enter an integer to serve as the second operand: 256

Now enter the first operand: 438

438 % 256 is 182

Enter next number for first operand (<= 0 to quit): 1234567

1234567 % 256 is 135

Enter next number for first operand (<= 0 to quit): 0

Done

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int num_1 = 1, num_2 = 0;
	printf("我将为您计算求模运算的结果,请输入除数:"); 
	scanf("%d", &num_2);
	while (num_1 > 0)
	{ 
		printf("请输入被除数(输入非正数或右上角×号结束本程序):");
		scanf("%d", &num_1);
		if (num_1 > 0)
			printf("求模运算的结果为:%d\n", num_1 % num_2);
	}
	printf("程序结束!谢谢您的使用!\n");

	return 0;
}

参考结果如下:

 

 9.编写一个程序,要求用户输入一个华氏温度。程序应读取double 类型的值作为温度值,并把该值作为参数传递给一个用户自定义的函数Temperatures() 。该函数计算摄氏温度和开氏温度,并以小数点后面两位数字的精度显示3种温度。要使用不同的温标来表示这3个温度值。下面是华氏温度转摄氏温度的公式:

摄氏温度 = 5.0 / 9.0 * (华氏温度 - 32.0)

开氏温标常用于科学研究,0 表示绝对零,代表最低的温度。下面是摄氏温度转开氏温度的公式:

开氏温度 = 摄氏温度 + 273.16

Temperatures() 函数中用const 创建温度转换中使用的变量。在main() 函数中使用一个循环让用户重复输入温度,当用户输入q 或其他非数字时,循环结束。

scanf() 函数返回读取数据的数量,所以如果读取数字则返回1 ,如果读取q 则不返回1 。可以使用==运算符将scanf() 的返回值和1 作比较,测试两值是否相等。

参考代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

double Temperatures(double num_1);

int main(void)
{
	int i = 1;
	double num_1 = 0;
	while(i == 1)
	{
		printf("请输入一个华氏温度,我将为您转换为摄氏温度和开式温度(输入 q 或其他非数字结束程序):");
		i = scanf("%lf", &num_1);
		if (i == 1)
		{
			Temperatures(num_1);
		}	
	}	
	printf("程序结束!谢谢您的使用!\n");

	return 0;
}

double Temperatures(double num_1)
{
	const double NUM_1 = 5.0 / 9.0;
	const double NUM_2 = 273.16;
	double c = 0.0, fc = num_1, k = 0.0;
	c = NUM_1 * (fc - 32.0);
	k = c + NUM_2;
	printf("华氏温度为:%.3lf\n摄氏温度为:%.3lf\n开式温度为:%.3lf\n", fc, c, k);
}

参考结果如下:

 

总结:使用pow()函数记得添上#include<math.h>!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 第七章主要介绍了C语言中的函数,包括函数的定义、调用、参数传递、返回值等方面的内容。具体内容包括: 1. 函数的定义和调用:介绍了如何定义函数以及如何调用函数,包括函数的返回类型、函数名、参数列表和函数体等。 2. 函数的参数传递:介绍了C语言中的参数传递方式,包括值传递和地址传递,以及如何在函数中使用参数。 3. 函数的返回值:介绍了函数的返回值类型和返回值的作用,以及如何在函数中使用返回值。 4. 函数的声明和定义:介绍了函数的声明和定义的区别,以及如何在不同的文件中使用函数。 5. 函数的递归:介绍了递归函数的概念和使用方法,以及递归函数的优缺点。 6. 函数指针:介绍了函数指针的概念和使用方法,以及如何在程序中使用函数指针。 总的来说,第七章是C语言中非常重要的一章,对于理解和使用函数有很大的帮助。 ### 回答2: 《C Primer Plus》第六版第七章主要介绍了C语言中的输入和输出函数。这章的内容包括标准I/O库、`printf()`、`scanf()`等函数以及文件输入输出等。 在这一章中,首先讲解了如何使用标准I/O库进行输入输出。标准I/O库提供了一组函数,可以用于从键盘读取输入,或将结果输出到屏幕上。`printf()`函数可以用于格式化输出,可以控制输出的格式,比如输出特定长度的整数、浮点数等。`scanf()`函数可以用于从键盘读取输入,并将其存储到变量中,也可以使用特定的格式来读取特定类型的数据。 接下来,讲解了如何使用`getchar()`和`putchar()`函数。`getchar()`函数用于从键盘读取单个字符,`putchar()`函数用于向屏幕输出单个字符。 此外,还介绍了文件的输入输出。通过使用`fopen()`函数打开文件,可以读取或写入文件的内容。使用`fprintf()`函数可以将数据写入文件中,使用`fscanf()`函数可以从文件中读取数据并存储到变量中。同时还介绍了如何使用`fclose()`函数关闭文件。 最后,本章还讲解了格式化输出的一些高级特性,比如控制字段宽度、对齐方式以及使用转换说明符等。 通过学习《C Primer Plus》第六版第七章,我们能够了解C语言中输入输出的基本概念和原理,掌握使用输入输出库函数进行读写操作的方法,以及如何进行文件的读写操作。这对于日后编写C语言程序以及处理文件输入输出都有着重要的作用。 ### 回答3: C Primer Plus第六版第七章主要介绍了C语言中的函数。函数是一段完成特定任务的可重复使用的代码块,它可以接收输入参数并返回一个值。 在这一章中,我们学习了如何定义函数并明确函数的返回类型、函数名和参数列表。通过使用函数,我们可以将程序中的代码划分为更小、更可管理的部分。函数的主要好处之一是提高了代码的可读性和可维护性。 我们还学习了传递参数的不同方式,包括按值传递、按地址传递以及传递指针。这些方法允许我们在函数之间传递数据,并在函数内部对数据进行修改。 此外,我们还研究了递归函数的概念。递归函数是指可以调用自身的函数。使用递归可以通过将问题划分为更小的子问题来解决复杂的问题。 在这一章中,我们还学习了函数的作用域和生命周期。函数的作用域定义了函数内部和外部变量的可见性。函数的生命周期指的是函数在程序运行期间的保持状态的时间。 最后,我们还讨论了函数的多文件组织和调用。通过将函数定义和函数声明分离到不同的文件中,我们可以更好地组织和管理大型项目的代码。 通过学习C Primer Plus第六版第七章,我们可以更好地理解和应用函数在C语言中的重要性。掌握函数的知识将有助于我们编写更模块化、可读性更强、可维护性更高的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值