- 博客(41)
- 收藏
- 关注
原创 Linux学习总结
ndd :从光标位置开始删除连续的n行内容u :撤销上次操作nyy :拷贝连续的n行内容(复制)p:粘贴r :替换字符按键r然后字符G:光标移动到文件的末尾gg ∶光标移动到文件开头shitf+4:光标跳转到当前行尾shift+6:光标跳转到当前行的行头nG:光标跳转到第n行。
2022-10-25 17:49:28
1675
1
原创 C语言 结构体
例如,登记学生的信息,可能需要用到 char型的姓名,int型或 char型的学号,int型的年龄,char型的性别,float型的成绩。计算机系统对基本数据类型的数据在内存中存放的限制是:这些数据的起始地址的值要求是某个数K的倍数,这就是内存对齐,而这个数 K 就是该数据类型的对齐模数(alignment modulus)。结构体的优点:结构体不仅可以记录不同类型的数据,而且使得数据结构是“高内聚,低耦合”的,更利于程序的阅读理解和移植,而且结构体的存储方式可以提高CPU对内存的访问速度。...
2022-08-09 20:32:50
733
1
原创 C语言 递归函数
反之,若中间元素小于目标元素,表明目标元素位于中间元素的右侧,将 [M+1, E] 作为新的搜素区域;因为其仅使用于有序序列,以及我在本题中所遇到的问题(当数组内元素为0,1,2,3,4,5,6,7,10,8的顺序查找时,查找其中元素10,查找失败),我给其添加了一个冒泡排序,使其成为有序序列之后,再进行二分查找。如果搜索区域无法再缩小,且区域内不包含任何元素,表明整个序列中没有目标元素,查找失败。在有序序列中,使用二分查找算法搜索目标元素的核心思想是:不断地缩小搜索区域,降低查找目标元素的难度。.....
2022-08-07 21:55:18
5461
1
原创 C语言 动态内存分配
如果它用于扩大一个内存块,那么这块内存依然保留,新增加的内存添加到原先内存块的后面,新内存并未以任何方法进行初始化。上面所说的free(p)是指将p所指的内存释放掉,将内存归还给操作系统,经过释放之后,这块内存操作系统会分配给其他进程使用,p此时的形式就成为野指针或者悬挂指针。但不同班级学生的数量可能不同,通常情况下,我们通过声明一个内存更大的数组进行储存,它可以容纳可能出现的最多元素。如果原先的内存块无法改变大小,realloc将分配另一块正确大小的内存,并把原先那块内存的内容复制到新的块上。......
2022-08-03 21:59:36
566
1
原创 C语言 My_Atoi函数、My_Itoa函数
5.如果整数数超过32位有符号整数范围[-2^31,2^31-1],需要截断这个整数,使其保持在这个范围内。具体来说,小于-2^31的整数应该被固定为-2^31,大于2^31-1的整数应该被固定为2^31-1。2.检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。4.将前面步骤读入的这些数字转换为整数(即,"123"->123,"0032"->32)。如果没有读入数字,则整数为0。3.读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。.........
2022-08-01 19:19:12
556
1
原创 C语言 数组指针、指针数组、函数指针
但是在这里,q的初始化是不正确的,因为brr并不是一个指向整型的指针,而是一个指向整型数组的指针。p是一个指向拥有10个整型元素的数组的指针,当把p与一个整数相加减的时候,该整数值首先根据10个整型值的长度进行调整,然后执行加法。下标引用的优先级高于间接访问,但由于括号的存在,首先执行的还是间接访问,所以,p是一个指向整型数组的指针。对数组的某个元素执行间接访问操作后,我们得到一个整型值,所以,ar肯定是个数组,他的元素类型是指向整型的指针。为了弄清这个声明,我们假设它是一个表达式,并对它进行求值。...
2022-07-31 21:14:53
169
原创 C语言 typedef关键字
使用typedef声明类型,可以减少使声明变得“又臭又长”的危险,尤其是那些复杂的声明(具体出现在结构体中),而且,如果你以后觉得应该修改程序使用的一些数据的类型时,修改一个typedef声明比修改程序中与这种类型有关的所有变量(和函数)的所有声明要容易更多。C语言支持一种叫作typedef的机制,它允许为各种数据类型定义新的名字(代号),typedef声明的写法与普通数据类型的声明基本相同,只是把typedef关键字放在声明的前面。这个声明把标识符Point_32作为指向整型的指针类型的新名字。...
2022-07-29 14:11:15
329
原创 C语言 指针与const的关系
const修饰的就是*p,实际上就是对p进行解引用,也就是a,那么在这里a是一个常量,也就是说,限定p指向的内容不允许被修改,但不限定p的指向,p可以指向a,也可以指向b。假设int*p=&a正确,那么就可以通过*p去改变a的值,但在这里,a明显是一个常量,因此这样的写法是错误的。如果需要将其改正确,对*p进行限定就可以了。const修饰的是p,p为常量,p指向的是a,此时p就不能指向b。这种情况就是const既限定了p本身,又限定了p的指向内容,所以通过*p(指向内容),p(本身)都不能进行修改。....
2022-07-24 22:57:12
610
原创 C语言 指针基础
3.第三种Swap2,虽然传入了a,b的地址,但是并未对其进行操作,也就是没有进行解引用,这个函数就是把a,b的地址赋给了形参中的a,b,然后a,b的地址发生了交换,函数结束,a,b释放,a,b的值仍不会交换。这时,变量p中存放了变量a的地址,假设该地址为2022,如果要存取a的值,可以采用间接方式先找到存放a的地址的变量p,从中取得a的地址,然后到该地址的内存单元中取得a的值。p变量是专门存放a变量的地址,则称p为“指针变量”,指针变量就是存放地址的变量,指针变量的值就是指针。int类型4字节;.....
2022-07-21 13:17:15
728
原创 C语言 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
问题有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见下图,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。假设现有一个数组arr[]={1,2,3,4,5},n=5,m=2,最终结果为34512.调用Swap交换函数15交换;在543区间内0~n-m-1。在12区间内n-m~n-1。1.整体逆序54321。...
2022-07-20 16:41:50
1181
原创 C语言 写一函数,实现两个字符串的比较
4.如果两个字符串有不相等的元素,在发现第一个不相等的元素时,执行3中的操作,此时,3.如果直到遍历结束,两个字符串的所有元素均一致,则不执行。1.设置返回值进行检测两个字符串的元素是否一致。2.开始对两个字符串分别进行遍历比较。该操作,最终res仍然等于0.并中止循环,返回res的值。......
2022-07-20 14:36:41
6298
1
原创 C语言 杨辉三角问题
11^0=1,11^1=1x10^0+1×10^1=11,11^2=1×10^0+2x10^1+1x10^2=121,11^3=1x10^0+3×10^1+3x10^2+1x10^3=1331,11^4=1x10^0+4x10^1+6x10^2+4x10^3+1x10^4=14641,11^5=1x10^0+5x10^1+10x10^2+10x10^3+5x10^4+1×10^5=161051。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。第n行的数字有n项。...
2022-07-18 19:05:13
437
原创 C语言 将一个自定义的二维数组行和列的元素互换,存到另一个二维数组中
解题思路可以定义两个数组数组a为m行n列,存放指定的m*n个数。数组b为n行m列,开始时未赋值。只要将a数组中的元素a[i][j]存放到b数组中的b[j][i]元素中即可。用嵌套的for循环即可完成此任务。
2022-07-18 18:11:38
5386
1
原创 C语言 字符替换
问题描述:给定一个字符串“i am a student”,编写程序使得该字符串中的空格都被‘##’代替。代码如下:运行结果:
2022-06-15 11:00:32
2264
1
原创 C语言 数组之奇数在前偶数在后问题
假设现在给定一个数组来设计一个程序使其中元素的奇数放在前面位置,偶数放在后面位置。思路:分别使用i,j来标记数组中奇数、偶数的位置。i负责从头遍历,j负责从末遍历如果i遇到了偶数,j遇到了奇数,则循环停止,交换此时的arr[i]和arr[j]。i如果小于j,则循环继续,继续遍历,直到不满足i...
2022-06-14 14:38:59
3215
1
原创 C语言 将两个数组的数据合并为一个数组
思路就是使用一个更大的第三方数组,将两个数组的数据放入第三方数组中,即完成合并。代码如下:运行结果为:
2022-06-11 16:20:57
15642
3
原创 C语言 将一个数组的内容复制到另一个数组
首先,定义形参str[]设为结果数组;arr[]设为被复制数组。再定义一个数组长度size。 接下来进行遍历arr[],再函数体内将arr[]赋值给str[]。从而完成复制。 代码如下: 运行结果为:完成复制。...
2022-06-11 16:08:14
11261
原创 C语言 约瑟夫环问题
约瑟夫问题描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3代码如下:结果展示:...
2022-06-10 23:55:21
2385
1
原创 C语言 斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……、...
2022-06-10 20:13:38
3654
原创 C语言 二分查找(折半)算法
二分查找又称折半查找、二分搜索、折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为。二分查找算法仅适用于有序序列,它只能用在升序序列或者降序序列中查找目标元素。在有序序列中,使用二分查找算法搜索目标元素的核心思想是:不断地缩小搜索区域,降低查找目标元素的难度。以在升序序列中查找目标元素为例,二分查找算法的实现思路是: 代码如下:结果展示:...
2022-06-10 19:48:57
516
原创 C语言 给定一个字符串,统计‘a’的个数
给定一个字符串为:i am a student ,统计其中a的个数。代码如下:输出结果为:函数进行封装:输出结果为:
2022-06-08 23:54:08
3369
原创 C语言 完数问题求解
完数: 第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。如求1000以内的完数代码如下:输出结果展示:利用函数,求该完数的所有因子:代码如下
2022-06-08 23:25:33
685
原创 C语言 组合钱问题
问题:分别用1角、2角、5角、1元搭配组合3.5元,请问有几种方式?分别表示出来。 本题实际上是一个穷举法的简单应用。将所有结果一一列举,找出符合条件的结果。代码如下:#include<stdio.h>int main(){ int count; for(int i = 0; i <= 35; i++) //1角 { for(int j = 0; j <= 35/2; j++)//2角 { .
2022-05-30 17:53:59
442
原创 C语言 求一个区间内,能被2、5整除余1的前10个数
#include<stdio.h>int main(){ int n = 0; int a , b; int temp; printf("请输入区间:"); scanf("%d %d", &a, &b); if(a > b) { temp = a; a = b; b = temp; } for(int i = a; i <= b; i++) .
2022-05-24 10:05:58
335
原创 C语言 求pow()函数,x的y次方
头文件:#include<math.h>pow() 函数用来求 x 的 y 次幂(次方),其原型为:double pow(double x, double y);求x的y次方也就是y个x累乘。代码如下:#include<stdio.h>#include<math.h>double My_Pow(double x, int y);int main(){ int a , b; scanf("%d %d", &a, &a
2022-05-23 20:14:33
3559
原创 C语言 身份证规则测验
将18位的身份证号的前17位与对应的加权因子相乘对11取余,然后余数对应的code就应该是身份证号的第18位,获取到的值与第十八位相比如果相等,那就校验通过。我们以11111111111111111(17个1)这个数字为例17 位的加权因子分别是 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2int arr[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//系数然后进行1*7+1*9+1*10+1
2022-05-23 19:35:31
304
原创 C语言 金字塔问题
#include<stdio.h>int Pyramid(int n, int m){ for(int i=0; i<m; i++) { for(int k=0; k<m-1-i; k++) { printf(" "); } for(int j=0; j<=i; j++) { printf("%d ", n); } printf("\n"); }}int main(){ int m , n; scanf(.
2022-05-23 18:46:31
189
原创 C语言 求m~n(m<n)之间所有整数的和
求m~n之间所有整数的和这里使用了同一种方法的两种不同形式。第一种:一般形式#include<stdio.h>int main (){ int m, n; int temp; int sum = 0; printf("请输入区间:"); scanf("%d %d", &m, &n); if(m > n) { temp = m; m = n; n = te
2022-05-23 18:20:38
8290
2
原创 C语言 多种方法求最大公因数和最小公倍数
最大公约数:指能够整除多个整数的最大正整数,而多个整数不能都为零。最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。求最小公倍数的算法:最小公倍数 = 两个整数的乘积 / 最大公因数求最大公约数的算法:第一种方法:辗转相除法有两个整数a和b: a % b ==temp;若temp = 0;那么b就是最大公约数。若temp ≠ 0;则a = b;b = temp;继续进行a % b 操作。eg:求25和15的..
2022-05-20 00:19:46
15746
2
原创 C语言 Sn=a+aa+aaa+……之值,其中a是一个数字,n表示a的位数,n由键盘输入。
逻辑关系:后一项等于前一项乘以10加aa = 1时i=0,b=0+1=1;i=1,b=10+1=11;i=2,b=110+1=111;i=3,b=1110+1=1111;i=4,b=11110+1=11111;#include<stdio.h>int main (){ int a , b = 0 , sum = 0; ...
2022-05-19 17:15:43
2745
原创 C 语言 输入一行字符,分别统计出其英文字母、空格、数字和其他字符的个数。
这里要注意判定条件:字母:a~z数字:0~9空格:一个空格#include<stdio.h>int main(){ char a ; int i; int number = 0 , space = 0 , letter = 0 , other = 0; // 数字 空格 字母 其他 while ((a = getchar()) && a != '\n') { if(a >= '0' &.
2022-05-19 16:47:07
3646
2
原创 C语言 猴子吃桃问题
猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?设第十天为X1.X2 = X1/2 - 1;X3 = X2/2 - 1;以此类推:X后 = X前/2 - 1 <=> X前 = 2(X后 + 1).代码如下:#include<stdio.h>int main(){ int i;
2022-05-19 16:02:22
471
原创 C语言 给出一个不多于五位数的整型,求出它是几位数,并将其逆序输出如4321 ->1234
#include<stdio.h>int main(){ int n; int a , b , c , d , e; printf("put in a number:"); scanf("%d",&n); a = n / 10000; b = n % 10000 / 1000; // %是整除取余数运算。x%10000 就是取出 x 的 千百十个4位。 是整除取商运算,千百十个4位数/1000 就是取出千位的数值 .
2022-05-19 15:38:43
2577
原创 C 语言判断一个整形由几位数字组成
#include<stdio.h>int main(){ int n , count = 0; printf("put in n:"); scanf("%d",&n); if(n == 0) { printf("There is only one-digit integer"); } while (n != 0) { n /= 10; count++; } printf("count = %d", count); return 0;}输入一个.
2022-05-19 15:06:17
174
原创 C语言 求1-1/2+1/3-1/4+1/5-1/6……求其前n项和
如果先不考虑正负号,一律按照正号对待,那么该式就变为1+1/2+1/3+1/4+1/5+1/6……分子不变,分母依次加1;设s为其前n项和,i为第几项,表达式即为 s += 1/i。而本题中,分母为偶数前的符号为符号,也可以通过判断 i % 2 ==0来确定符号。代码如下:#include"stdio.h"int main(){ int i , n , flag = 1; float s = 0; printf("put in n:"); scanf("%d",&
2022-05-19 14:50:38
7193
原创 C语言 乒乓球比赛问题
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比, c说他不和x,z比,请编程序找出三队赛手的名单。遇到这个题,根据题意可以直接推断出结果:a->z,b->x,c->y.代码实现如下:#include<stdio.h>int main (){ int a , b , c ; for(a='X';a<='Z';a++) { f
2022-05-19 13:43:37
2491
原创 C语言 判断一个整型是否为素数
素数又称质数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数。如果说这个数为n,那么从2 ~( n-1)之间,任取一个数和n进行“n%该数”操作都不能整除,那么说明这个数为素数。#include<stdio.h>int main(){ int num , m; printf("put in a prime : "); scanf("%d", &num); for( int i = 2; i < num ; i++)
2022-05-19 13:26:10
3513
原创 C语言 两个整型交换的多种方式
第一种方法:引入一个第三变量t,进行交换操作#include<stdio.h>int main (){ int a = 20, b = 10, t; t = a, a = b,b = t; printf("%d,%d",a,b); return 0;}第二种方法:使用数学交换律进行交换操作#include<stdio.h>int main (){ int num1 = 20, num2 = 10; num1 = num1 + num2; nu
2022-05-19 00:38:44
660
原创 C语言 从键盘输入两个整型,输出两个整型的最大值
两个数比较大小#include<stdio.h>int main() { int a = 0 ,b = 0; printf("a:"); scanf("%d", &a); printf("b:"); scanf("%d", &b); if(a>b) { printf("a = %d\n",a); }else { printf("b = %d",b); } //int max = a > b ? a : b;//三目运算符 //
2022-05-19 00:22:52
3280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人