计算机二级(C语言)已过

非线性结构:树、图

链表和队列的结构特性不一样,链表可以在任何位置插入、删除,而队列只能在队尾入队、队头出队
对长度为n的线性表排序、在最坏情况下时间复杂度,二分查找为O(log2n),顺序查找为O(n),哈希查找为O(1)

最坏情况下堆排序的时间复杂度最低;

层数/深度为n的满二叉树,节点个数为2^n -1

C语言的数值表示中,e/E后面必须是整数,前面必须有底数

静态变量只初始化一次

对任何一颗二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个

结构化程序的三种基本控制结构:顺序、选择和重复

数据库管理系统为完成主要功能提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

%md指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出,%.nf表示以小数形式输出实数,小数占n位,四舍五入到n位

数组元素a[i][j]可表示为*(a[i]+j)

如果在定义函数之后,定义的变量,该变量不能被之前的函数访问

循环队列的元素个数:(rear-front+m)%m---------------------m为队列长度

堆栈的元素个数:(bottom-top+1)或(后栈顶-前栈顶)

关系模式中只有一种元素-------------------关系

关键字是指被C语言保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf为库函数名,属于预定义标识符,可以被用户重定义case为关键字,是选择结构switch语句中的关键字,不可被用户重定义

表达式不能被赋值 如:a+b=c

在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。

所有类型的指针变量都是地址,所占字节数均为4

%s控制符用于输出字符串,输出时从给定地址开始依次输出字符,直到遇到’\0’结束。给字符变量赋值0,相当于赋值’\0’。

带参数的宏定义不是进行简单的字符串替换,而是要进行参数替换。例如:#define D(x) 4x+1; D(i+j)=4i+j+1

strcpy 的作用是将源字符串 src(包括字符串的结束符 \0)复制到目标字符串 dest 中。

对任何一棵二叉树,度为0的节点(即叶子节点)总是比度为2的节点多一个。

软件工程包含3个要素:方法、工具和过程。

在 C 语言中,return a = b; 返回的是 赋值操作完成后的结果。而a=b++是先赋值再自加

在 C 语言中,数组不能直接通过赋值操作符 = 来赋值。数组的赋值必须通过逐个元素赋值,或者使用函数(如 strcpy)。

在 C 语言中,声明数组时必须指定大小(除非是初始化时使用字符串字面量)。未指定大小的数组声明是非法的。

\后跟一个字符构成转义字符也可以是八进制或十六进制数字

字符实例的一般形式是用一对单引号括起来的一个字符。

实体完整性约束:不能有空值

参照完整性约束:要么为空值,要么必须和原表一样

定义指针必须初始化(指向某一变量、分配内存或置为NULL)

p++不管怎么样都是先返回p的值进行外部运算再自增

指针指向结构体变量用 ->

变量指向结构体变量用 .

强制类型转换数据类型需要用()括起来

整形数组空位自动赋值0、字符数组空位自动赋值\0

主键是最小可以唯一标识关系的属性集

关键字是指被C语言保留的,不能用作其他用途的标识符

||语句左边的条件成立就不会执行右边的语句了

指针变量存储的是地址值,所有地址值所占的字节都是一样的

含指针的题目:注意变化的是指针还是指针指向的变量

流程图

&只能对变量取地址,不能对常量取地址

一个字符占8位

具体使用动态库还是静态库是编译时决定的不是预编译的作用

strcopy(int* p,“aaa”)是将aaa赋值给p所指向的内存区域中

C语言语句中,若存在未被使用的量,则在转化成机器指令时会被优化掉

符号常量(通过#define预处理器指令定义的常量)

符号常量除在预编译阶段可多次重新定义,其余地方都不能重新定义
例:
#define PI 3.14
#define PI 3.14159

有些算法是理论可行的,所以不能说的太绝对

变量是值可以改变的量,其所占有的内存空间不能随意改变

函数体必须由{开始 C程序执行必须由main语句开始

反斜杠 \ 后面跟随的数字可以表示八进制数,但仅限于1到3位的八进制数字

形参不能是常量

地址不能乘除运算

C语言中,函数名是一个指针,是函数的入口地址

对于一个空指针,必须先给它分配内存再读取数据

运算符[]内的数据类型只能是int和char

自然连接:两关系间的公共域相等值连接

操作系统的四项主要功能:进程管理、存储管理、设备管理、文件管理

指令寄存器用于暂存当前正在执行的指令

一个指令执行包括取指令、存储器读、存储器写等一系列工作,每一项工作占用一个机器周期。一个指令执行完成占用一个指令周期。故一个指令周期包含n个机器周期

当定义多个变量赋同一个值时,不能用等式连写的方式

C源程序中不能表示的数制是二进制(除非用特定的编译器扩展)

逗号表达式(v1,v2,v3)的值为最后一个参数(v3)

宏名一般习惯用大写字母表示,以便与变量名相区别;

if…else语句默认else语句总是与它上面最接近的if配对

函数不需要传参数时,()内要明确定义void否则编译器不会识别是否传入参数到该函数

软件测试的实施步骤是单元测试、集成测试、确认测试

指针类型是由指针所指向的地址所存放的数据类型决定

数据交换顺序必须"一前一后"顺序不能变

异或运算:相同为0、相异为1

通常数据存储以小端字节序存储

算法的目的是为了求解,即输出。没有输出的算法是没有意义的;

形参的值不能传给实参,只能通过直接改变实参的值来改变实参;

extern、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量‘其中自动变量和寄存器变量属于动态存储,调用时分配临时单元;

free(q);释放的是q所指的动态分配的内存空间;

标准输入输出中用文件指针FILE;文件描述符是系统提供的IO接口;

请求分页式管理是动态内存管理的一种,它将经常反复执行和调用的工作区部分存储起来;

标准输入输出#include <stdio.h> 有缓存机制

统一输入输出#include <unistd.h> 无缓存机制,直接参与系统调用

int x = (a = 5, b = a + 1, b * 2);//像这样逗号表达式中出现多余的逗号是不合法的;

while(){循环体} 条件表达式比循环体执行多一次

do{循环体}while() 循环体和条件表达式的执行次数一样

网络字节序是大端字节序;主机字节序取决于计算机硬件架构;

实参和形参的类型应相同或赋值兼容,整形数据和字符型数据可以通用

赋值语句中未定义量只能有最左边的一个

快速排序每经过一次元素的交换会产生新的逆序

strcmp(char *s1,cahr *s2);功能:比较字符串s1,s2的大小,s1==s2时返回0,s1>s2时返回值>0,s1<s2时,返回值<0;

sizeof函数取到的字符串长度是包括字符串结束标志’\0‘

strlen是计算以“\0”结束的字符串的长度的函数,函数值为字符串的实际长度,不包括“\0”

在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用;在调用f1函数过程中要调用f2函数,而在调用f2函数的过程中又要调用f1函数是间接调用;

软件调试的任务是诊断和改正程序中的错误

黑盒测试的主要方法有:等价类划分法、边界值分析法、错误推测法、因果图等,主要用于软件确认测试

在C语言中,不能直接将一个字符串数组赋值给另一个字符串数组。因为字符串在C语言中是以字符数组的形式存储的,数组的赋值不能直接通过简单的赋值语句完成。

字符型数组并不限定最后一个元素必须是‘’\0‘字符

字符串数组,是指数组中的每一个元素都是一个存放字符串的一维数组

在函数内部或复合语句内部定义的变量,均称为局部变量;

当你定义一个数组时,数组的内存地址在定义时就已经确定了。故,只能改变其变量值不能改变其地址值;

在C程序中函数可以直接或间接的自己调用自己,称为递归调用;递归必须要有一个明确的结束递归条件;

若循环中修改了全局变量的值,则全局变量的值会被更新,且会保留到下次循环中;

只有在做投影操作时,其结果的列数可能小于原表中的列数

软件设计中常用的过程设计工具有:图形工具:程序流程图、N—S图,PADHIPO图;表格工具:判定表 语言工具:PDL(伪码)

数据库是有结构的数据的集合

函数声明必须在函数调用之前,这样编译器才能正确解析函数调用。

函数声明可以在文件的任何地方,只要它在函数调用之前。

函数声明通常放在头文件中,通过 #include 引入到需要使用该函数的文件中。

如果函数声明在函数调用之后,会导致编译错误或警告。

在C语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出“下标越界”的错误提示

如果关系模式R中的某个属性集不是R的主键,而是另一个关系R1的主键,则该属性集是关系模式R的外键;外键是本关系表与其他关系表的联系;

如果一个关系表的主键由多个属性组成(即复合主键),某个非主属性只依赖于主键的一部分,而不是整个主键,那么这种依赖关系就被称为部分依赖。

在C语言中,类型转换是指将一个数据类型转换为另一个数据类型。虽然C语言允许很多类型的隐式转换和显式转换,但某些类型转换是无效的,可能会导致编译错误、运行时错误或未定义行为。以下是一些常见的无效类型转换情况:

1. 不兼容的类型赋值

  • 问题:将一个类型直接赋值给不兼容的类型,而没有进行显式转换。
  • 示例
    int a = 10;
    char c = a; // 错误:int 转换为 char 可能导致数据丢失,需要显式转换
    
  • 解决方法:使用显式类型转换。
    char c = (char)a; // 显式转换
    

2. 指针类型不匹配

  • 问题:将一种指针类型赋值给另一种指针类型,而没有进行显式转换。
  • 示例
    int* p1;
    char* p2 = p1; // 错误:int* 和 char* 不兼容
    
  • 解决方法:使用显式类型转换。
    char* p2 = (char*)p1; // 显式转换
    
  • 注意:虽然显式转换可以解决编译错误,但这种转换可能会导致运行时错误,特别是当指针指向的内存大小不一致时。

3. 从指针到整数的转换

  • 问题:将指针类型直接赋值给整数类型,而没有进行显式转换。
  • 示例
    int* p = NULL;
    int a = p; // 错误:指针不能直接赋值给整数
    
  • 解决方法:使用显式类型转换。
    int a = (int)p; // 显式转换
    
  • 注意:这种转换通常不推荐,因为指针和整数的大小可能不同,可能导致数据丢失或未定义行为。

4. 从整数到指针的转换

  • 问题:将整数类型直接赋值给指针类型,而没有进行显式转换。
  • 示例
    int a = 0;
    int* p = a; // 错误:整数不能直接赋值给指针
    
  • 解决方法:使用显式类型转换。
    int* p = (int*)a; // 显式转换
    
  • 注意:这种转换同样可能导致未定义行为,特别是当整数值不是有效的内存地址时。

5. 函数指针类型不匹配

  • 问题:将一个函数指针赋值给另一个不兼容的函数指针类型。
  • 示例
    void f1(int a) {}
    void (*p1)(int) = f1; // 正确
    void (*p2)(char) = p1; // 错误:函数指针类型不匹配
    
  • 解决方法:确保函数指针的类型完全匹配,或者使用兼容的类型。
    void (*p2)(int) = p1; // 正确
    

6. 无效的联合类型转换

  • 问题:联合体(union)中的成员类型不匹配,或者对联合体成员进行非法的类型转换。
  • 示例
    union {int a;char b;
    } u;
    u.a = 10;
    int c = u.b; // 错误:u.b 是 char 类型,不能直接赋值给 int
    
  • 解决方法:确保访问联合体成员时,类型匹配。
    int c = u.a; // 正确
    

7. 从空指针到非空指针的转换

  • 问题:将空指针(NULL)赋值给非空指针类型,而没有进行显式转换。
  • 示例
    int* p = NULL;
    char* q = p; // 错误:空指针不能直接赋值给非空指针
    
  • 解决方法:使用显式类型转换。
    char* q = (char*)p; // 显式转换
    

8. 从非数值类型到数值类型的转换

  • 问题:将非数值类型(如结构体、联合体)直接转换为数值类型。
  • 示例
    struct {int a;int b;
    } s;
    int a = s; // 错误:结构体不能直接转换为整数
    
  • 解决方法:如果需要提取结构体中的某个成员值,可以直接访问该成员。
    int a = s.a; // 正确
    

9. 从数值类型到非数值类型的转换

  • 问题:将数值类型直接转换为非数值类型(如结构体、联合体)。
  • 示例
    int a = 10;
    struct {int x;int y;
    } s = a; // 错误:整数不能直接转换为结构体
    
  • 解决方法:如果需要将数值赋值给结构体的某个成员,需要显式访问该成员。
    struct {int x;int y;
    } s;
    s.x = a; // 正确
    

10. 从浮点数到整数的转换(可能导致精度丢失)

  • 问题:将浮点数直接赋值给整数类型,可能会导致精度丢失。
  • 示例
    float f = 10.5;
    int a = f; // 警告:浮点数到整数的转换可能导致精度丢失
    
  • 解决方法:使用显式类型转换,并注意精度问题。
    int a = (int)f; // 显式转换
    

总结

在C语言中,类型转换需要谨慎处理,尤其是涉及指针、函数指针、结构体等复杂类型时。为了避免无效的类型转换,建议:
1. 明确类型转换的意图。
2. 使用显式类型转换(如 `(type)`)来避免编译器警告。
3. 确保转换后的类型与目标类型兼容。
4. 避免可能导致未定义行为的类型转换,如将非法地址赋值给指针。
如果不确定类型转换是否安全,可以查阅C语言标准或使用编译器的警告选项(如 `-Wall`)来帮助发现潜在问题。

printf()函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出

break和continue只会影响最内层的循环即当前所在的循环

无论是字符数组还是其他类型的数组都不能直接赋值为一个单一的字符或整数;

C语言中所有函数都有返回,void表示返回的无类型;

fopen(A)是创建文件A或若文件A已存在则清空A再进行操作;

->的优先级大于++;

左值是指一个可以出现在赋值运算符左边的表达式,它表示一个存储位置(memory location),可以被赋值或访问。

右值是指一个不能出现在赋值运算符左边的表达式,它表示一个值,而不是一个存储位置。右值通常是一个临时值,不能被取地址或赋值。

依赖是后者依赖于前者

在树中,结点数为树中所有结点的度之和再加1;

逗号表达式返回逗号后面的值,但逗号表达式都会从左到右依次运算;

()------------------------函数调用标识符

实型常量有小数形式和指数形式;

scanf和printf是C语言提供的输入输出函数;

printf输出的数据都隐含右对齐

预定义的标识符是C语言标识符的一种

在C程序中的八进制和十六进制是整型;

printf函数和scanf函数都可以指定输入数据的宽度

c语言中,位运算符和取模运算符运算对象必须是整型数

sizeof()是一种标识符不是函数,其返回值决定了它是一种什么类型的表达式;

关系数据库规范化的目的是为了解决关系数据库中的插入,删除异常及数据冗余问题

第一范式要求数据库表中的每一列都是不可再分的基本数据项

第二范式要求在满足第一范式的基础上,表中的每个非主属性必须完全依赖于主键,而不能部分依赖于主键。也就是说,不能存在仅依赖于主键一部分的非主属性。

第三范式非主键必须直接依赖于主键,不能存在传递依赖;

在C语言中,%md 是一种格式化输出的格式说明符,用于控制整数的输出宽度。这里的 m 是一个整数,表示输出的最小宽度

宏定义#define 可以给任何数据定义但不会对其进行检查

类型重定义typedef只能给变量类型重新定义但会对变量类型进行检查,故更加安全;重命名后原名字仍可用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server 2025开启GPU分区(GPU-P)部署DoraCloud云桌面

本文描述在ShareStation工作站虚拟化方案的部署过程。 将服务器上部署 Windows Server、DoraCloud&#xff0c;并创建带有vGPU的虚拟桌面。 GPU分区技术介绍 GPU-P&#xff08;GPU Partitioning&#xff09; 是微软在 Windows 虚拟化平台&#xff08;如 Hyper-V&#xff09;中…

Android RxJava框架分析:它的执行流程是如何的?它的线程是如何切换的?如何自定义RxJava操作符?

目录 RxJava是什么&#xff1f;为什么使用。RxJava是如何使用的呢&#xff1f;RxJava如何和Retrofit一起使用。RxJava源码分析。 &#xff08;1&#xff09;他执行流程是如何的。&#xff08;2&#xff09;map&#xff08;3&#xff09;线程的切换。 如何自定义RxJava操作符…

QT的初始代码解读及其布局和弹簧

this指的是真正的当前正在显示的窗口 main函数&#xff1a; Widget w是生成了一个主窗口&#xff0c;QT Designer是在这个主窗口里塞组件 w.show()用来展示这个主窗口 头文件&#xff1a; namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一个东西 Ui…

什么是AI写作

一、AI写作简介 AI 写作正在成为未来 10 年最炙手可热的超级技能。已经有越来越多的人通过 AI 写作&#xff0c;在自媒体、公文写作、商业策划等领域实现了提效&#xff0c;甚至产生了变现收益。 掌握 AI 写作技能&#xff0c;不仅能提高个人生产力&#xff0c;还可能在未来的 …

13.原生测试框架Unittest解决用例组织问题 与测试套件的使用

13. 原生测试框架Unittest解决用例组织问题 与测试套件的使用 一、测试架构核心组件解析 1.1 系统组成模块 #mermaid-svg-bYie0B3MLRp0HL4g {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bYie0B3MLRp0HL4g .erro…

UE5 脚部贴地不穿过地板方案

UE自带的IK RIG和ControlRig技术 【UE5】角色脚部IK——如何让脚贴在不同斜度的地面(设置脚的旋转)_哔哩哔哩_bilibili 实验后这个还是有一部分问题,首先只能保证高度不能穿过,但是脚步旋转还是会导致穿模 IK前,整个模型在斜坡上会浮空 参考制作:https://www.youtube.com/w…

关于 js:4. 异步机制与事件循环

一、同步 vs 异步 1. 什么是同步&#xff08;Synchronous&#xff09; 同步代码就是一行一行、按顺序执行的。当前行没有执行完&#xff0c;下一行不能动。 示例&#xff1a; console.log("A"); console.log("B"); console.log("C");输出&am…

如何通过外网访问内网?对比5个简单的局域网让互联网连接方案

在实际应用中&#xff0c;常常需要从外网访问内网资源&#xff0c;如远程办公访问公司内部服务器、在家访问家庭网络中的设备等。又或者在本地内网搭建的项目应用需要提供互联网服务。以下介绍几种常见的外网访问内网、内网提供公网连接实现方法参考。 一、公网IP路由器端口映…

java的输入输出模板(ACM模式)

文章目录 1、前置准备2、普通输入输出API①、输入API②、输出API 3、快速输入输出API①、BufferedReader②、BufferedWriter 案例题目描述代码 面试有时候要acm模式&#xff0c;刷惯leetcode可能会手生不会acm模式&#xff0c;该文直接通过几个题来熟悉java的输入输出模板&…

什么是移动设备管理(MDM)

移动设备管理&#xff08;MDM&#xff09;是一种安全解决方案&#xff0c;旨在监控、管理和保护企业的移动设备&#xff08;包括智能手机、平板电脑、笔记本电脑和计算机&#xff09;。MDM软件是IT部门的关键工具&#xff0c;其核心功能包括设备配置、安全策略实施、远程控制及…

c++中构造对象实例的两种方式及其返回值

c中&#xff0c;构造对象实例有两种方式&#xff0c;一种返回对象实例&#xff0c;一种返回该对象实例的指针。如下所示&#xff1a; 一、两种返回值 RedisConn conn1; //得到实例conn1;RedisConn *conn2 new RedisConn();//得到指针conn2;RedisConn conn3 new RedisConn()…

【Unity笔记】PathCreator使用教程:用PathCreator实现自定义轨迹动画与路径控制

在Unity开发过程中&#xff0c;角色移动、摄像机动画、轨道系统、AI巡逻等功能中&#xff0c;路径控制是常见又复杂的需求之一。如何优雅、高效地创建路径并控制对象沿路径运动&#xff0c;是游戏开发、动画制作乃至工业仿真中的关键问题。 在这篇文章中&#xff0c;我将介绍一…

JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码

本文项目编号 T 180 &#xff0c;文末自助获取源码 \color{red}{T180&#xff0c;文末自助获取源码} T180&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

[人机交互]交互设计过程

*一.设计 1.1什么是设计 设计是一项创新活动&#xff0c;旨在为用户提供可用的产品 –交互设计是“设计交互式产品、以支持人们的生活和工作” 1.2设计包含的四个活动 – 识别用户的需要&#xff08; needs &#xff09;并建立需求&#xff08; requirements &…

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…

代理IP是什么,有什么用?

一、什么是代理IP&#xff1f; 简单理解&#xff0c;代理IP是一座桥梁——你通过它连接到目标服务器&#xff0c;而不是直接暴露自己。这里的“IP”是网络世界中的地址标签&#xff0c;而代理IP在运行时&#xff0c;蹦跶到台前&#xff0c;成为目标服务器看到的那个“地址”。…

日常代码逻辑实现

日常代码逻辑实现&#xff1a; 1.防抖 解释&#xff1a; 防抖是指n秒内只执行一次&#xff0c;如果n秒内事件再次触发&#xff0c;则重新计算时间 应用场景&#xff1a; 搜索框输入联想&#xff08;避免每次按键都发送请求&#xff09;窗口尺寸调整 代码实现&#xff1a;…

北斗导航 | RTKLib中模糊度解算详解,公式,代码

模糊度解算 一、模糊度解算总体流程二、核心算法与公式推导1. **双差模糊度定义**2. **浮点解方程**三、LAMBDA算法实现细节1. **降相关变换(Z-transform)**2. **整数最小二乘搜索**3. **Ratio检验**四、部分模糊度固定(Partial Ambiguity Resolution, PAR)1. **子集选择策…

基于大模型的母婴ABO血型不合溶血病全方位预测与诊疗方案研究

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法与创新点 二、母婴 ABO 血型不合溶血病概述 2.1 发病机制 2.2 临床表现 2.3 流行病学特征 三、大模型在母婴 ABO 血型不合溶血病预测中的应用 3.1 模型选择与构建 3.2 预测指标与数据输入 3.3 模…

驱动-互斥锁

互斥锁可以说是“量值” 为 1 的 信号量&#xff0c; 最终实现的效果相同&#xff0c; 既然有了信号量&#xff0c; 那为什么还要有互斥锁呢&#xff1f; 这就是我们这里需要了解并掌握的 文章目录 参考资料互斥锁的介绍互斥锁结构体 - mutex互斥锁 API互斥锁实验源码程序-mute…