【一】【算法分析与设计】基础测试

news2024/11/16 3:48:26

排列式

题目描述

  7254是一个不寻常的数,因为它可以表示为7254 = 39 x 186,这个式子中1~9每个数字正好出现一次

  输出所有这样的不同的式子(乘数交换被认为是相同的式子)

  结果小的先输出;结果相同的,较小的乘数较小的先输出。

输入描述:

  每一行输出一个式子,式子中的等号前后空格、乘号(用字母x代表)前后空格

  较小的乘数写在前面

输出描述:

示例1

输入

输出

4396 = 28 x 157

5346 = 18 x 297

5346 = 27 x 198

5796 = 12 x 483

5796 = 42 x 138

6952 = 4 x 1738

7254 = 39 x 186

7632 = 48 x 159

7852 = 4 x 1963

 
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

bool isValid(int a, int b, int c) {
        int count[10] = {0}; // 0-9的计数器,0位置不使用
        while (a > 0) { count[a % 10]++; a /= 10; }
        while (b > 0) { count[b % 10]++; b /= 10; }
        while (c > 0) { count[c % 10]++; c /= 10; }
        for (int i = 1; i <= 9; i++) {
                if (count[i] != 1) return false; // 检查1-9是否每个恰好出现一次
        }
        return count[0] == 0; // 确保数字0没有出现
}

int main() {
        for (int i = 1234; i <= 9876; i++) {
                for (int j = 2; j <= sqrt(i); j++) {
                        if (i % j == 0) {
                                int k = i / j;
                                if (isValid(i, j, k)) {
                                        cout << i << " = " << j << " x " << k << endl;
                                }
                        }
                }
        }
        return 0;
}

思路

首先我们要明确题目需要我们做的事情,我们需要输出一个等式形如a=b*c,这一个等式有一定的要求,a、b、c三个数中,1-9的数字必须有且仅出现1次。

也就是我们需要做两件事情,第一件事情,需要保证a=b*c等式成立,第二件事情,a、b、c三个数中,1-9的数字必须有且仅出现1次。

代码解析

这段代码的目标是找到所有的四位数i(从1234到9876),这些四位数可以分解为两个因子jki = j * k),并且在这个等式中,数字1到9每个恰好出现一次,而数字0不出现。

函数isValid

三个整数abc,分别代表要检查的四位数和它的两个因子。

检查这三个数组成的集合中,数字1到9是否每个恰好出现一次,而0不出现。

使用一个count数组来计数数字0到9的出现次数,数组的索引对应于数字本身。

遍历abc中的每个数字,将其分解为单个数字,并在count数组中相应位置增加计数。

遍历count数组(从1到9),检查每个数字是否恰好出现一次。如果任何一个数字出现次数不为1,返回false

最后,确保数字0没有出现,即count[0]应该为0。

主函数main

找到所有符合条件的四位数及其因子。

遍历从1234到9876的所有四位数,对于每个数i,尝试找到所有可能的因子j

因子j的范围是从2到sqrt(i),因为超过sqrt(i)的因子将会产生重复的乘积组合。

对于每个j,如果ji的因子(即i % j == 0),则计算另一个因子k = i / j

调用isValid函数检查ijk是否符合条件(即在这三个数中,数字1到9每个恰好出现一次,而0不出现)。

如果符合条件,输出等式i = j x k

乘法表

题目描述

输出九九乘法表,输出格式见样例。

输入描述:

此题没有输入

输出描述:

输出乘法表,对齐方式见样例输出

示例1

输入

输出

1*1= 1

1*2= 2 2*2= 4

1*3= 3 2*3= 6 3*3= 9

1*4= 4 2*4= 8 3*4=12 4*4=16

1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25

1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36

1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64

1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

 
#include<iostream>
using namespace std;
int main(){
    for(int i=1;i<=9;i++){
        
        for(int j=1;j<=i;j++){
            if(j!=1) cout<<" ";
            cout<<j<<"*"<<i<<"=";
            printf("%2d",i*j);
        }
        cout<<endl;
    }
}

送分题

题目描述

数据结构之神ccz又在出毒瘤数据结构了

神出了这样一个题:

给你三个数,在这三个数中间任意加*或者是+,然后可以随便打括号,只要这个表达式合法

比如说1 2 3可以得到:

1+2*3=7

1*(2+3)=5

1*2*3=6

(1+2)*3=9

不能改变这三个数的原顺序

最大化表达式的值

输入描述:

输入三行,每行一个数

分别表示a,b,c

输出描述:

输出一行一个数表示答案

示例1

输入

1

2

3

输出

9

示例2

输入

2

10

3

输出

60

备注:

1 <= a , b , c <= 10

 
#include<iostream>
using namespace std;

int main() {
    
    int a,b,c;
    cin>>a>>b>>c;
    int ret1,ret3;
    int x12=max(a+b,a*b);
    int x23=max(b+c,b*c);
    ret1=max(x12+c,x12*c);
    ret3=max(x23+a,x23*a);
    
    cout<<max(ret1,ret3);
    return 0;
}

思路

首先我们有三个数字a,b,c,我们不可以改变这三个数字的相对位置,可以任意添加+或者*以及括号。整个过程相当于需要进行两次运算,第一次运算,要么是a和b运算,要么是b和c运算,因为无法改变相对位置,所以没办法让a和c运算,如果a和b运算,我们需要得到较大的值,只需要在+和*两种情况中选出最大的即可,max(a+b,a*b);。如果b和c运算,我们需要得到较大的值,只需要在+和*两种情况中选出最大的即可,max(b+c,b*c);。最后对于这两种情况,可以得到相应的答案,ret1=max(x12+c,x12*c); ret3=max(x23+a,x23*a);。最后选出最大值输出即可。

对于不同的情况,计算出结果。贪心的思想,每次都做最优的选择,得到的结果就是最优的。

代码解析

这段代码的目的是接收三个整数abc作为输入,然后通过在这三个数之间插入加法或乘法运算符,尝试找出能够得到的最大结果。这个过程没有改变数字的原始顺序,即只考虑在给定顺序下的运算。

通过cin从标准输入读取三个整数abc

x12=max(a+b,a*b);:计算ab这两个数通过加法或乘法能得到的最大值,并将结果存储在x12中。

x23=max(b+c,b*c);:计算bc这两个数通过加法或乘法能得到的最大值,并将结果存储在x23中。

ret1=max(x12+c,x12*c);:以x12为基础,考虑将c加到x12的结果上或将cx12相乘,从这两个操作中选择能得到的最大值,结果存储在ret1中。

ret3=max(x23+a,x23*a);:以x23为基础,考虑将a加到x23的结果上或将ax23相乘,从这两个操作中选择能得到的最大值,结果存储在ret3中。

通过cout输出ret1ret3之间的最大值,即所有考虑过的运算组合中可能得到的最大结果。

[NOIP2008]ISBN号码

题目描述

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

输入描述:

只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

输出描述:

共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

示例1

输入

0-670-82162-4

输出

Right

示例2

输入

0-670-82162-0

输出

0-670-82162-4

 
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
    vector<int> d;
    string str;
    cin>>str;
    for(auto x:str){
            if(x-'0'>=0&&x-'0'<=9){
                    d.push_back(x-'0');
            }
    }
    int sum=0;
    for(size_t i=0;i<d.size()-1;i++){
            sum+=d[i]*(i+1);
    }
    sum=sum%11;
    if(sum==10&&str[str.length()-1]=='X') cout<<"Right";
    else if(sum==(str[str.length()-1]-'0')) cout<<"Right";
    else{
            if(sum==10){
                    str[str.length()-1]='X';
            }else{
                    str[str.length()-1]=sum+'0';
            }
            cout<<str;
    }
    return 0;
}

这段代码的目的是验证并纠正一个包含ISBN(国际标准书号)的字符串。ISBN的最后一位是一个校验码,可以是0到9之间的任何数字,或者是字符'X'来代表10。这个校验码是通过前面的数字按照一定的规则计算得出的,以确保ISBN的正确性。具体来说,这段代码执行以下步骤:

用户输入一个字符串str,代表一个可能的ISBN号。

遍历字符串str,将其中的数字字符转换为整数,并存储在向量d中。

通过遍历d向量,计算前面所有数字(除了最后一个数字,它是待验证的校验码)的加权和。加权规则是:每个数字乘以它的位置索引(从1开始计数),然后将这些乘积相加。

将加权和对11取模,得到的结果就是计算出的校验码sum

如果sum为10,并且字符串的最后一个字符是'X',则输出"Right",表示校验码正确。

如果sum与字符串最后一个字符代表的数字相等,也输出"Right"。

如果两个条件都不满足,则说明校验码错误,需要纠正:

如果sum为10,则将字符串最后一个字符替换为'X'。

否则,将其替换为sum对应的数字字符。

然后输出纠正后的完整ISBN字符串。

代码中的逻辑基于ISBN的校验码计算规则,即通过特定的加权和模11得到的结果。这种校验机制用于检测ISBN号中的输入错误或偶然的错误。

前天是哪天

题目描述

给定公元2000年到公元3000年之间的某一天,请你给出该天的前天是哪一天.

输入描述:

输入在一个日期,格式如"yyyy-mm-dd",题目保证所有输入日期为合法日期。

输出描述:

在一行中输出日期,格式如"yyyy-mm-dd"。

示例1

输入

2020-11-15

输出

2020-11-13

备注:

注意日期格式,月份或者天数不足2位要补零。

 
/*日期类代码实现*/
#include <iostream>
using namespace std;
#include<string>
class Date {
public:
        int GetMonthDay(int year, int month) {
                static int monthDays[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
                if (month == 2 && ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
                        return 29;
                }
                return monthDays[month];
        }
        Date(int year = 0, int month = 1, int day = 1) {
                if (year >= 0
                        && month >= 1 && month <= 12
                        && day >= 1 && day <= GetMonthDay(year, month)) {
                        _year = year;
                        _month = month;
                        _day = day;
                } else {
                        cout << "非法日期" << endl;
                }
        }
        bool operator<(const Date& d) {
                if (_year < d._year)
                        return true;
                else if (_year == d._year && _month < d._month)
                        return true;
                else if (_year == d._year && _month == d._month && _day < d._day)
                        return true;
                else
                        return false;
        }
        bool operator==(const Date& d) {
                return _year == d._year && _month == d._month && _day == d._day;
        }
        bool operator<=(const Date& d) {
                return (*this) < d || (*this) == d;
        }
        bool operator>(const Date& d) {
                return !((*this) <= d);
        }
        bool operator>=(const Date& d) {
                return !((*this) < d);
        }
        bool operator!=(const Date& d) {
                return !((*this) == d);
        }
        Date& operator+=(int day) {
                if (day < 0) {
                        return (*this) -= -day;
                }
                _day += day;
                while (_day > GetMonthDay(_year, _month)) {
                        _day -= GetMonthDay(_year, _month);
                        _month++;
                        if (_month == 13) {
                                _year++;
                                _month = 1;
                        }
                }
                return *this;
        }
        Date operator+(int day) {
                if (day < 0) {
                        return (*this) - (-day);
                }
                Date ret(*this);
                ret += day;
                return ret;
        }
        Date& operator-=(int day) {
                if (day < 0) {
                        return (*this) += -day;
                }
                _day -= day;
                while (_day <= 0) {
                        _month--;
                        if (_month == 0) {
                                _year--;
                                _month = 12;
                        }
                        _day += GetMonthDay(_year, _month);
                }
                return *this;
        }
        Date operator-(int day) {
                if (day < 0) {
                        return (*this) + (-day);
                }
                Date ret(*this);
                ret -= day;
                return ret;
        }
        Date& operator++() {
                (*this) += 1;
                return *this;
        }
        Date operator++(int) {
                Date ret(*this);
                (*this) += 1;
                return ret;
        }
        Date& operator--() {
                (*this) -= 1;
                return *this;
        }
        Date operator--(int) {
                Date ret(*this);
                (*this) -= 1;
                return ret;
        }
        void Show() {
                printf("%d-%02d-%02d",_year,_month,_day);
        }
private:
        int _year;
        int _month;
        int _day;
};

int main() {
        string str;
        cin>>str;
        int year,month,day;
        int pos1=str.find("-");
        int pos2=str.rfind("-");
        year=stoi(str.substr(0,pos1));
        month=stoi(str.substr(pos1+1,pos2-(pos1+1)));
        day=stoi(str.substr(pos2+1));
        
        Date d(year,month,day);
        d-=2;
        d.Show();
        
        return 0;
}

小名的回答

题目描述

总算到暑假了,小姐姐是非常的闲,所以想去找梅溪湖的小名玩,可是她从没去过梅溪湖,所以只能凭小名告诉她的地方走,每次只能向上下左右四个方向走1步。小姐姐的坐标为(0,0),小名在(a,b),小姐姐有点近视,小名也有点近视。所以到了(a,b)也不一定能和小名会面,不过还好,小姐姐最后找到了小名。小姐姐想要小名知道自己来一趟是多么不容易,所以在聊天的过程中小姐姐说自己为了到这里走了n步。小名,你觉得她说的可能是真话么。有可能就输出YES,否则输出NO(如果用random的话,小姐姐觉得你好像不在意她,明年暑假就不来了)

输入描述:

a,b,n(-1000<=a,b<=1000,a*b>0,1<=n<=2000)

输出描述:

"YES" or "NO"

示例1

输入

2 2 4

输出

YES

示例2

输入

1 9 2

输出

NO

 
#include<iostream>
using namespace std;
int main(){
    int a,b,n;
    cin>>a>>b>>n;
    int c=abs(a)+abs(b);
    if(n>=c&&(n-c)%2==0) cout<<"YES";
    else cout<<"NO";
}

if(n>=c&&(n-c)%2==0)这个if语句检查是否可以在n步内到达(a, b)。首先,n必须大于或等于c,即有足够的步数到达目标。其次,(n-c)%2==0确保在到达目标后,剩余的步数是偶数。因为每多出一步,都需要再多一步才能回到目标点,所以剩余步数必须是偶数。

如果姐姐可以到目标位置,那么她走的路线一定含有必须行走的最短路径,其他走的路都是多余的,多出来的步数是否合理,只需要看是否可以走出目标地点再走回目标地点,也就是偶数即可。

[NOIP2004]不高兴的津津

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入描述:

包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出描述:

包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

示例1

输入

5 3

6 2

7 2

5 3

5 4

0 4

0 6

输出

3

 
#include<iostream>
#include<vector>
using namespace std;
int main(){
        vector<vector<int>> vv(7, vector<int>(2, 0));
        for(int i=0;i<7;i++){
                cin>>vv[i][0]>>vv[i][1];
                if(vv[i][0]+vv[i][1]>8) {
                        cout<<i+1;
                        return 0;
                }
        }
        cout<<0;
}

代码解析

这行代码使我们可以直接使用std命名空间中的所有成员,而不需要在每个标准库类或函数前加std::前缀。

vector<vector<intvv(7, vector<int(2, 0));

这行代码声明了一个名为vv的二维向量(向量的向量),并初始化为7行2列,所有元素初始值为0。这意味着vv可以存储7天的数据,每天有两个整数。 for(int i=0;i<7;i++){

这个循环从0迭代到6,用于逐天读取输入数据。 cin>>vv[i][0]>>vv[i][1];

这行代码从标准输入读取两个整数,并将它们存储在vv的第i行中。vv[i][0]vv[i][1]分别代表第i天的两个整数。 if(vv[i][0]+vv[i][1]>8) {

这个if语句检查第i天的两个整数之和是否大于8。

cout<<i+1;

如果某天的整数之和首次超过8,则输出那天的编号(因为编号从1开始,所以输出i+1),然后: cout<<0;

如果循环结束后没有找到任何一天的整数之和超过8,则输出0。

C++格式化的探究

在C++中,cout确实可以用于格式化输出,但它的方式与传统的C语言中的printf函数略有不同。C++中的cout是基于流的输出,使用<<操作符来连续地将数据发送到输出。为了实现格式化输出,可以在cout语句中使用一些特殊的控制符号来修改输出的格式,如设置宽度、填充字符和小数点精度等。

设置宽度和填充

你可以使用setw()setfill()来设置下一个输出字段的宽度和填充字符。设置宽度仅仅对下一个数据有效。设置填充依旧是持续的效果。

 
#include <iostream>
#include <iomanip> // 需要包含这个头文件来使用setw和setfill

using namespace std;

int main() {
    cout << setw(10) << setfill('*') << 123 << endl;
    cout << setw(10) << 123 << endl;
    // 输出: 
     //*******123
    //*******123
    return 0;
 }

控制浮点数精度

使用setprecision()来控制浮点数的输出精度。设置精度是持续的效果。

 
#include <iostream>
#include <iomanip> // 需要包含这个头文件来使用setprecision

using namespace std;

int main() {
    double pi = 3.14159265358979;
    cout << setprecision(5) << pi <<  endl << pi << endl; // 显示5位有效数字
    cout << setprecision(9) << pi << endl; // 显示9位有效数字
    cout << fixed << setprecision(3) << pi << endl; // 固定小数点显示3位小数
    // 输出:
    //3.1416
    //3.1416
    //3.14159265
    //3.142
    return 0;
 }

设置左对齐或右对齐

使用leftright控制符来设置对齐方式。setw设置宽度只对下一个输出的数据有效,而设置左右对齐一直都有效。

 
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    cout << setw(10) << left << 123 << "end" << setw(5) << 234 << right <<"end"<< setw(5) << 123 << "end" << endl; // 左对齐
    cout << setw(10) << right << 123 << "end" << endl; // 右对齐
    // 输出:
    //123       end234  end  123end
    //123end
    return 0;
 }

十六进制、八进制和十进制输出

可以使用hexoctdec来控制整数的输出格式。设置进制也是持续的效果。

 
#include <iostream>
using namespace std;

int main() {
    int num = 255;
    cout << hex << num << endl; // 十六进制
    cout << 255 << endl;
    cout << oct << num << endl; // 八进制
    cout << dec << num << endl; // 十进制
    // 输出:
    //ff
    //ff
    //377
    //255
    return 0;
 }

C语言printf格式化的探究

整数

%d%i:以十进制形式输出带符号整数。

%u:以十进制形式输出无符号整数。

%x%X:以十六进制形式输出无符号整数(x产生小写字母,X产生大写字母)。

%o:以八进制形式输出无符号整数。

浮点数

%f:输出十进制浮点数。

%e%E:使用科学计数法输出浮点数(e产生小写eE产生大写E)。

%g%G:根据数值大小自动选择%f%e%G对应于%E)。

字符和字符串

%c:输出单个字符。

%s:输出字符串。

其他

%%:输出%字符本身。

最小输出宽度

通过在格式指定符中添加一个数字,可以指定该项输出的最小宽度。如果实际数据宽度小于这个指定的宽度,输出将用空格填充以达到指定的宽度。

printf("%10d\n", 123); // 输出宽度至少为10,右对齐

左对齐

默认情况下,printf输出的数据是右对齐的。通过在格式指定符中添加-符号,可以使输出左对齐。

printf("%-10d\n", 123); // 输出宽度至少为10,左对齐

填充字符

默认情况下,printf使用空格来填充宽度。通过在宽度指定符前添加0,可以指定使用0来填充额外的空间。在标准的C语言printf函数中,直接通过格式化字符串指定使用特定的非空格非零填充字符是不支持的。printf函数默认支持的填充字符只有空格和零(0),

printf("%010d\n", 123); // 输出宽度至少为10,用0填充

精度

对于浮点数,可以指定小数点后的数字数量,这通过在.后面加上一个数字来实现。对于字符串,可以限制输出的最大字符数。

printf("%.2f\n", 3.14159265); // 浮点数精度控制,保留两位小数 printf("%.5s\n", "Hello, World!"); // 字符串精度控制,最多输出5个字符

组合使用

这些选项可以组合使用,以实现复杂的格式化输出。

printf("%-10.2f\n", 3.14159265); // 左对齐,宽度10,保留两位小数

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

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

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

相关文章

rust学习(tokio协程分析二)

例子&#xff1a; 我们如果使用new_current_thread来创建tokio的协程运行runtime时&#xff0c; let rt tokio::runtime::Builder::new_current_thread().enable_all().build().unwrap(); 发现只有调用rt.block_on(...)才能触发。这里我们分析一下为何在new_current_thread…

【C++初识】语句

文章目录 1.注释 变量 常量 关键字 标识符命名规则 数据类型 sizeof关键字 数据的输入 运算符2.程序流程结构2.1选择结构2.2循环结构2.21while{循环条件}{循环语句}&#xff1b;//满足循环条件&#xff0c;执行循环语句2.22do{循环语句}while{循环条件}&#xff1b;//do....whi…

你不可不知的数据安全词汇都在这!

关注公众号&#xff0c;回复关键词 “数据安全”&#xff0c;即可获取报告完整版 随着数字化时代的快速发展&#xff0c;数据安全已成为全球企业和组织面临的一项重大挑战。在这一背景下&#xff0c;我们深感需要有一个统一的、全面的数据安全术语基础&#xff0c;以便行业从业…

c++函数指针 回调函数

目录 函数指针 ​编辑 实例 函数指针作为某个函数的参数 实例 std::function轻松实现回调函数 绑定一个函数 作为回调函数 作为函数入参 函数指针 函数指针是指向函数的指针变量。 通常我们说的指针变量是指向一个整型、字符型或数组等变量&#xff0c;而函数指针是指向…

基于SpringBoot的综合小区管理系统的设计与实现

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

【前端素材】推荐优质后台管理系统 Greeva平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…

vulhub中JBoss 5.x/6.x 反序列化漏洞复现(CVE-2017-12149)

该漏洞为 Java反序列化错误类型&#xff0c;存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化&#xff0c;从而导致了漏洞。 漏洞复现 利用攻击进行漏洞利用yunxu1/jboss-_…

xsslabs第七关

源码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不错&#xff01;"…

DSP软件架构

&#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;计算机杂记 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a;学习的本质就是极致重复! 目录 一 数字信号处理基本运算 二 DSP软件架构 1 哈…

nginx如何配置命令启动

我安装好nginx后&#xff0c;发现不能使用systemctl start nginx或者systemctl stop nginx来控制启停 解决方法如下 首先要建一个nginx.pid的文件 一般是建在 /var/run/这个路径下面 sudo touch /var/run/nginx.pid 添加权限 sudo chmod 644 /var/run/nginx.pid可以进入到…

136.乐理基础-旋律音程、和声音程、自然音程、变化音程

内存参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;135.乐理基础-半音是小二度吗&#xff1f;全音是大二度吗&#xff1f;三全音-CSDN博客 上一个内容里练习的答案&#xff1a; 旋律音程 旋律音程指的是音程中两个音&#xff0c;一前一后&#xff0c;有先后顺序依次…

Linux调试器-gdb使用与冯诺依曼体系结构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 Linux调试器-gdb使用 1. 背景 2. 开始使用 冯诺依曼体系结构 总结 前言 世上有两种耀眼的光芒&#xff0c;一种是正在升起的太阳&#xff0c;一种是正在努力学…

java009 - Java调试debugger

1、debugger概述 程序的调试工具&#xff0c;用于查看追踪程序的执行流程&#xff0c;也可以调试程序。 2、debugger调试流程 2.1 如何加断点 2.2 如何运行加了断点的程序 在代码区域右键---->debugger执行 2.3 看哪里 看console窗口 2.4 点哪里 点step into(F7)这个箭…

SQL Server 阻止了对组件 ‘Ole Automation Procedures‘ 的 过程‘sys.sp_OACreate‘ 的访问

SQL Server 阻止了对组件 Ole Automation Procedures 的 过程sys.sp_OACreate 的访问&#xff0c;因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 Ole Automation Procedures。有关启用 Ole Automation Procedures 的详细信息&a…

数据结构从入门到精通——算法的时间复杂度和空间复杂度

算法的时间复杂度和空间复杂度 前言一、算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 二、时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3常见时间复杂度计算举例2.4等差数列计算公式2.5等比数列计算方法 三、空间复杂度四、 常见复杂度对比五、 复杂度的oj练习…

灯塔:HTML笔记

网页由哪些部分组成&#xff1f; *文字 图片 音频 视频 超链接 程序员写的代码是通过浏览器转换成网页的 五大浏览器有哪些&#xff1f; *IE浏览器 *火狐浏览器&#xff08;Firefox&#xff09; *谷歌浏览器&#xff08;Chrome&#xff09; *Safari浏览器 *欧朋浏览器&…

【C++】数组、函数、指针

文章目录 1.数组1.1一维数组1.2二维数组 2.函数3.指针&#xff1a;可以通过指针间接访问内存(指针记录地址&#xff09;3.1 指针的定义和使用3.2 指针所占用空间3.3 空指针和野指针3.4 const修饰指针3.5指针和数组3.6指针和函数3.7练习&#xff08;指针、数组、函数&#xff09…

【Java设计模式】三、

文章目录 0、案例&#xff1a;咖啡屋1、简单工厂模式 静态工厂&#xff08;不属于23种之列&#xff09;2、工厂方法模式3、抽象工厂模式4、建造者模式5、原型设计模式 0、案例&#xff1a;咖啡屋 模拟咖啡店点餐。咖啡有多种&#xff0c;抽象类&#xff0c;子类为各种咖啡。咖…

第四个程序:(a+b)^2+a/c-c^2

&#xff08;ab&#xff09;^2a/c-c^2运算出结果 步骤&#xff1a; 第一步&#xff1a; 建立项目; 第二步&#xff1a;添加部件&#xff0c;连线&#xff0c;完成程序 第三步&#xff1a;运行得出结果 视频&#xff1a; (ab)^2ac-c^2

软考-计算题

1.二维矩阵转换成一维矩阵 2.算术表达式&#xff1a; 3.计算完成项目的最少时间&#xff1a;之前和的max&#xff08;必须之前的所有环节都完成&#xff09; 松弛时间&#xff1a;最晚开始时间-最早开始时间 最早&#xff1a;之前环节都完成的和的max 最晚&#xff1a;总时间…