自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 链队的基本操作

编码时出现的bug:push操作时,忘记更新q->rear。q并不是动态分配内存,clear时不需要释放。

2023-10-04 18:59:54 63

原创 循环左移数组

给定数组【A0, A1, ... ,An-1】,循环左移P个单位。算法思想:三次翻转。左半翻转,右半翻转,整体再翻转。

2023-10-04 14:30:22 61

原创 矩阵的转置

由于两个矩阵的第二维参数不同,而要打印这两个矩阵,传递参数时就要确定第二维参数,因此要编写两个打印矩阵的函数(每个第二维度不同的矩阵都要写一个),这样就很麻烦。于是,采用另一种方法。由于二维数组在计算机内存储时本质上是个行优先按顺序存储的,因此可以把二维降到一维。第i行第j列元素-->i*n +j。输出函数参考CSDN。

2023-10-04 13:54:42 72 1

原创 素筛法求素数

用一个数组记录素组是否被标记为素数,初始状态全部标记为素数;然后把不是素数的值标记为1;最后没有被标记的一定都是素数。假设 i 是素数,那么 i 的所有倍数都不是素数。

2023-10-03 21:35:43 44

原创 变参函数初体验

va_arg(args, elemType):读取参数,elemType为要读取列表的类型。变参函数的形式:typename func(int argCnt, ...);va_start(args, argCnt): 读取参数列表中第一个参数。其中argCnt表示要读取变参列表中参数的个数;va_list args: 读取参数列表。va_end(args):结束读取操作。

2023-10-03 08:51:56 25

原创 不使用循环及额外定义函数打印1到100

引入变量cnt,并存储在静态存储区。n存在堆栈,每次main函数入栈时,局部变量也入栈。由于全局变量n 存储在静态存储区,main函数压入栈时,n并未入栈。解题思路:使用main函数作为递归函数。代码1的错误分析:输出全部为1.

2023-10-03 08:06:10 54

原创 二分查找的C语言实现

当left <= right时,待搜索数据x 与mid比较,若大于mid;说明x可能在右边被查到,low = mid + 1,若小于mid,可能在左半被查到, high = mid - 1;等于,则返回mid;若left>right,立即返回-1。算法思想:把数组划分成3部分,left, mid, right。为了测试二分查找算法代码是否有问题,写了个产生随机递增的算法。

2023-10-02 21:01:29 17 1

原创 冒泡排序的实现

算法思想:每趟排序时,比较相邻的两个元素,较大的向后移动,则第一趟排序完成时,最后一个元素为组大元素;下一次比较到第n - 1个元素即可。加了哨兵的冒泡排序比较次数与数组初始状态有关,最坏情况为倒序,需比较n(n-1)/2次;最好情况为顺序,需比较n-1次。

2023-10-02 19:26:59 16 1

原创 选择排序的实现

共需比较 n-1 + n-2 + n-3 + ... + 1 = n(n-1)/2次,时间复杂度为O(n²)遍历数组,每次遍历寻找未排序部分最小值,与未排序部分首个元素交换,n个元素需要遍历n次。

2023-10-02 18:47:13 23 1

原创 用扩展欧几里得算法求解贝祖等式

b * x + (a % b)*y = c(*), 设 a = k * b + r。-->下一层解:x = y;

2023-10-02 11:53:08 39 1

原创 欧几里得算法

欧几里得算法:两数 a, b 的最大公约数等于 较小数与两数余数的最大公约数。设 r = a %b, 则 a =kb + r (r, , ∈ N*)前提: a > b && a % b!= 0 && a,b ∈N*因为x|a, x|(k*b)所以x|r,即x|(a%b)设 x 同时被 a, b 整除,即 x|a, x|b;所以a,b的最大公约数等于b与a%b的最大公约数。证明过程参考百度百科。

2023-10-02 08:21:43 29 1

原创 给定一个日期,输出前一天和后一天的日期

必然是分支结构中出现错误,仔细观察发现,由于逻辑与&&优先级比逻辑或||要高,因此先计算month == 11(条件不成立),注意执行完这一步后不是从左到右执行逻辑或,再计算day == 30;在输出后一天时,首先判断是否月底,若不是,说明年月不变,天数直接加1即可;若是说明下一天是月首,需要进一步判断本月是否是12月,如果是说明跨年,年份加1,月份置1,否则年份不变,月份加1.排除bug思路:根据输出可以断定,isMonthEnd()函数里出现了逻辑错误,当天是月首,但判断是否是月底时,返回为True;

2023-10-02 06:56:14 183 1

原创 判断两个5位数之间所有的回文质数

分两步: 第一步计算这个数是不是质数,判断质数时这里有个技巧,只要判断到n的平方根即可,但是不能用sqrt( n ),因为对一个质数取平方根,然后舍弃小数部分(int)可能是个偶数,而质数本身是个奇数,这就导致了计算错误。可以用 i * i

2023-10-02 06:32:58 30 1

原创 插入排序的递归与非递归算法

【代码】插入排序的递归与非递归算法。

2023-10-01 13:40:54 221 2

原创 指向const 对象的指针

指向const 对象的指针可以给指向non-const对象的指针初始化,反之不行。从逻辑上分析,指向non-const对象的指针意味着可修改对象,如果强行给其赋值一个const 对象指针,那么如果可以,就会导致通过non-const对象指针修改const对象,这显然违背了逻辑。int a = 1;const int *p = &a;int *p2 = &a;p = p2; //没有任何问题p2 = p; //编译报错...

2022-04-26 05:50:33 101 1

原创 拷贝构造函数与拷贝复制函数

当类的成员变量含有指针时,必须编写拷贝构造函数与拷贝赋值函数,否则可能发生内存泄露。#pragma once#ifndef STRING_H_#define STRING_H_#include <string.h>#include <ostream>#define _CRT_SECURE_NO_WARNINGSclass String{private: char* m_data;public: char* get_c_data()const { retu

2022-04-22 20:51:59 721

原创 返回值 VS r返回引用 以及 传引用 VS 传值

准则:尽量使用传引用f而不是直接传递对象目的:减少开销,传引用相当于使用原对象,而传递对象需要拷贝一份。返回值是引用还是对象要看情况而定:不能使用返回引用的情况是:当返回的是一个局部对象时。#ifndef COMPLEX_H_#define COMPLEX_H_#include <ostream>class complex{public: inline double real()const { return re; } inline double imag

2022-04-21 19:29:34 172

原创 C++构造函数的注意事项

Ctor():a(aa),b(bb){}ctor(){ a = aa; b = b;}使用参数列表对成员变量进行初始化,而不是在构造函数体内赋值,这样可以减少开销。Ctor(int a= 0, int b =0){}Ctor(){}无参构造函数与所有参数都有默认值的构造函数不能同时存在无参构造函数与所有参数都有默认值的构造函数不能同时存在,因为编译器无法确认用户到底想调用哪一个构造函数。...

2022-04-20 21:14:12 696

原创 头文件(防卫式声明)

在C/C++头文件中,必须进行防卫式声明,防止头文件重复包含问题。#ifndef __XXXXX__H#define __XXXXX__Hcode block;#endif如果是第一次包含该头文件,则定义宏__XXXXX__H,并包含代码,如果是第二次包含,条件编译指令不通过,不再重复包含。...

2022-04-20 21:07:57 193

原创 Qt使用ODBC连接mysql的步骤

第一步:检测使用MySql Connector检查能否正常连接数据库第二步:把mysql lib目录下的 libmysql.dll 和libmysql.lib放到Qt的对应编译器目录下,我这里是D:\Qt\Qt5.9.0\5.9\msvc2017_64\bin第三步:创建Qt项目,并添加sql模块第四步:连接数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setHostName(ho.

2022-04-19 20:08:54 1574 1

原创 C 语言如何实现变量私有化(static)

引言:链接属性:标识符的连接属性决定如何处理在不同文件中出现的标识符。标识符的连接属性共有3种--external, internal 和 none. none属性胡标识符总是被当作单独的个体;internal 属性的标识符在同一个源文件内的所有声明都指向同一个实体,但位于不同源文件的多个声明则分属于不同的实体;external 属性的标识符不论声明多少次,位于几个源文件都表示同一个实体。注意:不同环境下标识符的缺省链接属性是不同的。重点:关键字 static 和 extern用于在声明中修改标

2022-04-19 12:20:18 1062

原创 c++ 虚函数的作用

C++ 通过关键字virtual 声明一个虚函数,在派生类里重写这个虚函数,从而实现通过父类指针调用子类函数的目的,以实现多态。下面通过代码验证:#include <iostream>class Base{ public: virtual void print() { std::cout<<"virtual base print"<<std::endl; } void non_print() { std::cout<<"non v

2022-04-19 10:13:53 971

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除