让我们想看看二元四则运算都需要实现什么:

(1) 定制题目数量

(2) 是否有乘除法

(3) 题目数值范围

(4) 加减有无负数

(5) 除法有无余数

(6) 是否支持分数(真分数、假分数…)

(7) 是否支持小数(精确到多少位?)

(8) 打印中每行的间隔

为了实现以上功能,并且为了便于后期实现功能拓展,我们可以将其封装成类,通过在外界设置类的参数,实现不同的功能。可以将类定义如下:

 class CTitle
{
public:
CTitle();
~CTitle();
void setTitleCount(int titleCount); // 设置题量
void setMD(int hasMD); // 设置乘除法
void setBracket(int hasBracket); // 设置括号
void setNumRand(int numRand); // 设置数值范围
void setMinus(int hasMinus); // 设置负号
void setResidue(int hasResidue); // 设置余数
void setFraction(int hasFraction); // 设置分数
void setFractionType(int fractionType); // 设置是否支持假分数
void setDecimal(int hasDecimal); // 设置小数
void setDecimalLong(int decimalLong); // 设置小数位数
void newTitle(); // 新建题目
private:
int titleCount; // 题目数量
int hasMD; // 是否有乘除法
int hasBracket; // 是否有括号
int numRand; // 数值范围
int hasMinus; // 加减有无负数
int hasResidue; // 除法有无余数
int hasFraction; // 是否支持分数
int fractionType; // 是否支持假分数
int hasDecimal; // 是否支持小数
int decimalLong; // 小数位数
int decimalLongPow; // 小数位数 void newIntegerFormula(); // 新建整数运算公式
void newDecimalFormula(); // 新建小数运算公式
void newFractionFormula(); // 新建分数运算公式
void recordTitle(string szTitle); // 记录题目至文件
void recordAnswer(string szAnswer); // 记录答案至文件
void reduceFraction(int &nume, int &deno);// 化简分数
};

接下来,我们需要实现类的功能接口,并且对类的属性实现初始化

 CTitle::CTitle()
{
titleCount = ; // 题量
hasMD = ; // 是否有乘除法
numRand = ; // 数值范围
hasMinus = ; // 加减有无负数
hasResidue = ; // 除法有无余数
hasFraction = ; // 是否支持分数
fractionType = ; // 是否支持假分数
hasDecimal = ; // 是否支持小数
decimalLong = ; // 小数位数
decimalLongPow = ; // 小数位数
}
CTitle::~CTitle()
{
}
// 设置行间距
void CTitle::setTitleCount(int titleCount)
{
this->titleCount = titleCount;
}
// 设置乘除法
void CTitle::setMD(int hasMD)
{
this->hasMD = hasMD;
}
// 设置数值范围
void CTitle::setNumRand(int numRand)
{
this->numRand = numRand;
}
// 设置负号
void CTitle::setMinus(int hasMinus)
{
this->hasMinus = hasMinus;
}
// 设置余数
void CTitle::setResidue(int hasResidue)
{
this->hasResidue = hasResidue;
}
// 设置分数
void CTitle::setFraction(int hasFraction)
{
this->hasFraction = hasFraction;
}
// 设置是否支持假分数
void CTitle::setFractionType(int fractionType)
{
this->fractionType = fractionType;
}
// 设置小数
void CTitle::setDecimal(int hasDecimal)
{
this->hasDecimal = hasDecimal;
}
// 设置小数位数
void CTitle::setDecimalLong(int decimalLong)
{
this->decimalLong = decimalLong;
this->decimalLongPow = pow(, decimalLong);
}

接着,我们为类添加方法,让类可以按需求生成不同类型的运算题目。那么,如何才能使类可以随机生成不同类型的运算呢?通过对题目进行分析,我们发现所有可能出现的运算类型共有4中,他们分别是:

(1)整数运算

(2)整数运算 & 小数运算

(3)整数运算 & 分数运算

(4)整数运算 & 分数运算 & 小数运算

 void CTitle::newTitle()
{
srand(time());
int numType = + hasDecimal + hasFraction;
int titleType = ;
for (int i = ; i < titleCount; i++)
{
switch(numType)
{
// 运算中仅有整数运算
case :
newIntegerFormula();
break;
// 运算中包含包含两种运算,整数+小数 或 整数+分数
case :
titleType = rand() % + ;
if (titleType == )
{
newIntegerFormula();
}
else
{
if (hasDecimal == )
{
newDecimalFormula();
}
else if (hasFraction == )
{
newFractionFormula();
}
}
break;
// 运算中包含小数运算和分数运算
case :
titleType = rand() % + ;
if (titleType == )
{
newIntegerFormula();
}
else if (titleType == )
{
newDecimalFormula();
}
else
{
newFractionFormula();
}
break;
}
}
}

接下来我们需要解决的问题就是如何生成整数运算、小数运算以及分数运算并计算其结果。在本例中,我们用文件分别对运算表达式和运算结果进行存储。将表达式存储于Title.txt文件内,将运算结果存储于Answer.txt文件内。

所以,我们先要在Ctitle的构造函数内加入如下代码,以保证每次类初始化时文件内容会被清空。

 FILE *fp = NULL;
errno_t err;
if ((err = fopen_s(&fp, "Title.txt", "w")) == )
{
fclose(fp);
}
if ((err = fopen_s(&fp, "Answer.txt", "w")) == )
{
fclose(fp);
}

并且增加写入表达式和写入答案的方法

 //    记录题目至文件
void CTitle::recordTitle(string szTitle)
{
FILE *fp = NULL;
errno_t err;
if ((err = fopen_s(&fp, "Title.txt", "a")) == )
{
fprintf_s(fp, "%s\n", szTitle.c_str());
fclose(fp);
}
}
// 记录答案至文件
void CTitle::recordAnswer(string szAnswer)
{
FILE *fp = NULL;
errno_t err;
if ((err = fopen_s(&fp, "Answer.txt", "a")) == )
{
fprintf_s(fp, "%s\n", szAnswer.c_str());
fclose(fp);
}
}

接下来我们实现创建整数运算的方法,在这里与要注意以下问题:

(1)除法运算时,除数不能为0

(2)若运算不能还有余数,要保证生成的除法运算均可以整除

(3)若运算可以还有余数,要保证生成的结果为: 5 ÷ 2 = 2...1 ,而非2.5

 //    新建整数运算公式
void CTitle::newIntegerFormula()
{
string szTitle = "";
string szAnswer = "";
char caTitle[] = { "" };
char caAnswer[] = { "" };
int num1 = rand() % numRand + ;// 随机整数1,默认是正数
int num2 = rand() % numRand + ;// 随机整数2,默认是正数
int op = rand() % + ; // 运算符,默认仅有加减运算
// 设置四则运算
if (hasMD == )
{
op = rand() % + ;
}
switch (op)
{
case :
// 加减运算中包含负数
if (hasMinus == )
{
num1 = rand() % (numRand * ) - numRand;
num2 = rand() % (numRand * ) - numRand;
}
if (num2 < )
{
// 记录题目
sprintf_s(caTitle, "%d+(%d)", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1+num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
else
{
// 记录题目
sprintf_s(caTitle, "%d+%d", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1 + num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
break;
case :
// 加减运算中包含负数
if (hasMinus == )
{
num1 = rand() % (numRand * ) - numRand;
num2 = rand() % (numRand * ) - numRand;
}
if (num2 < )
{
// 记录题目
sprintf_s(caTitle, "%d-(%d)", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1 - num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
else
{
// 记录题目
sprintf_s(caTitle, "%d-%d", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1 - num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
break;
case :
// 记录题目
sprintf_s(caTitle, "%d×%d", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1 * num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
break;
case :
// 除数为0
while (num2 == )
{
num2 = rand() % numRand + ;
}
// 无余数的除法
if(hasResidue == )
{
// 保证可以整除
while (num1 % num2 != )
{
num1 = rand() % numRand + ;
}
// 记录题目
sprintf_s(caTitle, "%d÷%d", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d", num1 / num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
// 有余数的除法
else
{
// 记录题目
sprintf_s(caTitle, "%d÷%d", num1, num2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%d...%d", num1 / num2, num1 % num2);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
break;
} }

接下来实现小数运算,在这里,小数的位数是可以自主选定的,所以如果小数位数选择的是2位,那么在记录如文件时也要保证多余位数不会被记录。如double类型默认写入文件是2.510000,那我们只能保留2.51,并将保留后的结果写入文件。

 //    新建小数运算公式
void CTitle::newDecimalFormula()
{
string szTitle = "";
string szAnswer = "";
string szOp = "";
string szNum1 = "";
string szNum2 = "";
char caTitle[] = { "" };
char caAnswer[] = { "" };
char caNum1[] = { "" };
char caNum2[] = { "" };
double dAnswer = ;
int num1 = rand() % numRand + ;// 随机整数1,默认是正数
int num2 = rand() % numRand + ;// 随机整数2,默认是正数
double dotNum1 = (rand() % (decimalLongPow) +);// 随机小数1
double dotNum2 = (rand() % (decimalLongPow)+);// 随机小数2
int op = rand() % + ; // 运算符,默认仅有加减运算
dotNum1 = dotNum1 / decimalLongPow;
dotNum2 = dotNum2 / decimalLongPow;
sprintf_s(caNum1, "%lf", num1 + dotNum1);
szNum1 += caNum1;
szNum1 = szNum1.substr(, szNum1.length() - + decimalLong);
sprintf_s(caNum2, "%lf", num2 + dotNum2);
szNum2 += caNum2;
szNum2 = szNum2.substr(, szNum2.length() - + decimalLong);
// 设置四则运算
if (hasMD == )
{
op = rand() % + ;
}
switch (op)
{
case :
// 加减运算中包含负数
if (hasMinus == )
{
num1 = rand() % (numRand * ) - numRand;
num2 = rand() % (numRand * ) - numRand;
szNum1 = "";
szNum2 = "";
sprintf_s(caNum1, "%lf", num1 + dotNum1);
szNum1 += caNum1;
szNum1 = szNum1.substr(, szNum1.length() - + decimalLong);
sprintf_s(caNum2, "%lf", num2 + dotNum2);
szNum2 += caNum2;
szNum2 = szNum2.substr(, szNum2.length() - + decimalLong);
}
if (num2 < )
{
// 记录题目
szOp = "+";
szNum2 = "(" + szNum2 + ")";
// 记录答案
dAnswer = num1 + dotNum1 + num2 + dotNum2;
}
else
{
// 记录题目
szOp = "+";
// 记录答案
dAnswer = num1 + dotNum1 + num2 + dotNum2;
}
break;
case :
// 加减运算中包含负数
if (hasMinus == )
{
num1 = rand() % (numRand * ) - numRand;
num2 = rand() % (numRand * ) - numRand;
szNum1 = "";
szNum2 = "";
sprintf_s(caNum1, "%lf", num1 + dotNum1);
szNum1 += caNum1;
szNum1 = szNum1.substr(, szNum1.length() - + decimalLong);
sprintf_s(caNum2, "%lf", num2 + dotNum2);
szNum2 += caNum2;
szNum2 = szNum2.substr(, szNum2.length() - + decimalLong);
}
if (num2 < )
{
// 记录题目
szOp = "-";
szNum2 = "(" + szNum2 + ")";
// 记录答案
dAnswer = num1 + dotNum1 - num2 - dotNum2;
}
else
{
// 记录题目
szOp = "-";
// 记录答案
dAnswer = num1 + dotNum1 - num2 - dotNum2;
}
break;
case :
// 记录题目
szOp = "×";
// 记录答案
dAnswer = (num1 + dotNum1) * (num2 + dotNum2);
break;
case :
// 除数为0
while (num2 == && dotNum2 == )
{
num2 = rand() % numRand + ;
dotNum2 = (rand() % (decimalLong)+);
}
// 记录题目
szOp = "÷";
// 记录答案
dAnswer = (num1 + dotNum1) / (num2 + dotNum2);
break;
}
// 记录题目
szTitle = szNum1 + szOp + szNum2;
recordTitle(szTitle);
// 记录答案
sprintf_s(caAnswer, "%lf", dAnswer);
szAnswer += caAnswer;
szAnswer = szAnswer.substr(, szAnswer.length() - + decimalLong);
recordAnswer(szAnswer); }

最后需要进行的就是生成分数,在这里,我们需要注意:

(1)是否进行假分数的运算

(2)要对分数的运算结果进行约分,将分数化为最简。并且将假分数化简。如5/2要化简为2‘1/2(二又二分之一)

 //    新建分数运算
void CTitle::newFractionFormula()
{
string szTitle = "";
string szAnswer = "";
char caTitle[] = { "" };
char caAnswer[] = { "" };
int deno1 = rand() % numRand + ;// 随机分母1,默认是正数
int deno2 = rand() % numRand + ;// 随机分母2,默认是正数
int nume1 = rand() % numRand + ;// 随机分子1,默认是正数
int nume2 = rand() % numRand + ;// 随机分子2,默认是正数
int nweNume = ;
int nweDeno = ;
// 支持假分数
if (fractionType == )
{
// 分母为0或1
while (deno1 == || deno1 == )
{
deno1 = rand() % numRand + ;
}
while (deno2 == || deno1 == )
{
deno2 = rand() % numRand + ;
}
}
// 不支持假分数
if (fractionType == )
{
// 分母为0或1
while (nume1 == || nume1 == )
{
nume1 = rand() % numRand + ;
}
while (nume2 == || nume2 == )
{
nume2 = rand() % numRand + ;
}
if (deno1 < nume1)
{
int temp = deno1;
deno1 = nume1;
nume1 = temp;
}
if (deno2 < nume2)
{
int temp = deno2;
deno2 = nume2;
nume2 = temp;
}
}
int op = rand() % + ; // 运算符,默认仅有加减运算
// 设置四则运算
if (hasMD == )
{
op = rand() % + ;
}
switch (op)
{
case :
// 记录题目
sprintf_s(caTitle, "%d/%d+%d/%d", nume1, deno1, nume2, deno2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
nweNume = nume1*deno2 + deno1*nume2;
nweDeno = deno1*deno2;
break;
case :
// 记录题目
sprintf_s(caTitle, "%d/%d-%d/%d", nume1, deno1, nume2, deno2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
nweNume = nume1*deno2 - deno1*nume2;
nweDeno = deno1*deno2;
reduceFraction(nweNume, nweDeno);
break;
case :
// 记录题目
sprintf_s(caTitle, "%d/%d×%d/%d", nume1, deno1, nume2, deno2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
nweNume = nume1*nume2;
nweDeno = deno1*deno2;
break;
case :
// 记录题目
sprintf_s(caTitle, "%d/%d÷%d/%d", nume1, deno1, nume2, deno2);
szTitle += caTitle;
recordTitle(szTitle);
// 记录答案
nweNume = nume1*deno2;
nweDeno = deno1*nume2;
break;
}
reduceFraction(nweNume, nweDeno); // 化简
if (nweNume == )
{
recordAnswer("");
}
else if (nweDeno == )
{
sprintf_s(caAnswer, "%d", nweNume);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
else if (nweNume < nweDeno)
{
sprintf_s(caAnswer, "%d/%d", nweNume, nweDeno);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
else if (nweNume > nweDeno)
{
if (nweNume%nweDeno != )
{
sprintf_s(caAnswer, "%d'%d/%d", nweNume / nweDeno, nweNume%nweDeno, nweDeno);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
else
{
sprintf_s(caAnswer, "%d", nweNume / nweDeno);
szAnswer += caAnswer;
recordAnswer(szAnswer);
}
}
else
{
recordAnswer("");
}
}
// 化简分数
void CTitle::reduceFraction(int &nume, int &deno)
{
int temp;
int a = nume;
int b = deno;
int gcd = ; // 最大公约式
if (a < b)
{
temp = a;
a = b;
b = temp;
}
while (b != )
{
temp = a % b;
a = b;
b = temp;
}
gcd = a;
nume = nume / gcd;
deno = deno / gcd;
}

至此,我们的类就编写完成了。接下来只需要在主函数生成类,并进行类方法的调用就行了。

 #include "iostream"
#include "time.h"
#include "CTitle.h"
#include "CTitle.h"
using namespace std;
void setting();
CTitle title;
int lineSpacing = ;
int main()
{
setting();
title.newTitle();
// 从文件打印题目
FILE *fp = NULL;
FILE *fp2 = NULL;
errno_t err;
char caTitle[];
char caAnsewr[];
char myansewr[];
int mark = ;
if ((err = fopen_s(&fp, "Title.txt", "r")) == && (err = fopen_s(&fp2, "Answer.txt", "r")) == )
{
// 读取题目
while ((fscanf_s(fp, "%s", caTitle, ) != EOF))
{
// 读取答案
fscanf_s(fp2, "%s", caAnsewr, );
do
{
cout << caTitle << " = ";
cin >> myansewr;
if (strcmp(myansewr, caAnsewr) == )
{
cout << "√" << endl;
mark = ;
}
else
{
cout << "×" << endl;
mark = ;
}
for (int i = ; i < lineSpacing; i++)
{
cout << endl;
}
} while (mark == );
}
cout << "恭喜你完成今日作业" << endl;
}
return ;
}
void setting()
{
int input = ;
cout << "请完成如下设置" << endl;
cout << "设置今日题量:";
cin >> input;
title.setTitleCount(input);
cout << endl;
cout << "设置数值范围绝对值:";
cin >> input;
title.setNumRand(input);
cout << endl;
do
{
cout << "加减有无负数,1有0无:";
cin >> input;
}
while (input != && input != );
title.setMinus(input);
cout << endl;
do
{
cout << "是否有乘除法,1有0无:";
cin >> input;
}
while (input != && input != );
title.setMD(input);
cout << endl;
if (input == )
{
do
{
cout << "整数除法有无余数,1有0无:";
cin >> input;
}
while (input != && input != );
title.setResidue(input);
cout << endl;
} do
{
cout << "是否支持小数,1有0无:";
cin >> input;
}
while (input != && input != );
title.setDecimal(input);
cout << endl;
if (input == )
{
cout << "设置小数位数(1~5):";
cin >> input;
title.setDecimalLong(input);
cout << endl;
}
do
{
cout << "是否支持分数,1有0无:";
cin >> input;
}
while (input != && input != );
title.setFraction(input);
cout << endl;
if (input == )
{
cout << "设置是否支持假分数,1有0无:";
cin >> input;
title.setFractionType(input);
cout << endl;
}
cout << "设置打印行间隔:";
cin >> input;
lineSpacing = input;
cout << endl;
}

恩,对于这一次的作业,我只完成了二元式的生成和运算,没有涉及到多元式,所以没有写上括号生成与运算的问题。本来只是想简单写写,好久没有用C++写过程序了,没想到写着写着就写了这么多行,但好像也没有实现什么功能,只是保证了最基础的运行。还是要继续提升啊。

用C++实现简单随机二元四则运算的更多相关文章

  1. 基于c编写的关于随机生成四则运算的小程序

    基于http://www.cnblogs.com/HAOZHE/p/5276763.html改编写的关于随机生成四则运算的小程序 github源码和工程文件地址:https://github.com/ ...

  2. js实现随机的四则运算题目

    老师给出的题,写一个小程序,可以生成随机的四则运算题目给给小学生用.以前自己就写了一个四则运算的简单js小程序,是这样的: 事件 + - * / 这是个自己输入的算法,但要求是自动产生随机数.于是我用 ...

  3. 结对作业——随机生成四则运算(Core 第7组)

    结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...

  4. 【ML系列】简单的二元分类——Logistic回归

    对于了解机器学习中二元分类问题的来源与分析,我认为王树义老师这篇文章讲的非常好,通俗且易懂: http://blog.sciencenet.cn/blog-377709-1121098.html 但王 ...

  5. 软件工程课堂作业(二)续——升级完整版随机产生四则运算题目(C++)

    一.设计思想: 1.根据题目新设要求,我将它们分为两类:一类是用户输入数目,根据这个数目改变一系列后续问题:另一类是用户输入0或1,分情况解决问题. 2.针对这两类要求,具体设计思路已在上篇博文中写出 ...

  6. 第二篇——VC++简单随机四则运算

    目标:编写最简单的四则运算,类似A+B=C: 想法:建立一个Win32控制台应用程序,A和B用随机数表示,运算符号用0~3的数字对应,然后计算并输出即可: 具体过程: 利用函数rand(),返回一个0 ...

  7. 小学生二元四则运算(F)

      整体功能简介: 1.题目不重复: 2.可以定制数量: 3.可以自己选择输入范围: 4.可以选择是否添加乘除法: 5.可以选择除法结果是取整或商加余数形式表示或小数方式(默认小数点后两位)表示: 6 ...

  8. 用Java随机生成四则运算

    代码链接:https://github.com/devilwjy/Code.Demo 需求分析: 1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符 ...

  9. C语言编写的随机产生四则运算测试题

    题目:编写一个四则运算测试题的程序,要求每道题都要随机产生 解题思路: 1.编写测试题,且为30道,就要用到循环函数,因此想到用for()函数 2.随机产生两个数,就想到用rand()函数. 注:1. ...

随机推荐

  1. MongoDB DBA 实践4-----创建复制集

    一.复制 复制允许多个数据库服务器共享相同数据的功能,从而确保冗余并促进负载平衡 1.数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务 ...

  2. python七类之集合

    集合 一.关键字 : set 定义是 s = {}    #当里面没有元素的时候​​表现为字典数据类型 s = {} #空的{}代表空的字典,而不是集合 print(type(s)) 集合是不可哈希的 ...

  3. 如何通过SQL语句写入webshell

    在web应用场景下,经常会碰到SQL注入场景,如页面能够执行SQL语句,那么可能会有直接通过SQL语句写入webshell的风险,常见的phpmyadmin环境下,通过几个语句可以轻松将一句话木马写入 ...

  4. ubuntu系统部署python3.6.4

    Ubuntu的版本为16.04,系统自带的Python版本较低,使用亲本版本3.6.4,下为安装步骤: 一.官网下载Python3.6.4版本 新建目录: sudo mkidr /usr/local/ ...

  5. Kafka跨网络访问设置

    实际场景: kafka应用通过docker进行部署并暴露出不同kafka节点到不同的指定端口: 业务系统通过虚拟机进行部署: docker宿主机与业务系统在同一个局域网: 报错: 业务系统连接kafk ...

  6. 20155313 实验三《Java面向对象程序设计》实验报告

    一.实验内容 XP基础 XP核心实践 相关工具 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器>课程 2.完成实验.撰写实验报 ...

  7. 多级反馈序列c语言模拟实现

    多级反馈队列调度算法: 1.设置多个就绪队列,并给队列赋予不同的优先级数,第一个最高,依次递减. 2.赋予各个队列中进程执行时间片的大小,优先级越高的队列,时间片越小. 3.当一个新进程进入内存后,首 ...

  8. python中快速获取本地时区当天0点时间戳的一种方法

    如下所示,看了网上的几种方法,这种方法算是代码量比较小的,同时可以保证求的是本地时区的0点时间戳,返回的是浮点数,需要的话自己转一下int In [1]: import time In [2]: fr ...

  9. 1116: [POI2008]CLO

    1116: [POI2008]CLO https://lydsy.com/JudgeOnline/problem.php?id=1116 分析: 单独考虑每个联通块的情况. 设这个联通块里有n个点,那 ...

  10. 关于解决idea 输入法不跟随问题

    网上查了很多方法  自己试验了一种方式 jdk版本采用的是 java version "1.8.0_191"Java(TM) SE Runtime Environment (bui ...