【C++ Primer(第5版) 课后习题题目及答案 第一章】

news2025/1/12 12:26:25

C++ Primer5th 课后习题答案 第一章

    • 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。
    • 1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
    • 1.3:编写程序,在标准输出上打印Hello,World。
    • 1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。
    • 1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。
    • 1.6:解释下面程序片段是否合法。如果程序是合法的,它将输出什么?如果程序不合法,原因何在?应该如何修正?
    • 1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。
    • 1.8:指出下列哪些输出语句是合法的(如果有的话):预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案,改正每个编译错误。
    • 1.9:编写程序,使用while循环将50到100的整数相加。
    • 1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符(--)实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。
    • 1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。
    • 1.12:下面的for循环完成了什么功能?sum的终值是多少?
    • 1.13:使用for循环重做1.4.1中所有练习。
    • 1.14:对比for循环和while循环,两种形式的优缺点各是什么?
    • 1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。
    • 1.16:编写程序,从cin读取一组数,输出其和。
    • 1.17 如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?
    • 1.18 编译并运行本节的程序,给它输入全都相等的值。再次运行程序,输入没有重复的值。
    • 1.19 修改你为1.4.1节练习1.11(第11页)所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小的情况。
    • 1.20 在网站http://www.informit.com/title/032174113 上,第1章的代码目录包含了头文件 Sales_item.h。将它拷贝到你自己的工作目录中。用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上。
    • 1.21 编写程序,读取两个 ISBN 相同的 Sales_item 对象,输出他们的和。
    • 1.22 编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。
    • 1.23:编写程序,读取多条销售记录,并统计每个ISBN(每本书)有几条销售记录。
    • 1.24 输入表示多个 ISBN 的多条销售记录来测试上一个程序,每个 ISBN 的记录应该聚在一起。
    • 1.25 借助网站上的 Sales_item.h 头文件,编译并运行本节给出的书店程序。

1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。

头文件后缀一般是.h或.hpp等,源文件后缀一般是.c或.cpp等。

我使用的是VS2022,命令行可以输入 cl 文件名 可以在当前目录下生成.exe文件,然后双击打开即可运行。

1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。

int main() {
	return -1;
}

在Windows操作系统下main函数没有报告运行失败,因此返回0或-1在运行效果没有什么区别。

1.3:编写程序,在标准输出上打印Hello,World。

#include<iostream>
int main()
{
	std::cout << "Hello , World。" << std::endl;
	return 0;
}

1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。

#include<iostream>
int main()
{
	std::cout << "请输入两个数" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	std::cout << v1 << "和" << v2 << "的乘积为" << v1 * v2 << std::endl;
	return 0;
}

1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。

#include<iostream>
int main()
{
	std::cout << "请输入两个数" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	std::cout << v1;
	std::cout << "和";
	std::cout << v2;
	std::cout << "的乘积为";
	std::cout << v1 * v2 << std::endl;
 
	return 0;
}

1.6:解释下面程序片段是否合法。如果程序是合法的,它将输出什么?如果程序不合法,原因何在?应该如何修正?

错误代码

#include<iostream>
int main()
{
    int v1 = 10, v2 = 20;
    std::cout << "The sum of" << v1;
              << "and" << v2;
              << "is" << v1 + v2 << std::endl;
}

不合法
第5行和第6行代码最后分别有一个分号,表示语句结束。而第6行和第7行<<操作符为二元操作符,两行第一个<<操作符没有左操作数,因此不合法。
修正代码

#include<iostream>
int main()
{
    std::cout << "The sum of" << v1
              << "and" << v2
              << "is" << v1 + v2 << std::endl;
    return 0;
}

1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。

/*
* 注释对/* */不能嵌套。
* “不能嵌套”几个字会被认为是源码,像剩余程序一样处理
*/
int main() {
	return 0;
}

在这里插入图片描述

1.8:指出下列哪些输出语句是合法的(如果有的话):预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案,改正每个编译错误。

#include<iostream>
int main()
{
	std::cout << "/*"; //合法 打印/*
	std::cout << "*/"; //合法 打印*/
 
	std::cout<< /* "*/" */; //不合法 缺少右引号
	//改正代码
	std::cout << /* "*/" */";
 
	std::cout <</* "*/" /* "/*" */; //合法 打印/*
 
    return 0;
}

1.9:编写程序,使用while循环将50到100的整数相加。

#include<iostream>
int main()
{
	int sum = 0, val = 50;
	while (val <= 100)
	{
		sum += val;
		++val;
	}
	std::cout << "50-100的整数和为" << sum << std::endl;
	return 0;
}

1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符(–)实现将值减少1。编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数。

#include<iostream>
int main()
{
	int val = 10;
	while (val >= 0)
	{
		std::cout << val << std::endl;
		--val;			//每次循环val的值减1
	}
	return 0;
}

1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。

#include<iostream>
int main()
{
	int v1 = 0, v2 = 0;
	std::cout << "请输入两个整数:";
	std::cin >> v1 >> v2;
	//如果v1大于v2,则交换v1和v2的值
	if (v1 > v2) {
		v1 = v1 - v2;
		v2 = v1 + v2;
		v1 = v2 - v1;
	}
	while (v1 < (v2-1)) {
		v1++;
		std::cout << v1 << std::endl;
	}
	system("pause"); //冻结屏幕,便于观察程序的执行结果
	return 0;
}

1.12:下面的for循环完成了什么功能?sum的终值是多少?

sum = (-100)+(-99)+…+(-1)+0+1+…+99+100 = 0

#include<iostream>
int main()
{
	int sum = 0;
	for (int i = -100; i <= 100; i++)
		sum += i;
	std::cout << sum << std::endl;
	return 0;
}

1.13:使用for循环重做1.4.1中所有练习。

#include<iostream>
int main()
{
	int sum = 0, val = 50;
	for(val = 50;val <= 100; ++val)
	{
		sum += val;
	}
	std::cout << "50-100的整数和为" << sum << std::endl;
	return 0;
}
#include<iostream>
int main()
{
	int val = 10;
    for(val = 10;val >= 0; --val)
	{
		std::cout << val << std::endl;
	}
	return 0;
}
#include<iostream>
int main()
{
	int v1 = 0, v2 = 0;
	std::cout << "请输入两个整数:";
	std::cin >> v1 >> v2;
	//如果v1大于v2,则交换v1和v2的值
	if (v1 > v2) {
		v1 = v1 - v2;
		v2 = v1 + v2;
		v1 = v2 - v1;
	}
	for (int i = v1 + 1; i < v2; i++) {
		std::cout << i << std::endl;
	}
	system("pause");
	return 0;
}

1.14:对比for循环和while循环,两种形式的优缺点各是什么?

while的优点和缺点:
 - 结构不清晰,循环控制变量的初始化在while语句之前,其改变在while循环体中
 - 适用于不知道具体循环次数的情况

for的优点和缺点:
 - 结构清晰,循环控制变量的初始化和修改都放在语句头部分
 - 适用于已知循环次数的情况

1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

请自行尝试。

1.16:编写程序,从cin读取一组数,输出其和。

#include <iostream>

int main() {
	int sum = 0, value = 0;
	while (std::cin >> value)
		sum += value;
	std::cout << "Sum is " << sum << std::endl;
	system("pause");
	return 0;
}

在Windows系统中,输入文件结束符的方法是Ctrl+Z,然后按Enter或Return。
在UNIX系统中,文件结束符输入是Ctrl+D。

1.17 如果输入的所有值都是相等的,本节的程序会输出什么?如果没有重复值,输出又会是怎样的?

见1.18

1.18 编译并运行本节的程序,给它输入全都相等的值。再次运行程序,输入没有重复的值。

#include <iostream>

int main() {
	// currVal 是我们正在统计的数;我们将读入的新值存入val
	int currVal = 0, val = 0;
	// 读取第一个数,并确保确实有数据可以处理
	if (std::cin >> currVal) {
		int cnt = 1; // 保存我们正在处理的当前值的个数
		while (std::cin >> val) { // 读取剩余的数
			if (currVal == val) // 如果值相同
				++cnt; // 将cnt加1
			else { // 否则,打印前一个值的个数
				std::cout << currVal << " occurs "
					<< cnt << " times" << std::endl;
				currVal = val; // 记住新值
				cnt = 1; // 重置计数器
			}
		} // while循环在这里结束
		// 记住打印文件中最后一个值的个数
		std::cout << currVal << " occurs " << cnt << " times" << std::endl;
	} // 最外层的if语句在这里结束
	system("pause");
	return 0;
}

输出:

1 1 1 1 1 1 1 1^Z
1 occurs 8 times
1 2 3 4 5 6 7^Z
1 occurs 1 times
2 occurs 1 times
3 occurs 1 times
4 occurs 1 times
5 occurs 1 times
6 occurs 1 times
7 occurs 1 times

1.19 修改你为1.4.1节练习1.11(第11页)所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小的情况。

见1.11

1.20 在网站http://www.informit.com/title/032174113 上,第1章的代码目录包含了头文件 Sales_item.h。将它拷贝到你自己的工作目录中。用它编写一个程序,读取一组书籍销售记录,将每条记录打印到标准输出上。

Sales_item.h

#pragma once
#ifndef SALESITEM_H
#define SALESITEM_H
#include <iostream>
#include <string>

class Sales_item {
public:
    Sales_item(const std::string& book) :isbn(book), units_sold(0), revenue(0.0) {}
    Sales_item(std::istream& is) { is >> *this; }
    friend std::istream& operator>>(std::istream&, Sales_item&);
    friend std::ostream& operator<<(std::ostream&, const Sales_item&);
public:
    Sales_item& operator+=(const Sales_item&);
public:
    double avg_price() const;
    bool same_isbn(const Sales_item& rhs)const {
        return isbn == rhs.isbn;
    }
    Sales_item() :units_sold(0), revenue(0.0) {}
public:
    std::string isbn;
    unsigned units_sold;
    double revenue;
};

using std::istream;
using std::ostream;
Sales_item operator+(const Sales_item&, const Sales_item&);

inline bool operator==(const Sales_item& lhs, const Sales_item& rhs) {
    return lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue && lhs.same_isbn(rhs);
}

inline bool operator!=(const Sales_item& lhs, const Sales_item& rhs) {
    return !(lhs == rhs);
}

inline Sales_item& Sales_item::operator +=(const Sales_item& rhs) {
    units_sold += rhs.units_sold;
    revenue += rhs.revenue;
    return *this;
}

inline Sales_item operator+(const Sales_item& lhs, const Sales_item& rhs) {
    Sales_item ret(lhs);
    ret += rhs;
    return ret;
}

inline istream& operator>>(istream& in, Sales_item& s) {
    double price;
    in >> s.isbn >> s.units_sold >> price;
    if (in)
        s.revenue = s.units_sold * price;
    else
        s = Sales_item();
    return in;
}

inline ostream& operator<<(ostream& out, const Sales_item& s) {
    out << s.isbn << "\t" << s.units_sold << "\t" << s.revenue << "\t" << s.avg_price();
    return out;
}

inline double Sales_item::avg_price() const {
    if (units_sold)
        return revenue / units_sold;
    else
        return 0;
}
#endif

1.20.cpp

#include <iostream>
#include "Sales_item.h"

int main() {
	Sales_item book;
	while (std::cin >> book)
		std::cout << book << std::endl;
	system("pause");
	return 0;
}

结果:

0-201-70353-X 4 24.99
0-201-70353-X   4       99.96   24.99
0-201-70353-X 3 20
0-201-70353-X   3       60      20
0-201-70353-X 1 22
0-201-70353-X   1       22      22
0-201-70353-X 5 23
0-201-70353-X   5       115     23
0-201-70353-X 6 24
0-201-70353-X   6       144     24
0-201-70353-X 8 26
0-201-70353-X   8       208     26
0-201-70353-X 2 20

1.21 编写程序,读取两个 ISBN 相同的 Sales_item 对象,输出他们的和。

#include <iostream>
#include "Sales_item.h"

int main() {
	Sales_item item1, item2;
	std::cin >> item1 >> item2; // 读取一对交易记录
	std::cout << item1 + item2 << std::endl; // 打印它们的和
	system("pause");
	return 0;
}

结果:

0-201-70353-X 2 30
0-201-70353-X 3 20
0-201-70353-X   5       120     24

1.22 编写程序,读取多个具有相同 ISBN 的销售记录,输出所有记录的和。

#include <iostream>
#include "Sales_item.h"

int main() {
	Sales_item item, sum;
	while (std::cin >> item)
		sum += item;
	std::cout << sum << std::endl;
	system("pause");
	return 0;
}

输出:

1-01 2 100
1-01 2 100
1-01 3 100
1-01 7 700 100^Z
1-01    14      5600    400

1.23:编写程序,读取多条销售记录,并统计每个ISBN(每本书)有几条销售记录。

#include<iostream>
#include "Sales_item.h"

int main() {
	Sales_item currItem, item;
	int cnt = 1;
	if (std::cin >> currItem) {
		while (std::cin >> item) {
			if(currItem.isbn == item.isbn){
				cnt++;
			}
			else {
				std::cout << currItem.isbn << " has " << cnt << " records" << std::endl;
				cnt = 1;
				currItem = item;
			}
		}
		std::cout << currItem.isbn << " has " << cnt << " records" << std::endl;
	}
	system("pause");
	return 0;
}

1.24 输入表示多个 ISBN 的多条销售记录来测试上一个程序,每个 ISBN 的记录应该聚在一起。

0-201-70353-X 4 24.99
0-201-70353-X 3 20
0-201-70353-X 2 30
0-201-70353-X 5 23
0-201-70353-X 6 24
0-201-70353-X 8 26
0-201-70351-X 2 20
0-201-70352-X 2 20^Z
0-201-70353-X has 6 records
0-201-70351-X has 1 records
0-201-70352-X has 1 records

1.25 借助网站上的 Sales_item.h 头文件,编译并运行本节给出的书店程序。

#include <iostream>
#include "Sales_item.h"

int main() {
	Sales_item total; //保存下一条交易记录的变量
	//读入第一条交易记录,并确保有数据可以处理
	if (std::cin >> total) {
		Sales_item trans; //保存和的变量
		//读入并处理剩余交易记录
		while (std::cin >> trans) {
			//如果我们仍在处理相同的书
			if (total.isbn == trans.isbn)
				total += trans; //更新总销售额
			else {
				//打印前一本书的结果
				std::cout << total << std::endl;
				total = trans; // total现在表示下一本书的销售额
			}
		}
		std::cout << total << std::endl; // 打印最后一本书的结果
	}
	else {
		//没有输入!警告读者
		std::cerr << "No data?" << std::endl;
		system("pause");
		return -1; //表示失败
	}
	system("pause");
	return 0;
}

结果:

0-201-70351-X 1 20
0-201-70351-X 1 20
0-201-70352-X 2 30
0-201-70352-X 2 30
0-201-70353-X 4 25
0-201-70353-X 5 20
0-201-70353-X 5 23
0-201-70353-X 6 24^Z
0-201-70351-X   2       40      20
0-201-70352-X   4       120     30
0-201-70353-X   20      459     22.95

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

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

相关文章

C#弹出消息对话框,增加输入框,接受输入信息

效果图&#xff1a; 代码&#xff1a; using Microsoft.VisualBasic;string intext Interaction.InputBox("请输入密码","输入密码","",Screen.PrimaryScreen.Bounds.Width/4,Screen.PrimaryScreen.Bounds.Height/4);MessageBox.Show("in…

多商户商城系统开发功能有哪些?

多商户商城系统开发功能有哪些&#xff1f; 1、商品管理。商品管理是多商户商城系统的必备功能。商家需要能够轻松地添加、修改和删除商品。这个功能还应该包括商品图片、价格、描述和库存等信息的管理。消费者也需要能够通过小程序浏览商品并下订单。 2、订单管…

图形编辑器:历史记录设计

大家好&#xff0c;我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录&#xff0c;做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录&#xff0c;支持撤销重做功能&#xff0c;需要两个栈&#xff1a;撤销&#xff0…

【计算机网络】学习笔记:第三章 数据链路层【王道考研】持续更新中....

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

《编码——隐匿在计算机软硬件背后的语言》精炼——第14章(边沿触发器,计数器)

学习不是一次性的投资&#xff0c;而是一份长期稳定的收益。 文章目录 8位锁存器边沿触发器计数器改进的边沿触发器 8位锁存器 上篇文章讲到了1位存储器的组成&#xff0c;将8个1位存储器的时钟端连在一起就形成了一个8位锁存器&#xff0c;如下所示&#xff1a; 这个锁存器一…

vbscript+asp编写接口

1、前言 因为目前工作在对内网老系统用reactjava微服务进行升级改造&#xff0c;因为一些老的业务逻辑都是用vbscript编写的&#xff0c;很复杂&#xff0c;因此持久层和业务层代码不能动&#xff0c;以asp接口的形式给到数据。java接口调用asp接口&#xff0c;然后前端再调用j…

Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

一、DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1、DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c…

他工作10年,老板却让他走人

大家好&#xff0c;我是五月&#xff0c;一个编程街溜子。 二狗被裁了&#xff0c;他在公司待了快十年&#xff0c;他想留下来&#xff0c;老板却让他走。 我和他一样困惑。 他985毕业&#xff0c;工作中有从0开始一个项目直到日活过千万&#xff0c;也有过参与顶级产品核心…

【数据结构】算法的时间复杂度和空间复杂度(含代码分析)

文章目录 一、算法的效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度的概念 二、大O的渐进表示法三、时间复杂度2.1 时间复杂度的概念2.2常见时间复杂度计算举例 四、空间复杂度2.1 空间复杂度的概念2.2常见空间复杂度计算举例五、解决问题的思路LeetCode-exercise 总结 一、算…

【Java笔试强训 7】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;Fibona…

Android BuildConfig不生成的解决办法

为了验证一些问题新建了一个demo&#xff0c;其依赖的AGP版本是8.0.0 但是在运行过程中报了一个错误就是找不到BuildConfig。 重新build了下代码&#xff0c;然后找编译后的代码&#xff0c;发现确实没有生成BuildConfig. 给我整的直接怀疑人生&#xff0c;以为是自己的AS有问…

QT、事件处理机制

闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器 #include <QTime> //shijian #include <QTimerEvent> //定时器事件类 #include <QDateTime> //日期实间类 #include <QTextToSpeech> …

【C++】特殊类设计+单例模式+类型转换

目录 一、设计一个类&#xff0c;不能被拷贝 1、C98 2、C11 二、设计一个类&#xff0c;只能在堆上创建对象 1、将构造设为私有 2、将析构设为私有 三、设计一个类&#xff0c;只能在栈上创建对象 四、设计一个类&#xff0c;不能被继承 1、C98 2、C11 五、设计一个…

UNIX环境高级编程——进程控制

8.1 引言 本章介绍UNIX系统的进程控制&#xff0c;包括&#xff1a; 创建新进程、执行程序、进程终止进程属性ID——实际、有效、保存的用户ID和组ID解释器文件system函数进程会计机制 8.2 进程标识 进程ID&#xff1a;一个非负整数&#xff0c;进程的唯一标识。 进程ID可…

【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

文章目录 1. 原始DBO算法2. 改进后的IDBO算法2.1 Bernoulli混沌映射种群初始化2.2 自适应因子2.3 Levy飞行策略2.4 动态权重系数 3. 部分代码展示4. 效果图展示5. 资源获取 1. 原始DBO算法 详细介绍此处略&#xff0c;可参考DBO算法介绍 2. 改进后的IDBO算法 2.1 Bernoulli混…

【Linux问题合集002】解决虚拟机里面的Linux系统部分无法上网情况,保姆级教程

&#x1f340;一、前言 正如标题所说&#xff0c;解决虚拟机里面的Linux系统部分无法上网情况&#xff0c;这个网络问题的原因有很多种可能&#xff0c;这篇博客不一定能够解决所有朋友的网络问题&#xff0c;但是如果遇到和我一样情况的&#xff0c;我保证解决步骤一定是非常详…

使用 Python 创建端到端聊天机器人

使用 Python 创建端到端聊天机器人 1. 效果图2. 原理2.1 什么是端到端聊天机器人&#xff1f;2.2 创建端到端聊天机器人步骤 3. 源码3.1 streamlit安装3.2 源码 参考 聊天机器人是一种计算机程序&#xff0c;它了解您的查询意图以使用解决方案进行回答。聊天机器人是业内最受欢…

《LKD3粗读笔记》(11)定时器和时间管理

文章目录 1、内核中的时间概念2、 节拍率&#xff1a;HZ3、jiffies4、硬时钟和定时器5、时钟中断处理程序6、实际时间7、定时器8、延迟执行 1、内核中的时间概念 硬件为内核提供了一个系统定时器用以计算流逝的时间&#xff0c;该时钟在内核中可看成是一个电子时间资源&#x…

Nginx安装删除JDK Tomcat Redis

1.卸载Nginx ps -ef|grep nginx 查询Nginx 进程pid 如上图 master是主进程, worker是工作进程, master负责维护worker进程 Nginx启动后默认启动master进程和worker进程 Nginx默认使用端口80 kill -9 7035 或者 kill -term 7035 kill -9 7036 查找根下所有名字包…

带你搞懂人工智能、机器学习和深度学习!

不少高校的小伙伴找我聊入门人工智能该怎么起步&#xff0c;如何快速入门&#xff0c;多长时间能成长为中高级工程师&#xff08;聊下来感觉大多数学生党就是焦虑&#xff0c;毕业即失业&#xff0c;尤其现在就业环境这么差&#xff09;&#xff0c;但聊到最后&#xff0c;很多…