自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 C语言用递归的方法求n的阶乘

源码如下:#include <stdio.h>int fac(int n){ long f; if(n<0) printf("error\n"); else if(n==0,n==1) f=1; else f=fac(n-1)*n; return f;}int main(){ int n,y; printf("please an integer number:\n"); scanf("%d",&n); y=fac(n); printf("%d

2020-11-20 23:38:58 6876 2

原创 C语言字符串结束标志

为了测定字符串的实际长度,C语言规定了一个字符串结束标志 ‘\0’ 作为标志,如果一个字符串为9个,前面九个都不为空字符,那么第十个字符为 ‘\0’,也就是说在遇到字符 ‘\0’ 时,表示字符串结束,之后由它前面的字符组成一个字符串。而编译系统经常会在处理字符串常量时会自动加一个 ‘\0’ 作为结束符。字符串作为一维数组存放在内存中。有了结束标志后,字符数组的长度也就不重要了,在程序中往往依靠检测 ‘\0’ 的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串的长度。当然在定义中也应当估计实际字

2020-11-12 00:11:11 7506 1

原创 C++基础回顾

吼吼吼C++C++基础回顾C++基础入门一、标识符1.1标识符命名规则二、数据类型2.1整形(格式:int 关键字)2.2 sizeof关键字2.3 float关键字2.4字符型2.5转义字符2.6字符串型2.7布尔类型2.8数据的输入三、运算符3.1算数运算符前置递增与后置递增区别3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符四、程序流程结构4.1.1 if语句4.1.2 三目运算符4.1.3 switch语句4.2 循环结构4.2.1 while循环C++C++基础回顾C++基础入门一、

2023-01-24 15:18:53 1137 1

原创 Ubuntu安装交叉编译工具链——现成包方法

使用arm-cortex_a8处理器的交叉编译工具链安装使用书本《嵌入式Linux系统开发入门宝典》由于这本书使用的系统是ubuntu12.04版本,这个版本过于久远Ubuntu已经不更新了,所以需要的大多数文件都存在依赖库或者丢失无法下载,本文即采用直接下载现成包的方式本文采用Ubuntu20.04以及arm-linux-gcc 4.4.3version第一步在Linux系统或者Windows系统下搜索arm-linux-gcc-4.4.3.tar.gz包下载,Linux系统直接将包放入tm

2022-04-10 13:00:00 2226 1

原创 C++迭代器

目录一、C++迭代器的分类1.顺序型迭代器2.插入型迭代器一、C++迭代器的分类迭代器分为三种顺序型迭代器插入型迭代器流迭代器1.顺序型迭代器iterator 正向迭代器//iterator 正向迭代器template<typename Con>void iterator_show(Con&con){ typename Con::iterator it = con.begin(); for(; it != con.end();it++) { cout

2021-11-25 17:27:51 1007

原创 C++入门笔记

默认值参数在函数声明或定义的时候,给定参数默认值,如果参数传递的时候不给该形参传值,则会按照默认值传参。函数参数的默认值是在编译期生成指令的时候,直接生成入参指令,函数参数的默认值只能传递常量。函数的默认值参数只能从右向左赋值,不能跳过。函数的默认值参数在同一作用域中只能赋值一次,不能重复赋值。因为函数参数的默认值是在编译期时期带入的,所以函数参数的默认值只在本文件中生效。内联函数在release版本中调用内联函数,该函数会在调用点展开(编译时期展开)。在debug版本中调用内联函数和

2021-10-17 12:33:26 143 1

原创 Linux 文件编辑命令

三种模式介绍文件编辑中的三种模式有:命令模式、插入模式(编辑模式)与末行模式。模式切换从命令模式切换到插入模式字符作用a进入当前光标后开始编辑A进入当前光标所在行的行末开始编辑i进入当前光标位置开始编辑I进入当前光标所在行的行头开始编辑o进入当前光标的下一行开始编辑O进入当前光标的上一行开始编辑命令模式切换到末行模式字符作用:对文本的设置或保存工作/对文本进行全文向下搜索string?对文本进

2021-10-08 16:24:20 168 1

原创 C语言单链表

线性链表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素 (可以是连续的,也可以是不连续的) 。因此为了表示每个元素与其后继元素之间的逻辑关系,对于这个元素来说,除了存储其本身的信息之外,还需存储一个指示其后继的信息。称为结点。包括数据域与指针域。typedef struct Lnode{ int data; struct Lnode *next;}Lnode,*Linklist;初始化单链表void Initlist(Linklist plist)// Node*==PNod

2021-07-25 12:17:55 133 2

原创 Linux 系统上的库文件生成与使用

1.什么是库文件库是一组实现编译好的方法的集合。Linux系统存储的库一般在:/lib或 /usr/lib。在64位的系统上有些库还可能在/usr/lib64下。而库的头文件一般会存储在/usr/include下或者子目录下。库有两种,一种是静态库,其命令规则为libxxx.a,一种是共享库,命令规则为libxxx.so。如下图所示:2.静态库的生成与使用2.1 静态库的生成以下是需要生成静态库的”.c”文件,其中“foo.h”中是函数的声明,“add.c”和“max.c”函数的定义:第

2021-06-10 12:32:11 2959 5

原创 C语言定长线性表的实现

代码块如下#include<stdio.h>#include<stdlib.h>#define MAXSIZE 10typedef struct Sqlist{ int length; int elem[MAXSIZE];}Sqlist,*SQlist;void Initlist(SQlist sq)//初始化线性表{ sq->length = 0;}int Getlength(SQlist sq)//得到现在线性表的长度{ return s

2021-06-04 13:30:39 122

原创 C语言:给定整数n和m,满足n能被2m整除。对于一串连续递增整数数列1,2,3,4…,每隔m个符号翻转一次,最初符号为‘-’

例如n=8,m=2,数列就是-1,-2,3,4,-5,-6,7,8而n=4,m=1,数列就是-1,2,-3,4现在让你算算前n项和为多少C语言解决:#include<stdio.h>int main(){ int n,m; int sum=0; int flag=-1; scanf("%d %d",&n,&m); assert(n%(2*m)==0); for(int i=1;i<=n;i++) { sum+=i*flag; if(i%m

2021-04-20 20:35:17 491

原创 PTA 习题5-6 使用函数输出水仙花数 (20 分)

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1​^3+ 5^3+ 3^3 。本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。函数接口定义:int narcissistic( int number );void PrintN( int m, int n );函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。函数PrintN则打印开区间(m, n)内所

2021-04-02 19:03:08 940

原创 PTA 习题5-3 使用函数计算两点间的距离 (10 分)

本题要求实现一个函数,对给定平面任意两点坐标(x​1​​ ,y1)和(x2,y​2​​),求这两点之间的距离。函数接口定义:double dist( double x1, double y1, double x2, double y2 );其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函数dist应返回两点间的距离。裁判测试程序样例:#include <stdio.h>#include <math.h>double dist( double

2021-03-30 21:36:21 644

原创 PTA 习题5-2 使用函数求奇数和(15 分)

本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。函数接口定义:int even( int n );int OddSum( int List[], int N );其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和裁判测试程序样例:#include <stdio.h>#define MAXN 10int even( int n );in

2021-03-30 21:25:48 330

原创 PTA 练习2-10 计算分段函数[1] (10 分)

本题目要求计算下列分段函数f(x)的值:输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留一位小数。输入样例1:10输出样例1:f(10.0) = 0.1输入样例2:0输出样例2:f(0.0) = 0.0#include<stdio.h>int main(){ float x; double result; scanf("%f", &x); if (x

2021-03-29 22:37:42 439

原创 PTA 练习2-3 输出倒三角图案 (5 分)

本题要求编写程序,输出指定的由“*”组成的倒三角图案。输入格式:本题目没有输入。输出格式:按照下列格式输出由“*”组成的倒三角图案* * * * * * * * * *#include<stdio.h>int main(void){printf("* * * *\n");printf(" * * *\n");printf(" * *\n");printf(" *\n");return 0;}注意格式...

2021-03-29 22:14:59 338

原创 C语言递归调用

递归调用C语言的函数都支持递归,也就是说,每个函数都可以直接或间接的调用自己。所谓的间接调用,是指再递归函数调用的下层函数中再调用自己。递归关系如下图所示:递归之所以可以实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。这种机制是当代大多数程序设计语言实现子程序结构的基础,也使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数,那么第二个调用就成为调用函数的递归,因为它发生在调用函数的当前执行过

2021-02-19 21:10:16 979

原创 C语言文件基础

文件1.数据流2.缓冲区(Buffer)3.文件类型4.文件存取方式5.C语言提供的标准文件1.数据流指程序与数据的交互是以流的形式进行的。进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。2.缓冲区(Buffer)指在程序执行时,所提供的一块存储空间(在内存中),可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:一种是设置缓冲区,另

2021-01-28 23:27:23 198

原创 总线的功能和规范

总线按功能和规范可分为五大类型:数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。地址总线(Address Bus)︰用来指定在RAM(Random Access Memory)之中储存的数据的地址。控制总线(Control Bus)︰将微处理器控制单元(Control Unit)的信号,传送到周边设备。扩展总线(Expansion Bus):外部设备和计算机主机进行数据通信的总线,例如ISA总线,PCI总线。局部总线(Local Bus)︰取代更高速数据传输的

2021-01-25 20:06:08 807 1

原创 C语言可见性和生存期

作用域(可见性)指标识符能够被使用的范围;只有在作用域内标识符才可以被使用。此阶段针对编译和链接过程。1)函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域。2)文件作用域也称全局作用域。定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束。文件中定义的全局变量和函数都具有文件作用域。生存期也叫生命期(Life time)。此阶段针对的是程序的执行过程。生命期指的是标识符从程序开始运行时被创建,具有存储空间,到程序运行结束时消亡,释放存储

2021-01-20 21:28:27 419

原创 C语言逗号运算符

在C语言中,逗号可以将多个表达式分隔开来。其中,用逗号分隔的表达式被分别计算,并且整个表达式的值都是最后一个表达式的值。逗号表达式成为顺序求值运算符,一般形式如下:表达式1,表达式2,…,表达式n;逗号表达式的求解过程为:先求解表达式1,再求解表达式2,一直求解到表达式n。整个逗号表达式的值是表达式n的值。下面观察使用逗号运算符的代码:Value=2+5,1+2,5+7;上面的语句中,Value的值为7,而不是12,这是因为赋值运算符的优先级高于逗号运算符。因此要先执行赋值的运算。如果要先执

2021-01-08 12:35:39 8328

原创 C语言解决n!的问题

#include<stdio.h>int main(){ int i, n; int b = 1; printf("please enter the n:\n"); scanf_s("%d", &n); //输入n if (n < 0) //判断输入的n是否为正数 return -1; else { for (i = 1; i <= n; i++ ) { b = i * b; //计算部分

2021-01-03 13:47:31 925

原创 算法和算法分析

算法1)算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法五个特性:有穷性,确定性,可行性,输入,输出。2)算法设计要求:正确性,可读性,健壮性,效率与低存储量需求。算法分析算法分析包括:时间复杂度,空间复杂度,稳定性...

2020-12-02 00:05:49 293

原创 C语言用数组名作函数参数

用数组元素作函数实参可以向形参传递一个数组元素的值,有时希望在函数中处理整个数组的元素,此时可以用数组名作为函数实参,但是并不是将该数组中全部元素传递给所对应的形参。由于数组名代表数组的首地址,因此只是将数组的首元素的地址传递给所对应的形参,因此对应的形参应当是数组名或指针变量。例:有十个学生成绩,用一个函数求全体学生的平均成绩在主函数中定义一个实型数组score,将输入的10个学生成绩存放在数组中。average函数用来求学生的平均成绩。这样就需要把数组有关的信息传递给average函数。用数组名作为

2020-11-23 23:16:00 2226

原创 C语言简单的递归程序

题目:有5个学生坐在一起,问第五个学生多少岁?一个说他比第四个学生大2岁。问第4个学生岁数,他说比第3个学生大2岁。问第3个学生,又说比第2个学生大2岁。问第2个学生,说比第1个学生大2岁。最后问第1个学生,他说是10岁、请第5个学生多大。解题思路:想知道求第五个学生的年龄,就必须先知道第四个学生的年龄。要想求第4个学生的年龄必须先知道第3个学生的年龄,而第3个学生的年龄又取决于第2个学生的年龄,第2个学生的年龄取决第1个学生的年龄。而且每一人学生的年龄都比其前1个学生的年龄大2。显然,这是一个递归问

2020-11-18 23:56:30 1578

原创 C语言字符串处理函数

函数形式功 能gets(字符数组)从终端输入一个字符串到字符数组puts(字符数组)将一个字符串输出到终端strcatstrcpystrcmp

2020-11-17 23:56:16 92

原创 C语言函数的调用方式

1.函数语句调用没有返回值的函数,函数调用单独作为一个语句print_star();//这时不要求函数带回值,只要求函数完成一定的操作2.函数表达式函数出现在一个表达式中,这种表达式称为函数表达式.这时要求函数带回一个确定的值直接赋给一个变量c=max(x,y);//这时max(x,y);是赋值表达式的一部分3.函数参数函数调用作为一个函数的实参printf("%d",max(a,b));//把max(a,b)作为printf函数的一个参数...

2020-11-15 23:48:57 2193

原创 C语言的特点

高效性,灵活性,功能丰富,表达力强,移植性好

2020-11-13 23:31:38 180

原创 C语言行和列的互换

例:将一个二维数组的行和列的元素互换,存到另一个二维数组b中。思路:将a数组中第 i 行 j 列元素赋给b数组中 j 行 i 列元素,例如a[0][0]赋给b[0][0],a[0][1]赋给b[1][0],a[0][2]赋给b[2][0] 。则可以用双重循环来处理,用外循环控制行的变化,内循环控制列的变化。程序源码#include<stdio.h>int main(){ int a[2][3] = {{1,2,3},{4,5,6}} //定义一个二行三列的数组 int b[3]

2020-11-08 23:58:16 5865

原创 C语言斐波那契数列

思路:建立一个数组,将数列中第一个数放在数组第一个元素中。输出数列中前20个数。数列第二个数放在数组第二个的元素中,以此类推。这样数组的序号为 i 的元素的值是前两个元素值之和。程序源码#include<stdio.h>int main(){ int i; int a[20] = {1,1}; for (i = 2; i < 20; i++) a[i] = a[i - 2] + a[i - 1]; //求出a[2]到a[19]的值 for (i

2020-11-07 23:32:35 1263

原创 C语言解决排序问题

排序问题一般思路是:先将第一个数和第二个数比较,如果第二个数比第一个数小,就将两个数进行互换,这样,小的数就排在了前面。然后再将第二个数和第三个数进行比较,如果第二个数比第三个数小,就将两个数进行互换,这样第三个数就是三个数中最大的了。以此规律,将相邻的两个数进行比较,将小的数调至前面。按照此规律,如果有n个数,则要进行n-1次比较。在第一趟比较中进行n-1次两两比较,在第j趟比较中要进行n-j次的两两比较。源码如下#include <stdio.h>int main(){ int

2020-11-06 23:51:44 2991

原创 C语言while与do-while循环的比较

凡是能用while循环处理,都能用do-while循环处理。在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的判断表达式一开始就为假(0)时,两种循环的结果是不同的。#include<stdio.h>int main(){ int sum = 0, i; scanf("%d",&i); while (i<=10) { sum = sum + i; i++; } p

2020-11-06 00:04:17 1484

原创 C语言链表完成La和Lb中的数据元素按值递增有序排列

源码如下#pragma once#include<stdio.h>#include<stdlib.h>#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef int ElemType;typedef int Status;typedef struct Node{ ElemType data; struct Node* next;}LNode,

2020-11-04 22:09:40 1665

原创 C语言线性链表

线性表的链式存储结构的特点线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此为了表示每个数据元素与其直接后继数据元素之间的逻辑关系之外,对一个数据元素来说,除了存储本身的信息之外还需存储一个指示其后继的信息。结点则是这两部分信息组成数据元素的存储映像。一个节点包含了两个域,分别为数据域和指针域。数据域是存储数据元素信息的域。指针域则是存储直接后继存储位置的域。指针域中存储的信息称作指针和链。n个结点链构成一个链表,即为线性表的

2020-11-03 23:54:40 1614

原创 C语言的运算符的优先级和结合性

C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此这个表达式相当于a-(b*c) ,如果在一个运算对象两侧的运算符的优先级别相同,例如a-b+c,则按照规定的结合方向处理。C语言还规定了各种运算符的结合方向,众所周知的是,算术运算符的结合方式为“自左向右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”,又称左结合性,即运算对象先与左面的运

2020-11-02 23:47:13 2184

原创 C语言实现解决素数问题

源码如下#include <stdio.h>int main() int x; scanf_s("%d", &x); int i; int isPrime = 1; for ( i = 2; i < x; i++) { if (x % i == 0) { isPrime = 0; break; } } if (isPrime == 0) { printf("%d不是素数\n",x); } else{ printf("%

2020-11-01 13:39:17 484 1

原创 运算符优先级(表格)

表格如下优先级运算符1()2! ++ - -3* / %4+ -5< <= > >=6== !=7&&8逻辑运算符或9= += -= *= /= %=注:所有的逻辑运算符都是从左到右依次优先级增大的优先级为1的是 () 从左至右优先级依次增大优先级为2的是 ! ++ --

2020-10-28 23:28:23 1807

原创 C语言实现 输入一个整数金额,计算出使用的一角,二角,五角钱的个数

源码如下#include <stdio.h>int main(){ int x; int one, two, five; //分别代表一角钱,二角钱,五角钱 scanf("%d", &x); //输入一个整数金额 for ( one = 1; one < x*10; one++ ) { for ( two = 1; two < x*10/2; two++ ) { for ( five = 1; five < x*10/5

2020-10-27 23:47:06 1674 2

原创 C语言实现将一个几位数分开的功能

源码如下int main(){ int x; scanf_s("%d", &x); //输入所要分开的几位数 int mask = 1; int t = x; while (t > 9) { t /= 10; mask *= 10; } do { int i=1; int d = x / mask; printf("第%d个数为%d", i, d); if (mask > 9) { printf(

2020-10-26 23:48:13 1992 1

原创 C语言玩猜字谜游戏

源码如下#include<stdio.h>#include <time.h>#include <conio.h> //rand()函数要使用的头文件int main(){ srand((unsigned)time(NULL)); //指定了不同的种子,这样rand函数的结果就不完全相同了 int number = rand() % 100 + 1; int a; int count = 0; do { printf("enter one

2020-10-24 23:42:33 766

C语言的运算符的优先级和结合性

C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。C语言还规定了各种运算符的结合方向,众所周知的是,算术运算符的结合方式为“自左向右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”,又称左结合性,即运算对象先与左面的运算符结合。在C语言钟有些运算符的结合方向是“自左至右”,即右结合性。

2020-11-02

空空如也

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

TA关注的人

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