c++ primer中文版第五版作业第十七章

仓库地址

文章目录

      • 17.1
      • 17.2
      • 17.3
      • 17.4
      • 17.5
      • 17.6
      • 17.7
      • 17.8
      • 17.9
      • 17.10
      • 17.11
      • 17.12
      • 17.13
      • 17.14
      • 17.15
      • 17.16
      • 17.17
      • 17.18
      • 17.19
      • 17.20
      • 17.21
      • 17.22
      • 17.23
      • 17.24
      • 17.25
      • 17.26
      • 17.27
      • 17.28
      • 17.29
      • 17.30
      • 17.31
      • 17.32
      • 17.33
      • 17.34
      • 17.35
      • 17.36
      • 17.37
      • 17.38
      • 17.39

17.1

tuple<int,int,int> it(10,20,30)

17.2

tuple<string,vector<string>,pair<string,int>> someval("hello",{"hi","hello"},{"hi",10})

17.3

TextQuery.h

#ifndef TEXT_QUERY_H
#define TEXT_QUERY_H
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <memory>
#include <fstream>
#include <tuple>
class TextQuery
{
public:using line_no=std::vector<std::string>::size_type;TextQuery(std::ifstream &);std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> query(const std::string &) const;
private:std::shared_ptr<std::vector<std::string>> file;std::map<std::string,std::shared_ptr<std::set<line_no>>> wm;
};
inline std::string make_plural(std::size_t count,const std::string &word,const std::string &ending)
{return (count>1)?word+ending:word;
}
std::ostream &print(std::ostream &,const std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> &);
#endif

TextQuery.cpp

#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <string>
#include <memory>
#include "TextQuery.h"
using namespace std;
TextQuery::TextQuery(ifstream &infile):file(new vector<string>)
{string text;while(getline(infile,text)){file->push_back(text);size_t line_number=file->size()-1;istringstream line(text);string word;while(line>>word){shared_ptr<set<line_no>> &lines=wm[word];if(!lines)lines.reset(new set<line_no>);lines->insert(line_number);}}
}
std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> TextQuery::query(const string &sought) const
{static shared_ptr<set<line_no>> nodata(new set<line_no>);map<string,shared_ptr<set<line_no>>>::const_iterator map_it=wm.find(sought);if(map_it==wm.end())return tuple(sought,nodata,file);elsereturn tuple(sought,map_it->second,file);
}
std::ostream &print(std::ostream &os,const std::tuple<std::string,std::shared_ptr<std::set<std::vector<std::string>::size_type>>,std::shared_ptr<std::vector<std::string>>> &tp)
{os<<std::get<0>(tp)<<" occurs "<<std::get<1>(tp)->size()<<" "<<make_plural(std::get<1>(tp)->size(),"time","s")<<std::endl;for(auto num:*(get<1>(tp)))os<<"\t(line "<<num+1<<")"<<*(get<2>(tp)->begin()+num)<<std::endl;return os;
}

17-3.cpp

#include <iostream>
#include <fstream>
#include "TextQuery.h"
using namespace std;
void runQueries(ifstream &infile)
{TextQuery tq(infile);while(true){cout<<"enter word to look for, or q to quit:";string s;if(!(cin>>s)||s=="q")break;print(cout,tq.query(s))<<endl;}
}
int main(int argc,char *argv[])
{ifstream infile(argv[1]);runQueries(infile);return 0;
}

使用tuple更便捷。

17.4

17-4.cpp

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <tuple>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
typedef tuple<vector<Sales_data>::size_type,vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator> matches;
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second)ret.push_back(make_tuple(it-files.cbegin(),found.first,found.second));}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<get<0>(store)<<" sales: "<<accumulate(get<1>(store),get<2>(store),Sales_data(s))<<endl;}}
}
int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.5

#include <iostream>
#include <fstream>
#include <string>
#include <utility>
#include <vector>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
typedef pair<vector<Sales_data>::size_type,pair<vector<Sales_data>::const_iterator,vector<Sales_data>::const_iterator>> matches;
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second)ret.push_back(make_pair(it-files.cbegin(),found));}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<store.first<<" sales: "<<accumulate(store.second.first,store.second.second,Sales_data(s))<<endl;}}
}int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.6

#include <iostream>
#include <fstream>
#include <string>
#include <utility>
#include <vector>
#include <algorithm>
#include <numeric>
#include "Sales_data.h"
using namespace std;
struct matches
{vector<Sales_data>::size_type index;vector<Sales_data>::const_iterator bg;vector<Sales_data>::const_iterator ed;
};
vector<matches> findBook(const vector<vector<Sales_data>> &files,const string &book)
{vector<matches> ret;matches tmp;for(auto it=files.cbegin();it!=files.cend();++it){auto found=equal_range(it->cbegin(),it->cend(),book,compareIsbn);if(found.first!=found.second){tmp={it-files.cbegin(),found.first,found.second};ret.push_back(tmp);}}return ret;
}
void reportResults(istream &in,ostream &os,vector<vector<Sales_data>> &files)
{string s;while(in>>s){auto trans=findBook(files,s);if(trans.empty()){cout<<s<<" not found in any stores"<<endl;continue;}for(auto const &store:trans){os<<"store "<<store.index<<" sales: "<<accumulate(store.bg,store.ed,Sales_data(s))<<endl;}}
}int main(void)
{vector<vector<Sales_data>> files;Sales_data tmp;ifstream in;string basename="text",line;for(size_t index=0;index!=3;++index){in.open(basename+to_string(index));vector<Sales_data> file;while(in>>tmp)file.push_back(tmp);in.close();files.push_back(file);}reportResults(cin,cout,files);return 0;
}

17.7

 使用tuple版本更便捷,使用pair版本稍微复杂一点,自己定义一个类的版本更自由。

17.8

 主要看类的默认构造函数和operator+是如何定义的,在我这里会得到错误的isbn。

17.9

  1. 64位的位集,低位为100000,其余高位为0.
  2. 32位的位集,低位为11110110100110110101,其余高位为0.
  3. 如果bstr包含0或1之外的其他字符,构造函数会抛出invalid_argument的异常。否则如果bstr长于8,位集将由bstr的前八位构成,如果bstr长度小于8,那么位集的低位将由bstr构成,而高位被置为0.

17.10

#include <iostream>
#include <bitset>
int main(void)
{std::bitset<22> a("1000000010000100101110");std::cout<<a<<std::endl;std::bitset<22> b;b^=~a;std::cout<<b<<std::endl;return 0;
}

17.11

 如果只记录真假的话,使用一个位即可记录一对真假,10个问题的真假测验的解答用unsigned char或者位字段或者bitset都可以。但是如果包含100道题的话,那么unsigned long long只保证至少64位,所以最好还是使用bitset或者位字段。

17.12

见此处

#include <iostream>
#include <bitset>
using namespace std;
void check(bitset<10> &question,size_t index,bool answ)
{question.set(index,answ);
}
int main(void)
{char ch;bool answ;bitset<10> question,grade,answer("1000100101");for(size_t i=0;i!=question.size();++i){cout<<"Enter the answer of question "<<i<<": ";cin.get(ch);if(ch=='1'||ch=='y'||ch=='Y')answ=1;elseansw=0;check(question,i,answ);}cout<<"question is:"<<question<<endl;grade=~(question^answer);cout<<"grade is:"<<grade<<endl;cout<<"一共得了(分):"<<grade.count()<<endl;return 0;
}

17.13

见17.12

17.14

#include <iostream>
#include <regex>
int main(void)
{try{std::regex r("[[:alnums:]].",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:]].\\",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:].",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}try{std::regex r("[[:alnum:]]\\.(aa|aA$",std::regex::icase);}catch(std::regex_error e){std::cout<<e.what()<<"\nerror code: "<<e.code()<<std::endl;}return 0;
}

17.15

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[[:alpha:]]*[^c]ei[[:alpha:]]*");std::smatch result;std::string tmp;std::cout<<"Enter a word: ";while(std::cin>>tmp){if(regex_match(tmp,result,r))std::cout<<"error word: "<<result.str()<<std::endl;elsestd::cout<<"right word: "<<tmp<<std::endl;std::cout<<"Enter a word: ";}return 0;
}

17.16

 如果使用[^c]ei进行初始化,那么此模式只能匹配首字母不是c的三个字母组成的单词,其余单词都不能匹配。

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[^c]ei");std::smatch result;std::string tmp;std::cout<<"Enter a word: ";while(std::cin>>tmp){if(regex_match(tmp,result,r))std::cout<<"error word: "<<result.str()<<std::endl;elsestd::cout<<"right word: "<<tmp<<std::endl;std::cout<<"Enter a word: ";}return 0;
}

17.17

#include <iostream>
#include <string>
#include <regex>
int main(void)
{std::regex r("[[:alpha:]]*[^c]ei[[:alpha:]]*",std::regex::icase);std::smatch result;std::string tmp,str;std::cout<<"Enter some word(ctrl+D to quit): ";while(std::cin>>tmp){tmp+=" ";str+=tmp;}std::cout<<"all the words wrong: ";for(std::sregex_iterator it(str.begin(),str.end(),r),end_it;it!=end_it;++it){std::cout<<it->str()<<" ";}std::cout<<std::endl;return 0;
}

17.18

 没看懂意思,如果只是单纯要排除某些指定的单词的话,在匹配之后输出之前判断一下这个单词是否是要排除的那些单词之一即可,但这并不是一个好办法。

17.19

 首先调用m[4].str()如果m[4]匹配了会返回一个包含输入中匹配部分的string,如果没有匹配就会返回空string。其次,由于||的短路求值属性,会先行判断m[4].matched==0,当它为false时表示m[4]已经匹配了。

17.20

#include <iostream>
#include <regex>
bool valid(const std::smatch &m)
{if(m[1].matched)return m[3].matched&&(m[4].matched==false ||m[4].str()==" ");elsereturn !m[3].matched && m[4].str()==m[6].str();
}
int main(void)
{std::string line;std::smatch m;std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");while(getline(std::cin,line)){for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){if(valid(*it))std::cout<<"valid: "<<it->str()<<std::endl;elsestd::cout<<"not valid: "<<it->str()<<std::endl;}}return 0;
}

17.21

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <regex>
using namespace std;
bool valid(const string &str);
string format(const string &str);
struct PersonInfo
{string name;vector<string> phones;
};
int main(int argc,char *argv[])
{string line,word;vector<PersonInfo> people;istringstream record;ifstream ifst(argv[1]);ofstream ofst(argv[2]);while(getline(ifst,line)){PersonInfo info;record.clear(record.rdstate()&~record.failbit&~record.eofbit);record.str(line);record>>info.name;while(record>>word)info.phones.push_back(word);people.push_back(info);}for(const auto &pi:people){ostringstream formatted,badnums;for(const auto &ph:pi.phones){if(!valid(ph))badnums<<" "<<ph;elseformatted<<" "<<format(ph);}if(badnums.str().empty())ofst<<pi.name<<" "<<formatted.str()<<endl;elsecerr<<"input error: "<<pi.name<<" invalid numbers "<<badnums.str()<<endl;}return 0;
}
//假设电话号码的格式11111111111或者111-1111-1111
bool valid(const string &str)
{regex r("^(\\d{3})(-)?(\\d{4})(-)?(\\d{4})$");smatch m;if(regex_match(str,m,r)){return m[2].matched==m[4].matched;}return false;
}
string format(const string &str)
{return str;
}

17.22

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <regex>
using namespace std;
bool valid(const smatch &);
string format(const string &str);
struct PersonInfo
{string name;vector<string> phones;
};
int main(int argc,char *argv[])
{regex r("(\\d{3})([[:space:]]*)(\\d{4})([[:space:]]*)(\\d{4})");string line,word;vector<PersonInfo> people;istringstream record;ifstream ifst(argv[1]);ofstream ofst(argv[2]);while(getline(ifst,line)){PersonInfo info;record.clear(record.rdstate()&~record.failbit&~record.eofbit);record.str(line);record>>info.name;getline(record,word);for(sregex_iterator it(word.begin(),word.end(),r),end_it;it!=end_it;++it)info.phones.push_back(it->str());people.push_back(info);}for(const auto &pi:people){ostringstream formatted,badnums;for(const auto &ph:pi.phones){formatted<<" "<<format(ph);}if(badnums.str().empty())ofst<<pi.name<<" "<<formatted.str()<<endl;elsecerr<<"input error: "<<pi.name<<" invalid numbers "<<badnums.str()<<endl;}return 0;
}
//假设电话号码的格式11111111111或者111 1111 1111或者111-1111-1111
string format(const string &str)
{return str;
}

17.23

#include <iostream>
#include <regex>
//格式为11111或者11111-1111或者111111111
int main(void)
{std::regex r("(\\d{5})([-])?(\\d{4})?");std::string line;while(getline(std::cin,line)){for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){if((*it)[3].matched)std::cout<<it->str(1)<<"-"<<it->str(3)<<std::endl;elsestd::cout<<it->str()<<std::endl;}}return 0;
}

17.24

#include <iostream>
#include <regex>
#include <string>
int main(void)
{std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string line;std::string fmt="$2.$5.$7 ";while(getline(std::cin,line)){std::cout<<regex_replace(line,r,fmt,std::regex_constants::format_no_copy)<<std::endl;}return 0;
}

17.25

#include <iostream>
#include <regex>
#include <string>
int main(void)
{std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string line;std::string fmt="$2.$5.$7";while(getline(std::cin,line)){std::cout<<regex_replace(line,r,fmt,std::regex_constants::format_no_copy|std::regex_constants::format_first_only)<<std::endl;}return 0;
}

17.26

#include <iostream>
#include <string>
#include <vector>
#include <regex>
int main(void)
{std::vector<std::vector<std::string>> result;std::regex r("(\\()?(\\d{3})(\\))?([-. ])?(\\d{3})([-. ])?(\\d{4})");std::string fmt="$2.$5.$7";std::string line;while(getline(std::cin,line)){std::vector<std::string> tmp;for(std::sregex_iterator it(line.begin(),line.end(),r),end_it;it!=end_it;++it){tmp.push_back(it->format(fmt));}if(!tmp.empty())result.push_back(tmp);}for(const auto &sv:result){if(sv.size()==1)std::cout<<sv[0];else{for(size_t index=1;index!=sv.size();++index)std::cout<<sv[index]<<" ";}std::cout<<std::endl;}return 0;
}

17.27

#include <iostream>
#include <regex>
#include <string>
//我也不知道邮编可能有哪些形式
//假设有111111111和1111-11111和1111 11111和1111.11111这些形式
int main(void)
{std::string line,fmt="$1-$3 ";std::regex r("(\\d{4})([-. ])?(\\d{5})");while(getline(std::cin,line)){line=std::regex_replace(line,r,fmt,std::regex_constants::format_no_copy);if(!line.empty())std::cout<<line<<std::endl;}return 0;
}

17.28

#include <iostream>
#include <random>
unsigned rad()
{static std::default_random_engine e;static std::uniform_int_distribution<unsigned> u;return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad()<<" ";std::cout<<std::endl;return 0;
}

17.29

#include <iostream>
#include <random>
#include <ctime>
unsigned rad(int sd=time(0))
{static std::default_random_engine e(sd);static std::uniform_int_distribution<unsigned> u;return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad()<<" ";std::cout<<std::endl;return 0;
}

17.30

#include <iostream>
#include <random>
#include <ctime>
unsigned rad(unsigned sd=time(0),unsigned min=0,unsigned max=9)
{static std::default_random_engine e(sd);static std::uniform_int_distribution<unsigned> u(min,max);return u(e);
}
int main(void)
{for(size_t i=0;i<100;++i)std::cout<<rad(1,1,10)<<" ";std::cout<<std::endl;return 0;
}

17.31

 如果循环内定义b、e,那么每步循环都会创建一个新引擎及分布对象,从而每步循环都会生成相同的值。

17.32

 如果在循环内定义resp,那么在while条件判断时resp已经不在其作用域。

17.33

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <map>
#include <stdexcept>
#include <random>
#include <vector>
#include <ctime>
using namespace std;
std::default_random_engine e(time(0));
std::uniform_int_distribution<unsigned> d;
map<string,vector<string>> buildMap(ifstream &map_file)
{map<string,vector<string>> trans_map;string key,value;while(map_file>>key&&getline(map_file,value)){if(value.size()>1)trans_map[key].push_back(value.substr(1));elsethrow runtime_error("no rule for "+key);}return trans_map;
}
const string & transform(const string &str,map<string,vector<string>> &m)
{auto map_it=m.find(str);if(map_it==m.end())return str;else{return map_it->second[d(e)%(map_it->second.size())];}
}
void word_transform(ifstream &map_file,ifstream &input)
{auto trans_map=buildMap(map_file);string text;while(getline(input,text)){istringstream stream(text);string word;bool firstword=true;while(stream>>word){if(firstword)firstword=false;elsecout<<" ";cout<<transform(word,trans_map);}cout<<endl;}
}
int main(int argc,char *argv[])//第一个参数是map文件,第二个参数是源文本文件
{ifstream map_file(argv[1]);ifstream input(argv[2]);word_transform(map_file,input);return 0;
}

17.34

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{int i=19;int a=-19;double b=sqrt(2);bool c=true;std::cout<<std::boolalpha<<c<<std::noboolalpha<<std::endl;std::cout<<std::showbase<<std::hex<<i<<std::noshowbase<<std::dec<<std::endl;std::cout<<std::setprecision(12)<<std::scientific<<std::uppercase<<b<<std::endl;std::cout<<std::setw(15)<<std::internal<<a<<std::ends<<'\n';return 0;
}

17.35

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{std::cout<<std::hexfloat<<std::uppercase<<sqrt(2)<<std::ends<<'\n';return 0;
}

17.36

#include <iostream>
#include <iomanip>
#include <cmath>
int main(void)
{std::cout<<std::setw(16)<<sqrt(2)<<std::endl;std::cout<<std::setw(16)<<sqrt(3)<<std::endl;std::cout<<std::setw(16)<<sqrt(5)<<std::endl;std::cout<<std::setw(16)<<sqrt(7)<<std::endl;std::cout<<std::setw(16)<<sqrt(113)<<std::endl;return 0;
}

17.37

 一行的长度超过传递给getline的字符数组的大小时,会导致输入流的条件状态被置为错误,导致后续读入失败。
见此处

#include <iostream>
#include <fstream>
int main(int argc,char *argv[])
{std::ifstream in(argv[1]);char *str=new char[100];while(in.getline(str,100,'\n')){std::cout.write(str,in.gcount());std::cout<<'\n';}delete [] str;
}

17.38

见17.37

17.39

#include <iostream>
#include <fstream>
int main(int argc,char *argv[])
{int ch=0;size_t cnt=0;std::fstream inout(argv[1],std::fstream::ate|std::fstream::in|std::fstream::out);if(!inout){std::cerr<<"Unable to open the file!"<<std::endl;return EXIT_FAILURE;}std::fstream::pos_type end_mark=inout.tellg();inout.seekp(-1,std::fstream::end);inout<<'\n';inout.seekg(0,std::fstream::beg);while(inout&&inout.tellg()!=end_mark){ch=inout.get();++cnt;if(ch=='\n'){auto mark=inout.tellg();inout.seekp(0,std::fstream::end);inout<<cnt;if(inout.tellg()!=end_mark)inout<<" ";inout.seekg(mark);}}inout.seekp(0,std::fstream::end);inout<<'\n';return 0;
}

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

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

相关文章

安全加速SCDN是服务器防御攻击较佳方案

国家互联网应急中心的数据研究显示&#xff0c;基于漏洞、病毒、未知威胁的攻击正日益频繁且智能化&#xff0c;网络安全的防护难度也与日俱增&#xff0c;未来应用层攻击将成为主流。互联网飞速发展之余&#xff0c;对于网络安全的需求也越来越大&#xff0c;网络攻击的手段也…

<商务世界>《第8课 Leads——MQL——SQL——商机——成交》

1 各种概念 英文缩写概念Traffic流量Leads潜在客户&#xff0c;销售线索&#xff1b;简称潜在线索MQLMarketing-Qualified Leads市场认可线索SQLSales-Qualified Leads销售认可线索OPPOpportunity商机Account成单客户 2 线索到商机 一般企业会把自身线索进行如下的划分&…

【电工学笔记】上册第一、二章

电工学 上次考试败在了单位&#xff0c;这次单位 一定要记熟。 第一章 电源或信号源的电压或电流称为激励,它推动电路工作; 由激励所产生的电压和电流称为响应。 复杂电路中,一般无法事先判断某个支路电流的 实际方向或者某个电路元件电压的实际方向 140V/4算不出总电阻的 …

Linux setup命令教程:如何配置系统设置和硬件(附实例详解和注意事项)

Linux setup命令介绍 setup 命令用于配置系统的硬件和软件设置。它允许用户在安装后更改系统设置&#xff0c;例如键盘布局、时区、网络配置等。此命令通常在安装新系统后运行&#xff0c;但也可以在之后随时使用。 Linux setup命令适用的Linux版本 setup 命令在不同的Linux…

数据结构面试常见问题

数据结构面试常见问题 什么是 AVL 树&#xff1f;什么是红黑树&#xff1f;AVL 树和红黑树的区别&#xff1f;B 树和B 树的区别&#xff1f;排序有哪些分类&#xff1f;直接插入排序的原理&#xff1f;希尔排序的原理&#xff1f;直接选择排序的原理&#xff1f;堆排序的原理&a…

vue3的开发小技巧

「总之岁月漫长&#xff0c;然而值得等待。」 目录 父组件调用子组件函数如何访问全局api 父组件调用子组件函数 ref, defineExpose //父组件 代码 <child ref"ch">this.$refs.ch.fn();//子组件 函数抛出 const fn () > { }; defineExpose({ fn });如何…

考研复习C语言初阶(3)

目录 一.函数是什么? 二.C语言中函数的分类 2.1库函数 2.2自定义函数 三.函数的参数 3.1实际参数&#xff08;实参&#xff09; 3.2 形式参数&#xff08;形参&#xff09; 四.函数的调用 4.1 传值调用 4.2 传址调用 五. 函数的嵌套调用和链式访问 5.1 嵌套调用 5…

瑞芯微 | I2S-音频基础分享

1. 音频常用术语 名称含义ADC&#xff08;Analog to Digit Conversion&#xff09;模拟信号转换为数字信号AEC&#xff08;Acoustic Echo Cancellor&#xff09;回声消除AGC&#xff08;Automatic Gain Control&#xff09;自动增益补偿&#xff0c;调整MIC收音量ALSA&#xf…

Jmeter常用组件的使用场景

一.在一段时间内持续发送请求 此场景可以用于稳定性测试&#xff0c;在稳定性测试中&#xff0c;通常需要持续压测几个小时甚至几天时间&#xff0c;查看接口是否有报错&#xff0c;或者cpu、内存会上涨&#xff0c;此时就需要通过控制持续时间来达到此目的。 1.创建线程组&am…

基于SSM的校园疫情管理系统的设计与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的校园疫情管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;…

powershell远程拷贝文件到windows 服务器

在PowerShell中&#xff0c;如果你要在本地机器和远程Windows服务器之间拷贝文件&#xff0c;可以使用Copy-Item命令配合Invoke-Command&#xff08;对于远程执行&#xff09;或New-PSSession&#xff08;用于创建持久会话后传输文件&#xff09;。这里是一个使用Copy-Item通过…

CCCorelib 八叉树圆柱邻域查询(CloudCompare内置算法库)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 与CloudCompare&PCL 点云圆柱邻域搜索类似,这里使用八叉树提取某一指定圆柱邻域内的点集, 其原理很简单,主要分为三个步骤: 1、首先根据圆柱的中心和轴向,对点云进行平面(轴向)投影。为了加速这一个过程…

【网络层】IP多播技术的相关基本概念(湖科大慕课自学笔记)

IP多播 1&#xff1a;IP多播技术的相关基本概念 我们简单举例&#xff0c;如下图所示&#xff1a; 一共有60个主机要接受来自视频服务器的同一个节目&#xff0c;如果采用单播方式&#xff0c;则视频服务器要发送60份&#xff0c;这些视频节目通过路由器的转发&#xff0c;最…

CentOS7 利用remi yum源安装php8.1

目录 前言remi yum源remi yum源 支持的操作系统remi yum源 支持的php版本 安装epel源安装remi源安装 php8.1查看php版本查看php-fpm服务启动php-fpm服务查看php-fpm服务运行状态查看php-fpm服务占用的端口查看 php8.1 相关的应用 前言 CentOS Linux release 7.9.2009 (Core) …

[Angular 基础] - Observable

[Angular 基础] - Observable 之前的笔记&#xff1a; [Angular 基础] - service 服务[Angular 基础] - routing 路由(上)[Angular 基础] - routing 路由(下) 我以前对 Observable 的理解是 Promise 的一个超集&#xff0c;重新了解了一下&#xff0c;感觉这个说法不太对。更…

2024最新版CleanMyMac X 4.15.1 Crack+激活码下载

CleanMyMac X 为您喜爱的事物腾出空间。 CleanMyMac 具有一系列巧妙的新功能&#xff0c;可让您安全、智能地扫描和清理整个系统、删除大型未使用的文件、减小 iPhoto 图库的大小、卸载不需要的应用程序或修复开始工作不正常的应用程序、管理所有应用程序您可以从一个地方进行扩…

【牛客】HJ87 密码强度等级 CM62 井字棋

题目一:密码强度等级 题目链接&#xff1a;密码强度等级_牛客题霸_牛客网 (nowcoder.com) 本题主要考察C语言中逻辑分支语句&#xff0c;基本语句以及对各种特殊字符 &#xff0c;ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解&#xff0c;以及基本使用&#x…

MySQL安装使用(mac)

目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12&#xff0c;所以选择了8.0.30 下载完成之后&#xff0c;打开安装&#xff0c;一直下一步安装完成&#xff0c;在最后安装完成时&#xff0c;会弹出…

QWebEngineView的load和seturl函数

QString str "https://www.boost.org/"; QUrl url(str);//url类型转换&#xff0c;不要忘了。QWebEngineView *wbgt new QWebEngineView(); //load()使用方法 wbgt->load(url); wbgt->show();//seturl()使用方法 wbgt->seturl(url); wbgt->show();从测…

项目验收总结

目录 一. 前置工作 二. 验收会现场 2.1 会议签到 2.2 项目验收PPT讲解 2.3 系统演示 2.4 意见 三. 项目总结报告 3.1 项目总结概述 3.2 项目完成度 3.3 项目管理 四. 验收材料清单 4.1 验收合格确认书(验收单) 4.2 项目验收总结报告 4.3 一些主要内容 五. 思维导图 一. …