C程序设计——考研复试
文章目录
- 前言
- 第一章——程序设计和C语言
- 第二章——算法
- 第三章——C程序设计之顺序程序设计
- 第四章——选择结构程序
- 第五章——循环结构程序设计
- 第六章—— 数组
- 第七章——函数
- 第八章——指针
- 第九章——用户自己建立的数据类型
- 总结
前言
本人2022考研,复试用书为《C程序设计》第四版,我用的第五版,没有差别。先整体复习,再重难点突破。大多都为基础概念。
第一章——程序设计和C语言
程序:一组计算机能够识别和执行的指令。
指令:使计算机执行特定的操作,如加法指令使计算机进行一次加法运算。
计算机语言:计算机和人都能识别的语言,作为”沟通“桥梁,作用类似于语言。如:汉语用于中国人之间的交流。
计算机语言的分类:如下图,具体分类了解即可。
注:
低级语言与高级语言的区别:低级语言更加贴近”计算机“,也就是用0和1表示为主。高级语言则接近人们习惯,如直接用英文表示。
面向过程与面向对象区别:面向过程注重程序实现过程的细节,而面向对象注重实现过程的对象。
- 源程序、目标程序、可执行程序
源程序是编好代码,保存后的文件夹。 目标程序是编译之后的文件。当讲目标程序加上库函数时就成了可执行文件,也就是可以运行出结果的文件。
第二章——算法
程序=算法+数据结构
.数据结构:对数据的描述。也就是在程序中要指定用到的数据,以及数据的类型和数据的组织形式。 如:int i; 即在程序中用一个int 类型的变量 i;
算法:对操作的描述。描述计算机进行的操作步骤。
算法五大特性,四大表示方法
算法有穷性、有效性、确定性、零输入或多输入、单输出或多输出
算法的表示方法:自然语言、流程图、结构化流程图、伪代码
结构化程序设计方法:自顶向下、逐步细化、模块化设计、结构化编程
三种基本结构:顺序结构、选择结构、循环结构
第三章——C程序设计之顺序程序设计
标识符:标识符即为一个对象的名字。只能由字母、数字、下划线中一种或多种组合而成,且第一个字符必须为字母或下划线。
基本数据类型,如下图:
补码的求法:正数直接用二进制数表示;负数则取反加一。
5的补码:
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
-5的补码:
1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0(取反)
1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1(加一)
注:为何是16个位数;系统分给int型数据2个字节或4个字节。一个字节8位,一位可以存储两个信息,0或者1,也就是可以存储2的8次方个信息。现在都是8个字节,64位的。
- i++与++i的区别:i++先使用原值i,再加1,而++i直接加1
#include<stdio.h>
int main()
{int i=0; printf("%d\n",i++);
}
运行结果为:0
#include<stdio.h>
int main()
{int i=0; printf("%d\n",++i);
}
运行结果:1
- 低精度自动向高精度转化:使用:(int)x;将x转化为int类型。
- getchar接受字符,putchar输出字符
第四章——选择结构程序
- 选择语句:if语句与switch语句。
两者区别:if为两个分支的选择结构。Switch为多分支的选择结构。
- 双目运算符与单目运算符的区别:
如:&&(与逻辑符),它需要两个操作数对象,所以为双目运算符。 !(逻辑非符),为单目运算符,只要求有一个运算对象,如:
!(a>b),这里(a>b)为一个结果。
- 三目运算符:表达式1?表达式2:表达式3
其相当于一个简化的if结构。
如:输入一个字符判断是否为小写字母,若为小写字母则直接输出,否则将其转换为小写字母输出。
第五章——循环结构程序设计
- 为何需要循环结构?
有了顺序和选择结构都能满足日常的程序设计,但是会存在很多重复的处理流程。如:向计算机输入全班50个人的学生成绩,会重复50次相同的输入操作。而使用循环结构就可以使用一个输出函数,循环输出50次即可,简化了代码同时方便了设计、而且避免了冗余。
- 常见的循环语句有哪些?
while循环、for语句。两者可以互换
Whlie的使用方法
While(表达式)
表达式即为一个判断语句,当语句为真执行循环体,否则不执行
{
语句;//循环体只能是一个语句,可以为简单语句也可以为复杂语句,就是一个循环体
}
注:Do while:与while的区别
while先判断,再执行循环体,而Do…while先执行循环体再判断
for的使用方法
for(表达式1;表达式2;表达式3)
{
语句;
}
- Break与continue的比较;
相同点:均改变循环执行的状态。
不同点:
1.break只能放在循环语句与switch语句之中,不能单独使用。2.break结束循环,跳到循环体之外,接着执行循环体下面的语句;而continue语句则结束本次循环,接着执行下次循环
第六章—— 数组
- 为何需要数组?
为了解决变量过多而造成的繁琐,同时彰显其内在联系。
- 数组的基本特征是什么?
数组是一组有序的集合,每个元素都属于同一个数据类型。
- 如何定义数组?
一维数组:int a[常量表达式];
定义一个一维数组后,系统开辟一片存储空间,以下标0开始计数。
当数组大小为10,前5个元素赋值后,后五个元素直接默认为0;
字符数组如何初始化?
- 依次赋值
- 初值个数小于数组长度,则这些字符从前往后存储,其余元素自动定位空字符。
- 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度: Eg: char ch[]={‘c’,’’o’,’p’,y’}//数组ch的长度自动定为10
第七章——函数
- 为何使用函数?
实现模块化编程,便于维护和后续开发。
一个C程序由一个或多个程序模块组成,每个程序模块都作为一个源程序文件。
.如何实现函数?
声明,定义,调用。
- 函数的种类:
库函数与用户定义的函数。
库函数:由系统提供的,用户不必自己定义,可直接使用他们。库函数只提供了一些最基本、最通用的函数,不可能包括所有的函数。
用户定义函数:解决用户专门需要的函数。必须先定义,后使用。
- 局部变量与全局变量
其两者的作用域不同。一个作用局部,一个作用全局。
局部大部分是指子函数内的变量。
- 动态存储方式与静态存储方式
静态存储方式:指程序运行期间由系统分配固定的存储空间方式,容易造成浪费
动态存储方式:在程序运行期间根据需要进行动态的分配存储空间,节约空间
- 自动变量(auto),静态局部变量(static),寄存器变量(register)为3种局部变量有何主要区别?
存储地址不同
自动变量存储在动态存储区中
静态局部变量存储在静态存储区
寄存器存储在cpu中的寄存器中
第八章——指针
- 何为指针?
- List item
指针即地址。
地址的定义:系统根据定义的变量类型,分配一定的长度的空间,内存区的每一个字节都有一个编号,这就是地址。通过地址能够找到所需要的变量单元,可以说,地址指向该变量单元,将地址形象化地称为指针。C语言种的地址包括位置信息和它所指向的数据类型信息。
- 何为指针变量?
存放地址的变量是指针变量,它用来指向另一个对象
- 何为空指针?
指针变量的值为NULL,这种指针变量叫空指针,空指针不能进行引用。所以一般会进行判空处理。
- 何为野指针?
指针变量的值是不确定的或都是无效的,这种指针叫野指针。
使用野指针不一定会出现问题,但是可能会出现以下问题:
① 一切正常
②段错误
③脏数据
- 数组与指针有什么关系?
数组名就是一个指针(常指针)
数组名与数组首地址是映射关系 *p=arr是指向关系(&*p是有一个地址的)
由于数组名就是指针,所以数组名可以使用指针的解引用运算符,而指针也可以使用数组。
第九章——用户自己建立的数据类型
- 为何需要自己定义数据类型?
一方面由于常见的数据变量之间存在相互的联系。如:学生的学号与姓名之间存在联系。
- 那为何不采用数组将其存储在一起,使得其相互联系?
数组只能存放类型相同的变量,例如全部存放int型的数据,或者全部存放char型的数据,不可以随意存储。而自己建立的数据类型就可以避免此类问题,可以存放不同类型数据。
如何定义?
结构体类型并不是一种类型,其可以设计出许多结构体类型,各自包含自己的成员
结构体类型与结构体变量有何区别?
结构体变量可以进行赋值,计算、存取。
结构体类型而不能进行运算
- 何为链表?
链表是一种常见的数据结构,是一种动态存储分配的一种结构
。链表中每个元素称为一个“结点”,每个结点分为两部分,数据域与下一个地址域
- 如何创建链表
通过结构体变量建立链表
链表分为静态链表与动态链表(malloc函数分配空间)。
共用体与结构体有何区别?
结构体变量所占内存长度是各成员的内存长度之和。每个成员分别占有自己的内存单元
共用体变量所占的内存长度等于最长的成员的长度,几个成员公用一个内存区。且内存的大小由最大的变量决定的。
- 为何用typedef声明新类型名?
Typedef int integer //指定用Interger为类型名,作用与int相同
命名一个简单的类型名代替赋值的类型,从而简化代码 命名一个新的类型名代表结构体类型
Typedef struct
{
int month;
Int day;
Int year;
}Data;//定义一个新类型Data,代表结构体类型
Data birthday;//定义结构体变量birthday,它等价于stuct birthday;
Data *p;//定义结构体指针变量p,指向此结构体类型数据,等价于stuct *p;
注:struct Data birthday,是错误写法。
- Typedef有利于程序的迁移植
总结
以上为一些重难点,加黑的为重中之中,大概率出现在复试提问中,可以尝试理解记忆。希望星光不负赶路人,上岸!
推荐学习C语言的一个公众号:免费的!!!
适合新手学习!
解忧C语言
C程序设计——考研复试相关推荐
- 考研c 语言程序设计题库,温州大学c语言程序设计考研复试核心题库(23页)-原创力文档...
2017年温州大学C语言程序设计考研复试核心题库 (一) 说明:本资料为学员内部使用,整理汇编了 2017考研复试重点题及历年复试常考题 . _.选择题 1 ,在以下给出的表达式中,与while ( ...
- 重庆交通大学c语言程序设计考试,2019重庆交通大学C语言程序设计考研复试大纲...
<C语言程序设计>大纲 (研究生复试用) 一.考核说明 1.考试用参考书: <C语言程序设计教程> 刘玲 等 清华大学出版社出版. <C语言程序设计教程> 杨路明 ...
- 2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料)
2023最新广西大学计算机电子信息考研复试之计算机网络和软件工程 828数据结构与程序设计上岸冲刺复试宝典(复试版/复试资料) 适用专业:计算机科学与技术(学硕) 计算机技术(专硕).人工智能(专硕) ...
- 湘潭大学计算机考研复试题,湘潭大学信息工程学院2019考研复试程序设计练习题...
部分院校公布了考研复试分数线,超过分数线的,同学即可全心准备复试了,中公考研小编整理了湘潭大学信息工程学院2019考研复试程序设计练习题"文章,希望对大家有所帮助! 程序设计复试科目练习 1 ...
- 面向对象程序设计(c++)面试常问——for考研复试面试
关于c++的一些面试常问问题(考研面试编程语言) 前言: 本人22考研党,已上岸,发一些复试准备整理的资料作为对考研准备的一个收尾.由于近几年基本都是线上复试,线上的话会更加注重概念的考察,本人在复试 ...
- 中国矿业大学计算机考研复试科目,中国矿业大学复试科目
考研复试即将开始,现如今正是准备的时候,下面由出国留学网小编为你精心准备了"中国矿业大学2020计算机科学与技术学院考研复试科目参考书目",持续关注本站将可以持续获取更多的考研资讯 ...
- 中国矿业大学计算机英语复试,中国矿业大学2020计算机科学与技术学院考研复试科目参考书目...
考研复试即将开始,现如今正是准备的时候,下面由出国留学网小编为你精心准备了"中国矿业大学2020计算机科学与技术学院考研复试科目参考书目",持续关注本站将可以持续获取更多的考研资讯 ...
- 保研夏令营、考研复试、出国时个人陈述模板与撰写注意事项
本文对保研.考研复试.出国等都会时常用到的个人陈述的撰写加以介绍,并给出几个我当时所写个人陈述的版本,供大家参考. 在天大.中南.中山.北师.中科院地图学与地理信息系统GIS及遥感RS专业推免 ...
- 2020杭电网安考研复试题+经验
2020杭电网安考研复试题+经验 个人感受 复试流程 上机笔试 考试形式 2018年编程题目 2019年编程题目 2020年 面试提问 提问内容 2018年 2019 2020复试经验 英语口语考核 ...
最新文章
- eclipse adt如何切换到设计界面_APP界面设计模板|引导页该如何设计?
- 深度丨当AI遇见区块链,2018年的第一场火,还是第一场泡沫?
- MySQL学习(四)查询
- 第25条:总是为第三方类的分类名称加前缀
- define关键字的使用,以及宏函数的定义
- 【EL表达式】EL 表达式学习
- mvc 怎么把后台拼接好的div写到前台_五、controller层配置和前台数据crud操作的实现...
- keepalived 安装及配置VIP漂移
- MySQL 基本信息的查询(初始化配置信息 my.ini)
- (转)机会还是陷阱:诺亚财富的私募股权策略
- 【集合论】容斥原理 ( 包含排斥原理 | 示例 )
- 13首唐诗五律,哪个是你心目中的“五律”第一?
- This computer does not support Intel Virtualization Technology (VT-x) or it is being exclusively use
- 新西兰计算机科学专业排名,2020年新西兰计算机科学专业排名榜
- 蚂蚁金服揭”老底“:港版支付宝的区块链跨境汇款与Ripple、Circle大不同
- 13C同位素脉冲标记法浅析(实验解析)
- Go语言相关书籍推荐(从入门到放弃)
- python京东自动签到_Python 实现京东自动签到领京豆
- 【kafka】三、kafka命令行操作
- 计算机卡主板页面,电脑开机卡在主板logo界面-我家的台式电脑开机卡在主板LOGO画面怎么回事?...
热门文章
- canvas图片裁剪并base64转化
- 192.168.8.1手机登陆_192.168.8.1登录入口手机登陆?
- Python 的 enum 模块源码分析
- Java Date equals()方法具有什么功能呢?
- FFmpeg SPS/PPS剖析
- 解决HttpClient::setHeader() must be of the type string, null given
- Hive SQL: 四个在工作后才知道的SQL密技
- 白泽六足机器人_arduino_v1——零件准备
- 水质检测传感器在不同行业中的应用
- Linux初窥:Linux下SSH免密码登录配置