C程序设计——考研复试_考研复试c语言程序设计-程序员宅基地

技术标签: 计算机考研复试  c语言  


前言

本人2022考研,复试用书为《C程序设计》第四版,我用的第五版,没有差别。先整体复习,再重难点突破。大多都为基础概念。


第一章——程序设计和C语言

  1. 程序:一组计算机能够识别和执行的指令

  2. 指令:使计算机执行特定的操作,如加法指令使计算机进行一次加法运算。

  3. 计算机语言:计算机和人都能识别的语言,作为”沟通“桥梁,作用类似于语言。如:汉语用于中国人之间的交流。

  4. 计算机语言的分类:如下图,具体分类了解即可。

在这里插入图片描述

注:
低级语言与高级语言的区别:低级语言更加贴近”计算机“,也就是用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;
    在这里插入图片描述

  • 字符数组如何初始化?

  1. 依次赋值
  2. 初值个数小于数组长度,则这些字符从前往后存储,其余元素自动定位空字符。
  3. 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度: Eg: char ch[]={‘c’,’’o’,’p’,y’}//数组ch的长度自动定为10

第七章——函数

  • 为何使用函数?

实现模块化编程,便于维护和后续开发。
一个C程序由一个或多个程序模块组成,每个程序模块都作为一个源程序文件。

.如何实现函数?

声明,定义,调用。

  1. 函数的种类:

库函数与用户定义的函数。
库函数:由系统提供的,用户不必自己定义,可直接使用他们。库函数只提供了一些最基本、最通用的函数,不可能包括所有的函数。
用户定义函数:解决用户专门需要的函数。必须先定义,后使用。

  • 局部变量与全局变量

其两者的作用域不同。一个作用局部,一个作用全局。
局部大部分是指子函数内的变量。

  • 动态存储方式与静态存储方式

静态存储方式:指程序运行期间由系统分配固定的存储空间方式,容易造成浪费
动态存储方式:在程序运行期间根据需要进行动态的分配存储空间,节约空间

  • 自动变量(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语言

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43279782/article/details/123663131

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception

邻接矩阵-建立图-程序员宅基地

文章浏览阅读358次。1.介绍图的相关概念  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:  G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象

什么是算法?-程序员宅基地

文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法

【网络安全】网络安全的标准和规范_网络安全标准规范-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范