C语言
向南的小企鹅
啊这
展开
-
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 · 2143 阅读 · 1 评论 -
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 · 106 阅读 · 0 评论 -
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 · 475 阅读 · 0 评论 -
C语言递归调用
递归调用C语言的函数都支持递归,也就是说,每个函数都可以直接或间接的调用自己。所谓的间接调用,是指再递归函数调用的下层函数中再调用自己。递归关系如下图所示:递归之所以可以实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。这种机制是当代大多数程序设计语言实现子程序结构的基础,也使得递归成为可能。假定某个调用函数调用了一个被调用函数,再假定被调用函数又反过来调用了调用函数,那么第二个调用就成为调用函数的递归,因为它发生在调用函数的当前执行过原创 2021-02-19 21:10:16 · 965 阅读 · 0 评论 -
C语言文件基础
文件1.数据流2.缓冲区(Buffer)3.文件类型4.文件存取方式5.C语言提供的标准文件1.数据流指程序与数据的交互是以流的形式进行的。进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。2.缓冲区(Buffer)指在程序执行时,所提供的一块存储空间(在内存中),可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:一种是设置缓冲区,另原创 2021-01-28 23:27:23 · 146 阅读 · 0 评论 -
C语言可见性和生存期
作用域(可见性)指标识符能够被使用的范围;只有在作用域内标识符才可以被使用。此阶段针对编译和链接过程。1)函数中定义的标识符,包括形参和函数体中定义的局部变量,作用域都在该函数内,也称作函数域。2)文件作用域也称全局作用域。定义在所有函数之外的标识符,具有文件作用域,作用域为从定义处到整个源文件结束。文件中定义的全局变量和函数都具有文件作用域。生存期也叫生命期(Life time)。此阶段针对的是程序的执行过程。生命期指的是标识符从程序开始运行时被创建,具有存储空间,到程序运行结束时消亡,释放存储原创 2021-01-20 21:28:27 · 374 阅读 · 0 评论 -
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 · 8157 阅读 · 0 评论 -
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 · 891 阅读 · 0 评论 -
C语言用数组名作函数参数
用数组元素作函数实参可以向形参传递一个数组元素的值,有时希望在函数中处理整个数组的元素,此时可以用数组名作为函数实参,但是并不是将该数组中全部元素传递给所对应的形参。由于数组名代表数组的首地址,因此只是将数组的首元素的地址传递给所对应的形参,因此对应的形参应当是数组名或指针变量。例:有十个学生成绩,用一个函数求全体学生的平均成绩在主函数中定义一个实型数组score,将输入的10个学生成绩存放在数组中。average函数用来求学生的平均成绩。这样就需要把数组有关的信息传递给average函数。用数组名作为原创 2020-11-23 23:16:00 · 2185 阅读 · 0 评论 -
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 · 6822 阅读 · 2 评论 -
C语言字符串处理函数
函数形式功 能gets(字符数组)从终端输入一个字符串到字符数组puts(字符数组)将一个字符串输出到终端strcatstrcpystrcmp原创 2020-11-17 23:56:16 · 86 阅读 · 0 评论 -
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 · 2157 阅读 · 0 评论 -
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 · 5779 阅读 · 0 评论 -
C语言解决排序问题
排序问题一般思路是:先将第一个数和第二个数比较,如果第二个数比第一个数小,就将两个数进行互换,这样,小的数就排在了前面。然后再将第二个数和第三个数进行比较,如果第二个数比第三个数小,就将两个数进行互换,这样第三个数就是三个数中最大的了。以此规律,将相邻的两个数进行比较,将小的数调至前面。按照此规律,如果有n个数,则要进行n-1次比较。在第一趟比较中进行n-1次两两比较,在第j趟比较中要进行n-j次的两两比较。源码如下#include <stdio.h>int main(){ int原创 2020-11-06 23:51:44 · 2956 阅读 · 0 评论 -
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 · 1428 阅读 · 0 评论 -
C语言线性链表
线性表的链式存储结构的特点线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此为了表示每个数据元素与其直接后继数据元素之间的逻辑关系之外,对一个数据元素来说,除了存储本身的信息之外还需存储一个指示其后继的信息。结点则是这两部分信息组成数据元素的存储映像。一个节点包含了两个域,分别为数据域和指针域。数据域是存储数据元素信息的域。指针域则是存储直接后继存储位置的域。指针域中存储的信息称作指针和链。n个结点链构成一个链表,即为线性表的原创 2020-11-03 23:54:40 · 1575 阅读 · 0 评论 -
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 · 1608 阅读 · 0 评论 -
C语言的运算符的优先级和结合性
C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式a-b*c,b的左侧为减号,右侧为乘号,而乘号优先于减号,因此这个表达式相当于a-(b*c) ,如果在一个运算对象两侧的运算符的优先级别相同,例如a-b+c,则按照规定的结合方向处理。C语言还规定了各种运算符的结合方向,众所周知的是,算术运算符的结合方式为“自左向右”,即先左后右,因此b先与减号结合,执行a-b的运算,再执行加c的运算。“自左至右的结合方向”,又称左结合性,即运算对象先与左面的运原创 2020-11-02 23:47:13 · 2118 阅读 · 0 评论 -
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 · 466 阅读 · 1 评论 -
运算符优先级(表格)
表格如下优先级运算符1()2! ++ - -3* / %4+ -5< <= > >=6== !=7&&8逻辑运算符或9= += -= *= /= %=注:所有的逻辑运算符都是从左到右依次优先级增大的优先级为1的是 () 从左至右优先级依次增大优先级为2的是 ! ++ --原创 2020-10-28 23:28:23 · 1758 阅读 · 0 评论 -
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 · 1631 阅读 · 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 · 1918 阅读 · 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 · 744 阅读 · 0 评论 -
C语言解决平均数问题
源码如下#include <stdio.h>int main(){ int sum=0; int count=0; int a; double ave=0; scanf("%d",&a); while (a!=-1) { a+=sum; count++; scanf("%d",&a); } ave=sum/count; printf("The average is =%f\n",ave); return 0;}阿里嘎多...原创 2020-10-24 23:37:14 · 342 阅读 · 0 评论