C Primer Plus 第5章习题

news2024/9/20 9:42:11

你该逆袭了

红色标注的是:错误的答案
蓝色标注的是:正确的答案
绿色标注的是:做题时有疑问的地方
橙色标注的是:答案中需要着重注意的地方

练习题

  • 一、复习题
    • 1、
    • 2、
    • 3、
    • 4、
      • 错误答案:
      • 正确答案:
    • 5、
      • 我的答案:正确,但是没有标准答案好
      • 标准答案
    • 6、
    • 7、
    • 8、
      • 我的答案:错误
      • 正确答案:
    • 9、
      • 我的答案:标准答案更好
      • 正确答案:
    • 10、
    • 11、
      • 我的答案:
      • 正确答案:
    • 12、
      • 第4问:错误
    • 13、
  • 二、编程练习
    • 1、
    • 2、
    • 3、
    • 4、
    • 5、
    • 6、
    • 7、
    • 8、
    • 9、

一、复习题

1、

在这里插入图片描述
a.x=30;
b.x=27;
c.x=1;y=1;
d.x=3;y=9;

2、

在这里插入图片描述
a.x=6;
b.x=52;
c.x=0;
d.x=13;

3、

在这里插入图片描述
a.37.5;
b.1.5;
c.35;
d.37;
e.37.5;
f.35.0;

4、

在这里插入图片描述

错误答案:

#include <stdio.h>

int main()
{
	int i = 1;
	float n;
	printf("watch out! here come a bunch of fractions!\n");
	while (i < 30)
		n = 1 / i;  //从 int 强制转换成 float
	printf(" %f", n);   //输出结果:1
	printf("that's all,folks!\n");

	return 0;
}

正确答案:

由于变量 i 没有增加,程序会一直停留在 while 循环中。
会进行无限次的循环计算 n = 1 / i

#include <stdio.h>

int main()
{
	int i = 1;
	float n;
	printf("watch out! here come a bunch of fractions!\n");  //一堆分数
	while (i++ < 30)
	{
		n = 1.0 / i;
		printf(" %f\n", n);
	}
	 
	printf("that's all,folks!\n");

	return 0;
}

5、

在这里插入图片描述

我的答案:正确,但是没有标准答案好

#include <stdio.h>
#define S_TO_M 60

int main()
{
	int sec, min, left;

	printf("this program converts seconds to minutes and ");
	printf("seconds.\n");
	printf("just enter the number of seconds.\n");
	printf("enter 0 to end the program.\n");
	scanf("%d", &sec);
	while(sec > 0)
	{
		//scanf("%d", &sec);    //sec没有值,无法进行判断,要么使用未初始化的内存 sec
		min = sec / S_TO_M;
		left = sec % S_TO_M;
		printf("%d sec is %d min, %d sec.\n", sec, min, left);
		printf("next input?\n");
		scanf("%d", &sec);
	}
	printf("bye\n");

	return 0;
}

标准答案

程序的主要问题是:
第一次进入 while 循环判断时,sec 并未赋值。
sec 数据无法确定(不同编译器有不同处理结果,有可能是垃圾数据,也有可能被清零)。
(sec > 0)的逻辑判断不能正确获得真或者假。
此外,scanf() 语句位于 while 循环语句块中第一行,输入数据 0 也将会进行数据转换和打印,直到下一次循环判断才能退出。

//程序的主要问题是:
//第一次进入 while 循环判断时,sec 并未赋值。
//sec 数据无法确定(不同编译器有不同处理结果,有可能是垃圾数据,也有可能被清零)。
//(sec > 0)的逻辑判断不能正确获得真或者假。
//此外,scanf() 语句位于 while 循环语句块中第一行,输入数据 0 也将会进行数据转换和打印,直到下一次循环判断才能退出。

#include <stdio.h>
#define S_TO_M 60

int main()
{
	int sec = 1; //sec 一开始设置成 1,就是为了让程序能运行起来
	int min = 0;
	int	left = 0;

	printf("this program converts seconds to minutes and ");
	printf("seconds.\n");
	printf("just enter the number of seconds.\n");
	printf("enter 0 to end the program.\n");
	while (sec > 0)   //sec 一开始设置成 1,就是为了让程序能运行起来
	{
		scanf("%d", &sec);
		min = sec / S_TO_M;
		left = sec % S_TO_M;
		printf("%d sec is %d min, %d sec. \n", sec, min, left);
		printf("next input?\n");
	}
	printf("bye!\n");

	return 0;
}

6、

加粗样式
答:
FORMAT,FORMAT11
11
12
11
在这里插入图片描述

7、

在这里插入图片描述
答:SOS:4 4.00
在这里插入图片描述

8、

在这里插入图片描述

我的答案:错误

答:
0 1 2 3 4 5 6 7 8 9

正确答案:

1 2 3 4 5 6 7 8 9 10
原因:n=0 进行判断,输出的结果是 n=1.
在这里插入图片描述

9、

在这里插入图片描述

我的答案:标准答案更好

#include <stdio.h>
#define TEN 10

int main()
{
	char n = 'a';
	
	while (n <= 'g')
	{
		printf("%c", n);
		n++;
	}
	printf("\n");

	return 0;
}

正确答案:

#include <stdio.h>
#define END 'g'

int main()
{
	char input = 'a';
	char n = 0;
	n = 'a' - 1;  //修改预定义起始值

	while (n++ < END)
	{
		printf("%5c", n);
	}

	return 0;
}

10、

在这里插入图片描述
a.
1 2
b.
101
102
103
104
c.
s t u v w

11、

在这里插入图片描述

我的答案:

COMPUTER
然后程序就停在这里进行不下去了,因为 n 的值没有发生变化。

正确答案:

由于 n 的值没有发生变化,会一直无限循环下去。
在这里插入图片描述

12、

在这里插入图片描述
答:

x += 10;
x += 1;
c = (a + b) * 2;

第4问:错误

c = a * 2 + b * 2; //错误答案
//正确答案:
//c = a + b * 2; 

13、

在这里插入图片描述

x -= 1;
m = n % k;
p = q / b - a;
x = (a + b) / (c * d);

二、编程练习

1、

在这里插入图片描述

#include <stdio.h>
#define PER_M 60

int main()
{
	int m = 0;
	int h = 0;
	int left = 0;

	printf("请输入分钟数,");
	printf("如果输入小于等于0的分钟数,那么程序停止。\n");
	scanf("%d", &m);
	while (m > 0)
	{
		h = m / PER_M;
		left = m % PER_M;
		printf("%d转变成%d小时%d分钟。\n", m, h, left);
		scanf("%d", &m);
	}
	
	return 0;
}

2、

在这里插入图片描述

#include <stdio.h>

int main()
{
	int input = 0;
	int count = 0;

	printf("请输入一个整数,我将打印从这个数到比它大10的数字。\n");
	printf("请输入整数:");
	scanf("%d", &input);
	while (count<=10)
	{
		printf("%d	", input+count);
		count++;
	}

	return 0;
}

3、

在这里插入图片描述

#include <stdio.h>
#define PER_WEEK 7

int main()
{
	int all = 0;
	int w = 0;
	int left = 0;

	printf("请输入天数,");
	printf("如果输入小于等于0的天数,那么程序停止。\n");
	scanf("%d", &all);
	while (all > 0)
	{
		w = all / PER_WEEK;
		left = all % PER_WEEK;
		printf("%d days are %d weeks, %d days.\n", all, w, left);
		scanf("%d", &all);
	}
	
	return 0;
}

4、

在这里插入图片描述

#include <stdio.h>

int main()
{
	double height = 0;
	int feet = 0;
	double inch = 0;
	
	printf("enter a height in centimeters:");
	scanf("%lf", &height);
	while (height > 0)
	{
		feet = (int)(height / 30.48);
		inch = (height-30.48*feet) / 2.54;
		printf("%.1lf cm = %d feet, %.1lf inches\n",height,feet,inch);
		printf("enter a height in centimeters (<=0 to quit):");
		scanf("%lf", &height);
	}
	printf("bye\n");

	return 0;
}

5、

在这里插入图片描述

#include <stdio.h>

int main()
{
	int count = 0;
	int sum = 0;
	int all = 0;

	printf("请输入总数:");
	scanf("%d", &sum);
	while (count <= sum)
	{
		all += count;
		count++;
	}
	printf("%d 就是总和。\n", all);

	return 0;
}

6、

在这里插入图片描述

#include <stdio.h>

int main()
{
	int count = 0;
	int sum = 0;
	int all = 0;

	printf("请输入总数:");
	scanf("%d", &sum);
	while (count <= sum)
	{
		all += count * count;
		count++;
	}
	printf("%d 就是总和。\n", all);

	return 0;
}

7、

在这里插入图片描述

#include <stdio.h>

double san(double input)
{
	double sum = 0;
	sum = input * input * input;
	return sum;
}

int main()
{
	double input = 0;
	double result = 0;

	printf("输出数据,计算立方值:");
	scanf("%lf", &input);
	result = san(input);
	printf("%lf 就是%lf的立方结果。", result, input);

	return 0;
}

8、

在这里插入图片描述

#include <stdio.h>

int main()
{
	int second = 0;
	int first = 0;
	int mo = 0;

	printf("this program computes moduli.\n");
	printf("enter an integer to serve as the second operand:");
	scanf("%d", &second);
	printf("now enter the first operand:");
	scanf("%d", &first);
	while (first > 0)
	{
		mo = first % second;
		printf("%d %% %d is %d\n", first, second, mo);
		printf("enter next number for first operand (<= 0 to quit):");
		scanf("%d", &first);
	}
	printf("Done\n");

	return 0;
}

9、

在这里插入图片描述

#include <stdio.h>

double temperatures(const double hua)
{
	double she = 0;
	double kai = 0;
	she = 5.0 / 9.0 * (hua - 32.0);
	kai = she + 273.16;
	printf("华氏温度:%lf,摄氏温度:%lf,开氏温度:%lf\n", hua, she, kai);
}

int main()
{
	double hua = 0;
	
	printf("请输入华氏温度:");
	
	while ((scanf("%lf", &hua)) == 1)
	{
		temperatures(hua);
		printf("请输入华氏温度,如果输入的是非数字,那么程序结束。");
	}
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2140062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十三,Spring Boot 中注入 Servlet,Filter,Listener

十三&#xff0c;Spring Boot 中注入 Servlet&#xff0c;Filter&#xff0c;Listener 文章目录 十三&#xff0c;Spring Boot 中注入 Servlet&#xff0c;Filter&#xff0c;Listener1. 基本介绍2. 第一种方式&#xff1a;使用注解方式注入&#xff1a;Servlet&#xff0c;Fil…

Cobbler 搭建方法

统信服务器操作系统行业版V20-1000c【Cobbler 搭建】手册 统信服务器操作系统行业版 V20版本上Cobbler 搭建方法 文章目录 功能概述一、使用范围二、cobbler工作流程1. Server 端2. Client 端三、 环境准备1. 测试环境告知,以提供配置时参考:2. 关闭防火墙、selinux:3. 注意…

C#学习笔记(三)Visual Studio安装与使用

博主刚开始接触C#&#xff0c;本系列为学习记录&#xff0c;如有错误欢迎各位大佬指正&#xff01;期待互相交流&#xff01; 上一篇文章中安装了Visual Studio Code来编写调试C#程序&#xff0c;但是博主的目标是编写带窗口的应用程序&#xff0c;了解之后发现需要安装Visual …

python-素数对

题目描述 定义两个相差为 2 的素数称为素数对&#xff0c;如 5 和 7,17 和 19 等&#xff0c;要求找出所有两个数均不大于 n 的素数对。输入 一个正整数 n。1≤n≤10000。输出 所有小于等于 n 的素数对。每对素数对输出一行&#xff0c;中间用单个空格隔开。若没有找到任何素数…

VS2019配置TIFF

1.下载 Index of /libtiff/ (osgeo.org) 2.配置 3.使用 4.测试程序 #include <iostream> #include <cstdint> // 包含 stdint.h 头文件 #include "tiffio.h"int main() {std::cout << "Hello World!\n";// 打开一个 TIFF 文件const ch…

06_Python数据类型_元组

Python的基础数据类型 数值类型&#xff1a;整数、浮点数、复数、布尔字符串容器类型&#xff1a;列表、元祖、字典、集合 元组 元组&#xff08;Tuple&#xff09;是一种不可变的序列类型&#xff0c;与列表类似&#xff0c;但有一些关键的区别。本质&#xff1a;只读的列表…

java程序崩了不会看怎么办,那就用jconsole试试

性能监控工具 jconsole JConsole工具是JDK自带的图形化性能监控工具。并通过JConsole工具&#xff0c; 可以查看Java应用程序的运行概况&#xff0c; 监控堆信息、 元空间使用情况及类的加载情况等。 JConsole程序在%JAVA_HOM E%/bin目录下 或者你可以直接在命令行对他进行…

排序算法-交换排序

目录 基本思想 一、冒泡排序 二、快速排序分析 1. hoare版本 2. 挖坑法 3. 前后指针版本 4. 快速排序的优化 三、代码示例 1. hoare版本 2. 挖坑法 3. 前后指针版本 四、快速排序&#xff08;三路划分) 五、总结 基本思想 基本思想&#xff1a;所谓交换&#xff0…

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found

VS Code终端命令执行后老是出现 __vsc_prompt_cmd_original: command not found。 如下图&#xff08;vscode终端中&#xff09;&#xff1a; 解决方案&#xff1a; 1、vim ~/.bashrc 2、在~/.bashrc里面加入命令&#xff1a;unset PROMPT_COMMAND 3、source ~/.bashrc

【AI大模型】Kimi API大模型接口实现

一、Kimi大模型概述 Kimi&#xff0c;月之暗面旗下国产大模型。是北京月之暗面科技有限公司&#xff08;Moonshot AI&#xff09;于2023年10月9日推出的一款智能助手&#xff0c;主要应用场景为专业学术论文的翻译和理解、辅助分析法律问题、快速理解API开发文档等&#xff0c…

关于http的206状态码和416状态码的意义、断点续传以及CORS使用Access-Control-Allow-Origin来允许跨域请求

一、关于http的206状态码和416状态码的意义及断点续传 HTTP 2xx范围内的状态码表明客户端发送的请求已经被服务器接受并且被成功处理了,HTTP/1.1 206状态码表示客户端通过发送范围请求头Range抓取到了资源的部分数据&#xff0c;一般用来解决大文件下载问题&#xff0c;一般CDN…

直接的强化学习与间接的强化学习

强化学习是一种机器学习方法&#xff0c;用于让智能体在与环境的交互中学习最优策略&#xff0c;以获得最大的奖励。根据强化学习的方式&#xff0c;可以分为直接强化学习和间接强化学习。直接强化学习注重直接从奖励信号中学习最优策略&#xff0c;而间接强化学习则通过学习环…

【吊打面试官系列-MySQL面试题】MySQL 中有哪几种锁?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL 中有哪几种锁&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; MySQL 中有哪几种锁&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 1、表级锁&#xff1a;开销小&#xff0c;加锁快&…

2024.9.16 day 1 pytorch安装及环境配置

一、配置pytorch环境&#xff0c;安装pytorch 1.查看python版本 python --version 2.在anaconda命令中创建pytorch环境 conda create -n pytorch python3.12(python版本&#xff09; 3.pytorch安装 pytorch首页 PyTorchhttps://pytorch.org/ os为windows推荐package选择…

在jenkins作业中如何增加git fetch的超时时间

在jenkins作业中如何增加git fetch的超时时间 可以通过以下几种方式来增加 Jenkins 中 git fetch 的超时时间: 1.在 Jenkins 的构建配置中设置超时时间: 在 Jenkins 的构建配置页面,找到 "Git" 部分,在 "Additional Behaviours" 中选择 "Advanced c…

Sui与3DOS合作推动3D打印网络的去中心化

制造业创新者3DOS宣布将其庞大的3D打印网络与Sui集成。这一集成使用户、3D打印机和制造商能够连接到全球可访问的去中心化网络。 解锁去中心化3D打印的全部潜力依赖于精确的实时协调。Sui作为通用协调层&#xff0c;将用户、3D打印机和制造商同步到一个高效、统一的网络中。通…

注册登录案列

案列需求&#xff1a; 在主测页面中输入用户数据&#xff0c;点击注册按钮完成用户注册 实现步骤&#xff1a; 1.创建数据库表&#xff0c;Mysql代码如下&#xff1a; CREATE TABLE tb_user( id int primary key auto_increment, username VARCHAR(32), password VARCHAR(3…

【题解】【枚举】—— [USACO1.5] 回文质数 Prime Palindromes

【题解】【枚举】—— [USACO1.5] 回文质数 Prime Palindromes [USACO1.5] 回文质数 Prime Palindromes题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 思路1.素数筛法1.1.思路解析1.2.参考代码 解法1.打表1.1.思路解析1.2.AC代码 解法2.构造回文数2.1.思路解析2.2.…

Java集合进阶--双列集合

双列集合的特点&#xff1a; 1 双列集合一次需要存一对数据&#xff0c;分别为键和值 2 键不能重复&#xff0c;值能重复 3 键和值是一一对应的&#xff0c;每一个键只能找到自己对应的值 4 键值这个整体 我们称之为 “键值对” 或者 “键值对对象” &#xff0c;在Java中叫做 …

react hooks--useState

概述 useState 可以使函数组件像类组件一样拥有 state&#xff0c;也就说明函数组件可以通过 useState 改变 UI 视图。那么 useState 到底应该如何使用&#xff0c;底层又是怎么运作的呢&#xff0c;首先一起看一下 useState 。 问题&#xff1a;Hook 是什么? 一个 Hook 就是…