C/C++
文章平均质量分 64
探究关于C/C++的算法、函数和其它知识
创客小邓
代码敲完纸笔搁,兴趣即来写博客
展开
-
c/c++ 为数组整体赋初值
如果将数组定义为全局,则编译器会将此数组自动初始化为0(int、long、long long)、“”(string)或‘ ’(char)如你所见,这样的操作只对a[0]赋值为1,那这种情况下就需要运用到下文所说的方法了。这种方法仅适合较小的数组,有成千上万个格子的数组用这种方法好像有点费肝……由于数组赋值方式相同,下文仅以int类型数组的赋值为例来讲解。这应该是大家用的最多的一种方式了,遍历数组的每一格进行赋值。为让c/c++的朋友都看懂,本文将采取c语言为大家讲解。原创 2024-08-06 21:00:00 · 1255 阅读 · 0 评论 -
c++ 求解质因数(细节详解)
这里先来了解几个定义(如已了解,可直接看下一个板块)因数:又称为约数,如果整数a除以整数b(b0)的商正好是是整数而没有余数,我们就说b是a的因数质数:又称为素数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数。2是最小的质数质因数:如果一个数a的因数b同时也是质数,那么b就是a的质因数,例如:8=2*2*2,2就是8的质因数;12=2*2*3,2和3就是12的质因数了解了质因数的定义后,我们借一道题(自创,为方便大家理解题目,我尽量做到简洁)来了解如何求解质因数。原创 2024-07-24 22:20:10 · 1242 阅读 · 0 评论 -
c++ 高精度加法(只支持正整数)
由于加法进位最多进1位,所以我们的结果ans[]的长度定义为两个加数中最长长度+1即可//两个加数//两个加数的长度,确保只调用一次length()函数,节约时间//ans[]为最终结果,step可以理解为ans的下标//t1为j1中的一个数字,t2为j2中的一个数字coutj1;coutj2;原创 2024-07-23 00:00:30 · 1685 阅读 · 0 评论 -
c/c++ 判断回文数
随后判断回文数:因为一次判断两个数是否相等,那么循环的次数只需要i/2次(如果原数是奇数,则中间的那个数等于自身,可以不做判断)那么我们可以将原数中的每一位数放入数组的一个格子里,随后从两边依次向中间两两比较,如果将整个数组比完都相同,则此数为回文数。原理为:一直将temp除以10,时原数缩小一位,这时使l加1。当temp==0时,说明已经除尽,此时l的值就是原数的位数。回文数便是从左向右看和从右向左看都是一样的,如121。原创 2024-05-18 19:41:50 · 893 阅读 · 0 评论 -
c/c++ 判断质数(素数)
如果遇到合数时,方法二运算时间和方法一相同(因为方法一是一遇到能被除1和自己的除数整除的情况时便退出,和方法二相同);但是如果遇到质数时,方法二则会节省比方法一的一半还多的时间(方法一因为没有能被除1和自己的除数整除的情况,所以要判断x-1个数;方法二仅需要判断少于x/2个数),所以建议采用方法二原创 2024-05-18 19:05:05 · 3012 阅读 · 2 评论 -
c++ 运算符重载
运算符重载顾名思义就是重新定义运算符, 以来方便我们的使用,以下为可重载的运算符与不可重载的运算符列表:今天我们就以运算符“+”和输出流“原创 2024-03-03 18:56:31 · 386 阅读 · 0 评论 -
c/c++ 结构体
int age;//此处定义数组时需要限制其大小当然,此后要使用时也可以再定义其他的结构体变量int age;含函数的结构体其实和普通的结构体相同,也有以上两种定义方式,只不过多了个函数而已int age;printf("%s%d岁了",name,age);//用c++的朋友也可以用cout<<name<<age<<"岁了";函数的返回值类型 结构体名称::函数名(参数1,参数2,参数3...)不然的话有些编译器会找不到函数对应的实现,从而产生报错。原创 2024-03-03 16:12:07 · 471 阅读 · 0 评论 -
c++ 全排列(next_permutation和prev_permutation)
next_permutation和prev_permutation这两个函数存在于#include中本文以int数组num[]为例,其长度为n。原创 2024-03-02 21:01:02 · 1775 阅读 · 0 评论 -
c++ 冒泡排序
并且,数组的长度是6,仅仅需要5轮便可得出排序后的数组,所以需要排序的轮数为【数组的长度-1】,因为最后一轮比较完成了最后两个数的排序(如最后一轮完成了8和9的排序)1.用numbers[0]去依次和数组中的其他元素进行比较,如果遇到比numbers[0]大的数,则将numbers[0]替换为较小数,继续比较。2.用numbers[1]去依次和数组中的其他元素进行比较,如果遇到比numbers[1]大的数,则将numbers[1]替换为较小数,继续比较。如有疑问欢迎私信或评论区留言!按从小到大的顺序排序。原创 2024-03-02 16:07:27 · 556 阅读 · 0 评论 -
c/c++ printf和scanf函数的输出输入类型
对于浮点数, 若整数部分位数超过了说明的整数位宽度,将按实际整数位输出,若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。%7.3f(%lf同理) 表示输出场宽为9的浮点数,其中小数位为2, 整数位为6(小数点占一位)对于以上类型,限制的场宽从意义上来说基本没用,不过对于%f和%lf来说可以限制浮点数的小数位。%lf(对应double):输出类型为有符号的。%f(对应float):输出类型为有符号的。%d(对应int):输出类型为有符号的。%e(对应double):输出类型为。原创 2024-02-25 15:29:04 · 751 阅读 · 0 评论 -
c/c++ char和int互转
【代码】c/c++ char和int互转。原创 2024-02-25 15:07:06 · 2241 阅读 · 0 评论 -
c++ 进制转换
只需要将x进制转换为10进制,再将10进制转换为k进制即可(当然还有其他方法,不过这个方法更简单)我们都知道10进制的1、10、100......分别是10的0次方、10的1次方、10的2次方......而原数每一位上的数乘以对应的进制的次方,最后将所有位得到的结果相加,最终的结果就是他的10进制数。如二进制中的1、2、4......分别是2的0次方、2的1次方、2的2次方......可以发现,最后一步的商都是0,所以可以以商等于0来作为结束标志。10进制转x进制就好办多了,直接短除法!原创 2024-02-05 19:57:39 · 844 阅读 · 1 评论 -
c++ 高精度乘法(只支持正整数)
在这里先介绍一个确定积的最大位数的方法:积的最大位数=乘数1的位数+乘数2的位数//两个乘数,定义为char类型,可以使每格只存一个数字//输入乘数//根据乘数的位数设定积的位数i原创 2024-02-02 16:21:33 · 889 阅读 · 0 评论 -
c++ 大小写字母相转换
由此可以发现:A的ASCII码是65,a的ASCII码是97,两者相差32,所以要想大小写相互转换,加减32就可以了。将字符转换为小写形式。如果c有相对应的小写形式,则返回c的小写形式,否则返回c。将字符转换为小写形式。如果c有相对应的小写形式,则返回c的小写形式,否则返回c。头文件:#include (32对应的是空格,其实加减空格也是可以的)原创 2024-02-04 17:32:22 · 1266 阅读 · 1 评论 -
c++ sort函数
这里的排序函数可写可不写,默认的是按从小到大的顺序排列,如果要按从大到小的顺序排列,需自定义排序函数。只需要把上面数组的类型改为char或string即可,排序会将数组元素的ASCII码按要求进行排列。注意:此函数可以排列任何类型的数据,包括char[]和string[]!用法:sort(数组名,数组名+数组的元素个数,排序函数)头文件:#include如有疑惑欢迎在评论区留言。原创 2024-02-04 11:37:31 · 723 阅读 · 1 评论 -
c++ 计算最小公倍数和最大公因数
根据:最小公倍数和最大公因数的积与原来两数的积相等。也就是:最小公倍数*最大公因数=原来两数的积。变个形:原来两数的积/最大公因数=最小公倍数。原创 2024-01-31 20:14:36 · 1887 阅读 · 1 评论 -
c++ char数组、char指针和string间的相互转换
今天做题遇到了char数组和string间的相互转换的问题,网上搜有点散,来整理一下。原创 2024-02-01 15:58:08 · 3228 阅读 · 5 评论