【考研—C语言程序设计】合集

Pre>杂点

C语言特点

语言简洁、方便灵活;运算符、数据类型丰富
具有结构化控制语句、自由度大、可直接访问物理地址
可移植性好、执行效率高

算法评价的四个维度

可读性、正确性、健壮性、高效性(时间空间复杂度)

算法的五个基本特性

输入、输出、有穷性、确定性、有效性

数据

在这里插入图片描述

数据:就是“信息” 的统称
数据对象:该数据所对应的“信息” 所研究的对象
数据元素:
数据项:

Part1> 宏

“#” 打头系列都叫“宏”

常见宏

#include系列为 头文件引用系列

#include<iostream>// <> 调用的是系统头文件,
#include "algorithm" //  " " 优先调用自备头文件,如果没有,则调用系统头文件

#define 为字符代换系列

#define add(x,y) x+y // 是一个“完全”的字符替代,
//eg   5*add(3,4)
//结果为  5*3+4 = 19

换句话说,#define不改变计算优先级

其他

#if 0
#endif

头文件的作用

1> 调用库功能
2> 可加强安全检查;当某个端口被调用时,可被察觉与检测。

Part2> 输入输出

1. 字符常量

\n		回车						\?		字符?
\t		tab键						\"		字符"
\b		退格键						\' 		字符'
\\		字符“\”

2. scanf 与 printf

格式

scanf() 包含两个部分:格式控制部分变量地址部分。使用时必须指明被输入变量的地址。
printf() 格式控制部分。

类型符

%d		int类型					%s		string类型
%ld		long类型				%e		指数形式(类似于  1e9 这种)
%f		float类型				%c		char类型
%%		字符 %					%.2f 	保留两位小数

补位输出

% 对齐符		补位符号		补位长度		数据类型

默认:右对齐空格补位
右对齐符号:“-”
eg> %6d int类型,长度6位,缺位则用空格补位置,右对齐。
eg>%-06d int类型,长度6位,缺位则用0补位,文本信息左对齐。

按位输入

% 输入位数  数据类型

eg> scanf( "%2d",&x); 从当前位置开始,顺序读取两位长度的数字,将其存为int。

3. 字符串输入输出

gets(name) 读取字符串,以\n输入终止标志
puts(name) 输出字符串,自动输出\n
scanf("%s",&name) 读取字符串,以空格输入终止标志
printf("%s",&name) 输出字符串。

Part3> 运算

1. 类型转换

强制类型转换方式:(typename) name

long long a;
(int)a//表示强制转换为int类型的a

自动类型转换规则: 向最高精度对齐

常见类型的精度排序: long double > double > long long > int > float > char > bool
long > int >short ; double > float ;

2. 运算符

算术运算符:

+ - * /  % 加减乘除、取模
+=	-=		*=	/=		%=

a++  a--,先参与其他运算,后自加
++a  --a,先自加,后参与其他运算

位运算
>>   >>=   <<  <<=
&  |  ^   与、或、异或  

关系运算符

>  >=  <  <=  
==
!=

逻辑运算符

&& 且   ||或  !非

条件运算式

语句A ? 语句1:语句2
如果语句A==真,则返回语句1;否则返回语句2。

※※ 运算优先级

括号 > 算术 > 关系 > 逻辑 > 赋值
算术运算符: 位运算 > 乘除、取模 > 加减
关系运算符: 顺次
逻辑运算符:非 > 且 > 或

短路现象
语句a && 语句b, 如果语句a为假,则不会执行语句b
语句a || 语句b, 如果语句a为真,则不会执行语句b

Part4> 条件语句

易错集合

易错1: switch语句的执行逻辑是:到达某个case时发现为真,则将该case及其之后所有case的语句全部执行。
易错2: break语句:可用于switchwhilefor语句,用于终止当前层的语句结构(只终止最内层循环)
易错3:continue语句:用于whilefor语句,用于跳过当前层的当前步骤(对最内层循环有效)
易错4: do whilewhile 的终止条件的判断

switch条件结构

switch语句的执行逻辑是:到达某个case时发现为真,则将该case及其之后所有case的语句全部执行。

switch(条件语句){
	case 1:1
		语句组1
	case 2:2
		语句组2
		break;//可有可无
	case 3:3
		语句组3
	...
	default://上述条件都未满足时
		语句组n+1
}

Part5> 变量声明与使用

1. typedef的用法

typedef struct {
	//number list
	int a,b,c;
	char c,d,f;
}STU;
STU list,*head;

即:typedef是个使动词,typedef type-model type-name即 使type-model被称为 type-name

2. 指针

(1)定义

指针即一种变量,这种变量的值=一个存储数据的空间的地址
不管一个指针指向的变量的类型是什么,指针自己、指针这个数据本身所占的空间大小均一致

(2)基础逻辑

(int *) 整体可以视为是一个数据类型,这个数据类型是一个指针,这个指针指向的地址是用于存储int类型的数据的。(char *) (struct *) 等同理

(3)赋值

空指针无法赋值
只能赋值为地址类型的数据

(4)指针数组与数组的指针

指针数组

int *p[n]; 为指针数组,表示一个数组,其中的每个元素都是一个独立的指针。
int *(p[n]); 即:p为这个数组的名字,(int *)这个整体的含义是这个数组的类型(即指针类型)

数组的指针

int a[n]; 是个整型数组,直接一个a可表示a[0]的地址 (指针),数组地址连续,所以指向a[i]的地址的指针可用 (a+i)表示
int a[n][m] 是个整形二维数组,直接a 可表示指向a[0][0]的地址指针,a[i][j] 的地址可以用指针a+(i-1)*m+j表示;同时,二维数组相当于每个元素都是一个一维数组 的 一维数组,所以 a[i] 可以视为一维数组a[i][0~n]的数组名称,因而a[[i]也可以作为常量指针,指向a[[i][0] 的地址。
(※)注:单独的数组名称可以被视为该数组的指针,指向该数组[0]下标的元素的地址,且是一个指针常量,不参与任何计算
int (*p)[n] 一个奇怪的表示方法…目前还没有弄清它的本质逻辑。但是它可以通过 int a[n][m]; p=a; 实现 p[i] 指向 a[i][]这个一维数组
详细解释链接

(5) 指针函数与函数的指针

指针函数

int * function() 即这是一个函数,其返回值为指针

函数的指针

int (*p) ( ) 即这是一个指针,其指向一个函数

3. 全局变量与局部变量的主要区别

1> 生命周期不同。 是否会自动释放。
2> 可使用的范围不同。 任意位置可使用vs某一语句块内使用。

特殊的局部变量

extern

在局部位置声明变量时,如果前面加extern
extern int name则表示该变量名name并不是代表局部变量,
而是表示 该变量名name 为一个全局变量,且已被声明或将被声明;

static

static的用法链接

4. 字符数组、字符串、字符数组表字符串

-------字符串----------

string a; 类型:支持单点修改,可以整体赋值
直接赋值 / 定义:string a=dsafasdfew";
单点修改: a[i]='Z';
函数调用:字符串名称.函数名称()
字符串各个位置的初始默认值=字符串结尾符:\0

常用函数:

int len = a.length() 字符串长度

--------字符数组--------

char a[N];类型:支持单点修改,定义时可整体初始化,赋值时不能整体赋值。
单点修改:a[i]='Z';
[作为普通数组] 定义初始化: char a[]={'a','d','z','c' } ,表长=字母个数,即是个数组,元素为char类型。
[作为字符串] 定义初始化:char a[]={“adfasdfer”} ,表长=字母个数+1,最后一个字母后面会自动补一个'\0'作字符串结尾符;即是个字符串,只不过是以字符数组的形式表示。
[固定表长] 定义初始化: char a[N]={ },无论括号里写什么,表长=N。数组初始值默认为(int)0,也相当于(char) \0

常用函数

int dis=strcmp(s1,s2); 比较s1和s2是否相同,如果相同,返回值为0。可以简单地理解成 strcmp(s1,s2) = s1 - s2;
int length = strlen(s1) 字符数组s1的长度
`

Part6> 文件

打开、创建、关闭

FILE *fp = fopen( "文件名 或 文件路径",操作方式); 其中,fp为文件指针
fclose(fp);关闭文件

三大类操作方式:文本文件二进制文件追加是否保留原内容初始指向位置
”r“ 只读"rb"只读“r+” 打开文件、读或写不删除文件内原内容文件头部
"w"只写”wb“只写”w+“ 新建文件、读或写删除文件内原内容文件头部/尾部
追加”a“读写”ab“读写”a+“ 打开文件、读、写、追不删除文件内原内容文件尾部

常见函数

记忆方法:整体形式与非文件函数类似,再加上文件指针的位置即可

fputc(ch,fp)字符输出
char ch = fgetc(fp)字符输入
fgets(str,n,fp)字符串输入(n-1)位
fputs(str,fp)字符串输出
fscanf(fp,"格式",变量地址)输入
fprintf(fp,"格式",变量名)" 输出
fread(变量地址,sizeof(变量类型),变量个数,fp)整块读入
fwrite(变量地址,sizeof(变量类型),变量个数,fp)整块输出

feof(fp) 当前文件中的操作位置是否达到结束的位置

Part7> 命令

int main(int argc,char *argv[])
其中 argc表示命令行参数个数
argv[]表示指向命令行参数内容的指针 的数组

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言程序设计是计算机专业中必修的一门课程,其包括一个完备的编程语言,使得学生可以进行程序设计开发考研C语言程序设计的难度与之前学习的课程有很大的不同,需要对程序设计有一定的经验和技巧。因此,在学习C语言程序设计时,需要有一定的笔记和总结。 首先,在学习C语言程序设计时,需要掌握语言的基础,包括基础语法、数据类型、运算符和控制语句等。在学习这些基础知识的同时,需要通过实践来掌握C语言的编写规范和习惯。 其次,在此基础上,需要掌握常见的数据结构和算法,在程序设计中灵活应用。这些涉及到的数据结构包括栈、队列、链表和二叉树等,这些结构在实际开发中十分常见,并且能够解决很多实际问题。算法方面,需要熟练掌握搜索、排序、动态规划等基本算法,并结合具体问题进行实践练习。 另外,学习C语言的过程中,需要掌握调试技巧,在程序出现问题时,能够进行快速定位并解决问题。调试技巧包括打断点、输出调试信息等,在程序测试和代码修改中起到了至关重要的作用。 总的来说,学习C语言程序设计需要扎实的基础知识和实践经验,以及良好的编程习惯,这些需要不断的积累和实践。在考研C语言程序设计时,需要注意考试重点和难点,进行有针对性的复习和练习。通过不断的学习和总结,相信可以在C语言程序设计方面取得不错的成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoesM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值