C语言学习笔记
吃最辣的锅
这个作者很懒,什么都没留下…
展开
-
C语言的typedef和#define
1.typedef用于给已有的类型名指定一个新的类型名typedef int INTEGER;typedef float REAL;INTEGER i,j; //等价于:int i,j;REAL x,y; //等价于:float x,y;/*========================================================*/typedef st...原创 2019-12-03 18:21:53 · 147 阅读 · 0 评论 -
共用体、枚举类型
共用体定义与引用union 共用体名{ 共用体成员}变量表列;共用体名.共用体成员共用体变量所占内存长度等于最长的成员的长度同一内存段可以存放不同类型的成员,但在每一瞬间只能存放其中一种共用体变量起作用的成员是最后一次存放的成员共用体变量的地址和它各个成员的地址是同一个地址枚举类型声明方式enum weekday{sun,mon,tue,wed,thu,...原创 2019-12-03 18:01:45 · 211 阅读 · 0 评论 -
单链表的建立及其结点的查找、删除、插入
目录一、静态链表二、动态链表1.动态列表相关函数2.动态链表的建立3.动态链表的遍历查找4.动态链表的删除5.动态链表的插入一、静态链表静态链表中,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放。例子:#include <stdio.h>struct student{ char *name; float score; struct student *ne...原创 2019-12-03 16:10:39 · 954 阅读 · 0 评论 -
C指针——详细笔记
目录概述指针变量的定义、引用指针变量作函数参数一维数组与指针一维数组名作函数参数多维数组与指针字符串与指针指向函数的指针结构体与指针指针数组、数组指针指向指针的指针指针运算概述在程序中一般是通过变量名对内存单元进行存取操作的。其实程序经编译后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的 。指针是变量的地址,指针变量是只能存放地址的变量。指针变量的定义、引用1.定义指针变...原创 2019-12-02 23:17:55 · 303 阅读 · 0 评论 -
位运算与位段
1. 位运算总结2. 位段在数据通信领域,控制信息往往只占一个字节中的一个或几个二进制位,常常在一个字节中存放几个信息。c语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或“位域”。尤其要注意各位段的引用范围【注】1字节=8位1.位段举例struct packed_data{ // 尤其要注意各位段的...原创 2019-11-30 01:01:29 · 421 阅读 · 0 评论 -
预处理命令
预处理命令不是c语言本身的组成部分,不能直接对它们进行编译。经过预处理后的程序不再包括预处理命令,由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。c提供的预处理功能主要有3种:宏定义文件包含条件编译1.宏定义1.1不带参数的宏定义1.作用:用指定标识符来代替一个字符串。#define 标识符 字符串2.在预编译时将宏名替换成字符串的过程称为“宏展开”3...原创 2019-11-29 23:17:28 · 620 阅读 · 0 评论 -
C语言文件操作——定位、出错检测
fseek函数1.作用:利用fseek函数通过对文件的位置指针的控制,可以实现对流式文件的随机读写。fseek一般用于二进制文件。2.调用形式fseek(文件指针,位移量,起始点);//位移量:以起始点为基点向前移动的字节数起始点被编码为:0,1,20:文件开始(SEEK_SET)1:当前位置(SEEK_CUR)2:文件末尾(SEEK_END)feof函数1.作用:判断文件是否...原创 2019-11-29 17:51:56 · 1118 阅读 · 0 评论 -
C语言文件操作——开、关、读、写
概述1.一个C文件是一个字节流或二进制流,它把数据看作是一连串的字符(字节),而不考虑记录的界限。在C语言中对文件的存取是以字符(字节)为单位的。(注:流式文件 —— 输出时不会自动增加回车换行符以作为记录结束的标志,输入时不以回车换行符作为记录的间隔)2.ANSI C标准使用缓冲文件系统处理文本文件和二进制文件。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息,这些信息是保存在...原创 2019-11-29 17:17:45 · 680 阅读 · 0 评论 -
标识符
合法的标识符C语言规定,标识符只能由字母、数字、下划线三种字符组成,并且标识符首字符只能为字母或下划线。同时,还应注意,命名变量时不能与C语言中的关键字重复。C语言中的关键字autoregisterexternstaticcharshortintfloatlongsignedunsigneddoublevoidstructunionenumtypedef...原创 2019-11-29 11:13:04 · 250 阅读 · 0 评论 -
变量的存储类别
在C语言中,每一个变量和函数都有两个属性,数据类型(int,float…)和数据存储类别。数据存储方式分为两大类:静态存储类、动态存储类。具体包括四类:auto、static、register、extern。对一个变量只能声明为一种存储类别。auto1.函数中的局部变量,如果不专门声明为static存储类,则动态地分配存储空间,数据存储在动态存储区。2.若变量没有声明存储类别,则默认存储类...原创 2019-11-29 01:04:33 · 1788 阅读 · 0 评论 -
局部变量&全局变量
局部变量局部变量只在本函数范围内有效不同函数可以使用相同名字的变量函数的形参也是局部变量在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效全局变量全局变量可以为本文件内其他函数所共用,作用范围:从定义变量的位置到本源文件结束,这样来看,同一源文件内变量定义越早,生命周期越长设置全局变量的作用是增加了函数间数据联系的渠道同一源文件内,若外部变量与局部变量同名...原创 2019-11-28 22:45:40 · 456 阅读 · 0 评论 -
函数注意事项
函数声明C语言中,凡是不加类型说明的函数,自动按整型处理函数的返回值是通过函数中的return语句获得的若函数值的类型和return语句中表达式的值不一致,则以函数类型为准在同一个文件中,如果使用自己定义的函数,而该函数的位置在调用它的函数之后,则应该在主调函数中声明被调用的函数函数声明可以不写形参名,而只写形参类型,因为编译系统只检查参数个数和参数类型如果被调用的函数类型为整型,C...原创 2019-11-28 22:26:01 · 570 阅读 · 0 评论 -
字符串及相关函数
字符串注意事项:初始化时,系统对字符串常量自动加一个’\0’作为结束符. char c[]="hello"; printf("%d",sizeof(c)/sizeof(char));结果:62.用scanf输入字符串时,输入项如果是字符数组名,不应再添加地址符&.3.输出的字符串不包括结束符’\0’.4.字符串不能直接赋值字符串处理函数:puts(字符数组名) ...原创 2019-11-28 21:03:57 · 143 阅读 · 0 评论 -
转义字符
转义字符是一种特殊形式的字符常量常用转义字符及表示方法:注意:\ddd:代表的是八进制数ddd转换为十进制后的ASCII码所代表的字符例如: char c='\101';printf("%c",c);结果:A\xhh:代表的是十六进制数hh转换为十进制后的ASCII码所代表的字符例如: char c='\x41';printf("%c",c);结果:A...原创 2019-11-28 18:41:07 · 1193 阅读 · 0 评论 -
运算符和结合性
C语言中,运算符优先级从高到低共15级,同一优先级以自左至右或者自右向左的方向结合。其中,只有第2优先级(所有的单目运算符)和第13优先级(条件运算符)、14优先级(赋值运算符)使用自右至左的结合方式,其余皆为自左向右结合。例子:int i=3;printf("%d %d",-i++,i);答案:-3 4负号运算符与自增运算符属于同一运算优先级,都遵循自右向左的结合方向,所以,-i...原创 2019-11-28 17:20:29 · 784 阅读 · 0 评论 -
逗号运算符&逗号表达式
一般形式:表达式1,表达式2注意事项:逗号运算符是C语言运算符中优先级最低的运算符结合方式:自左至右例子:a=3*5,a*4结果:a=60原创 2019-11-28 12:24:53 · 391 阅读 · 0 评论 -
逻辑运算符&逻辑表达式
C语言提供三种逻辑表达式,按照运算优先级从高到低依次为:!、&&、||。注意事项:由系统给出的逻辑运算结果非0即1,不可能是其他数值逻辑运算符两侧的运算对象可以是数字0、1,也可以是字符型、实型、指针型等。一条语句中,并不是所有的逻辑运算符都被执行,若由前序逻辑运算已知表达式的值,则后续逻辑运算不会执行。如:a&&b&&c,只有a为真时才去...原创 2019-11-28 12:09:45 · 1771 阅读 · 0 评论 -
条件运算符—C语言中唯一的3目运算符
表达式1? 表达式2:表达式3注意:条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。反之同理。条件运算符优先于赋值运算符,比如m=(a>b)?a:b可写成m=a>b?a:b条件运算符结合方向为:自右至左。比如a=1,b=2,c=3,d=4时a>b?a:(c>d?c:d)值为4条件表达式中三个表达式的...原创 2019-11-28 11:28:34 · 999 阅读 · 0 评论 -
switch语句—多路分支选择语句
switch(表达式){ case 表达式1:语句1 case 表达式2:语句2 . . . case 表达式n: 语句n default: 语句n+1}注意事项:“case 常量表达式”只起语句标号作用,并不是在该处进行条件判断在执行swich语句时根据swich后面表达式的值找到匹配的入口标号,就从此标号开始执行下去,不再进行判断如果想在执行完一个cas...原创 2019-11-28 11:06:48 · 1181 阅读 · 2 评论 -
18-6.1:快递运费
#include <stdio.h>#include <stdlib.h>int main(){ float calculate_fare(int area,float weight); int area; float weight,fare; printf("Please input area code and weight separated by ...原创 2019-11-27 16:09:00 · 234 阅读 · 0 评论 -
16-6.2:汽车销量排行榜
#include<stdio.h>#include<stdlib.h>#define N 200typedef struct{ char cartype[20]; char menufacturer[20]; int sales[12]; int sum_sales;//到指定定月份的累计销量 }car;int main(){ void inp...原创 2019-11-27 15:12:55 · 285 阅读 · 0 评论 -
16-6.1:素数对
#include <stdio.h>#include <stdlib.h>int main(){ int judge_prime(int n);//返回0:素数 int n=0,i,j,count=0; while(n<6||n>1000000||n%2!=0) { printf("Input n :\n"); scanf("%d",...原创 2019-11-27 11:18:11 · 115 阅读 · 0 评论 -
15-6.2:手机游戏得分管理程序
#include <stdio.h>#include <stdlib.h>#define N 4#define G 3typedef struct{ char nickname[20]; char id[20]; float score[G]; float aver_score; }game; int main(){ void write()...原创 2019-11-27 00:00:47 · 193 阅读 · 0 评论 -
15-6.1:单链表反转
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define N 10 #define LEN sizeof(struct link)struct link{ int data; struct link *next;};int main(){ struct link *...原创 2019-11-26 22:15:11 · 104 阅读 · 0 评论 -
14-6.2:公司人员管理程序
#include <stdio.h>#include <stdlib.h>#define M 50 typedef struct{ char id[20]; char name[20]; char gender;//f or m int age; float salary; float bonus; }SA;int main(){ void...原创 2019-11-26 12:09:09 · 168 阅读 · 0 评论 -
14-6.1:约瑟夫环问题
约瑟夫环问题是一个经典的循环链表问题,题意是:已知 n 个人(分别用编号 1,2,3,…,n 表示)围坐在一张圆桌周围,从编号为 k 的人开始顺时针报数,数到 m 的那个人出列;他的下一个人又从 1 开始,还是顺时针开始报数,数到 m 的那个人又出列;依次重复下去,直到圆桌上不足m个人。原创 2019-11-26 02:52:47 · 163 阅读 · 0 评论 -
13-6.2:学生成绩管理程序
#include <stdio.h>#include <stdlib.h>#define M 50#define N 3typedef struct{ char id[20]; char name[20]; float score[3]; float aver; }stu;int main(){ void read();//输入学生信息并存在...原创 2019-11-25 10:56:00 · 208 阅读 · 0 评论 -
13-6.1:三角阵
#include <stdio.h>#include <stdlib.h>int main(){ int a[15],i,j,k=0; for(i=1;i<=15;i++) { a[i-1]=i; } for(i=1;i<=5;i++) { for(j=1;j<=i;j++) { printf("%-4d",a[k]);...原创 2019-11-25 00:17:46 · 183 阅读 · 0 评论 -
12-6.2:学生成绩管理系统
#include <stdio.h>#include <stdlib.h>#define M 50#define N 3struct student{ char id[20]; char name[20]; float score[N]; float aver;}s[M];int main(){ void get_data(struct stu...原创 2019-11-20 00:10:04 · 214 阅读 · 0 评论 -
12-6.1:升序排序+普通折半查找
#include <stdio.h>#include <stdlib.h>int main(){ int i,x=2;//测试数据 void rank(int a[],int n); void search(int a[],int n,int x);//前提是已进行过升序排序 int a[9]={9,2,6,4,8,3,7,5,1};//测试数据 ra...原创 2019-11-20 00:03:36 · 248 阅读 · 0 评论 -
18-6.2:密码生成器
#include <stdio.h>#include <stdlib.h>#define N 500 int main(int argc, char *argv[]) { gogogo(); return 0;}void gogogo(){ char juzi[N],yuming[N]; int m,n; int num_bool=0,sig_b...原创 2019-11-19 23:10:46 · 197 阅读 · 0 评论