- 博客(382)
- 收藏
- 关注
原创 指向字符串的指针变量
在C语言中,字符串有着特殊的地位。它不像其他语言那样有专门的字符串类型,而是以字符数组的形式存在,并且以空字符’\0’作为结束标志。这种设计使得字符串既简单又灵活,但也带来了一些复杂性。连接 strncat, 计算剩余空间 strcat, 可能溢出。复制 strncpy, 检查边界 strcpy, 不检查边界。比较 strncmp, 指定长度 strcmp, 可能越界。一、引言:字符串在C语言中的独特地位。2.2 字符串结束符’\0’的重要性。· 字符串结束符’\0’是车尾标志。
2025-12-12 11:09:53
296
原创 指向数组的指针变量
一、引言:数组的本质是什么?在C语言中,数组和指针有着密不可分的关系。很多人认为数组就是一段连续的内存空间,这没错,但更重要的是要理解:数组名本质上就是一个指向数组第一个元素的常量指针。想象一下,数组就像一栋公寓楼,每个房间(元素)都有门牌号(下标)。而指针就像这栋楼的地址牌,它告诉我们这栋楼在哪里。更重要的是,通过这个地址牌,我们可以找到楼里的任何一个房间。二、数组名:被伪装的指针2.1 数组名的真实身份让我们通过代码揭示数组名的本质:2.2 数组与指针的关系总结特性 数组名 指针变量本质 常量指针
2025-12-12 11:09:19
557
原创 Kali Linux 官方更新命令详解
与 dist-upgrade 的关系:在最新版 Debian/Ubuntu/Kali 中是 dist-upgrade 的别名。· 读取 /etc/apt/sources.list 和 /etc/apt/sources.list.d/ 中的源配置。错误1:E: Could not get lock /var/lib/dpkg/lock-frontend。· 功能:更新本地软件包索引,从配置的软件源下载最新的软件包信息。· 更新 /var/lib/apt/lists/ 中的软件包列表。
2025-12-12 11:07:39
961
原创 Kali Linux 高级Web渗透测试工具全解析:构建专业级安全评估能力
Kali Linux作为渗透测试和安全评估领域的事实标准平台,集成了超过600个安全工具,其中专门针对Web应用安全的工具构成了其核心能力支柱。本文旨在全面解析Kali Linux中的高级Web渗透测试工具,从自动化扫描到深度手动测试,从信息收集到权限维持,构建完整的Web安全评估知识体系。通过系统学习和实践,安全专业人员可以充分利用Kali Linux中的Web渗透测试工具,构建全面的安全评估能力,在日益复杂的网络威胁环境中保持主动防御优势。漏洞扫描 Burp Suite, ZAP 全面安全评估 高级。
2025-12-12 11:07:07
747
原创 突破防护边界:6种实战化的SQL注入WAF绕过策略
将简单的 select column from table 转换为 select (select column from (select column from table) as t1) as t2 的形式,可以绕过许多基于模式匹配的规则。替换为 union%09select%091,group_concat(username)%0Afrom%0Auser 后,WAF的规则引擎未能匹配到特征模式,而数据库正常解析并返回了用户数据。攻击技术的演进推动防护体系的升级,而更强大的防护又催生出更精巧的绕过手法。
2025-12-06 10:23:01
317
原创 Metasploit Framework (MSF) 命令完全指南
Metasploit Framework(MSF)是一个开源的安全漏洞检测和渗透测试平台,由HD Moore于2003年创建,现由Rapid7公司维护。安全领域不断发展,Metasploit只是您工具箱中的一个工具——最重要的工具是您的知识和判断力。Metasploit Framework是一个功能强大且灵活的安全测试平台。· auxiliary - 辅助模块(扫描、嗅探等)· exploit - 漏洞利用模块。· encoder - 编码器模块。· payload - 载荷模块。
2025-12-05 19:05:56
753
原创 从5G数据包到古老编码:LakeCTF “Pls respond” 赛题深度解析与MISC解题思维构建
当“EPFL{Did_y0u_know_th4t_SMS_h4s_s0_many_STR4NGE_ext3nsi0ns}”这个完整的旗帜最终被提交,一位选手在解题报告中写道:“我从未想到SMS消息有这么多格式。在LakeCTF赛场,一个名为“Pls respond”的题目看似只是一堆杂乱的5G网络数据包,但当参赛者深入其中,发现它竟然是一扇通往移动通信历史博物馆的窗户——里面封存着几十年前的SMS编码标准。在CTF比赛中,这种“环境配置”往往是解题的第一步,也是最容易被忽视的环节。这是flag的最后部分。
2025-12-05 14:42:41
392
原创 C语言数组详解
数组就像是一个大柜子里的多个小抽屉,每个抽屉可以存放一个数据,而且所有抽屉里的数据必须是相同类型的(比如都是整数、都是字符等)。记住:数组是C语言中最基础、最重要的数据结构之一,掌握好数组,后面学习指针和结构体会容易很多!想象成一个班级座位表:有行(第几排)和列(第几个)· 所有字符串处理函数都依赖这个标志。· 没有 \0 就不是真正的字符串。三、二维数组(多排抽屉,像表格)· 方便管理大量相同类型的数据。错误3:使用未初始化的数组。二、一维数组(一排抽屉)四、字符数组(存放文字)错误2:数组大小不够。
2025-12-05 14:08:13
228
原创 指向简单变量的指针
就像蜘蛛侠的蜘蛛丝,起初可能难以控制,但一旦掌握,就能在城市间自由穿梭。遥控器(指针)不包含电视节目(数据),但它知道如何控制电视(变量)。这就是指向简单变量的指针的核心思想——我们不直接操作数据,而是通过一个"控制器"来间接操作。现在,你已经掌握了指向简单变量的指针,这是指针世界的第一步。指向简单变量的指针,就是存储普通变量(如int、float、char等基本类型变量)内存地址的指针变量。函数修改参数 C语言是值传递,需要指针来修改原始值 void swap(int *a, int *b)
2025-12-05 13:44:34
514
原创 指针的概念
计算机内存可以看作一个巨大的、连续的房间阵列,每个房间都有一个唯一的门牌号(地址),可以存储一定量的数据(通常是1个字节)。在C语言的世界中,指针被誉为"皇冠上的明珠",是C语言最强大、最灵活的特性之一,也是初学者最难掌握的概念。想象一下,你要找一本书,有两种方法:一种是直接告诉你书的内容(直接访问),另一种是告诉你书在图书馆哪个书架、哪一层、哪个位置(间接访问)。指针是一种特殊类型的变量,它存储的是内存地址,而不是普通的数据值。这里,ptr是一个"指向整型的指针",它存储了变量num的内存地址。
2025-12-04 12:36:17
521
原创 C语言-共用体
历史背景与发展:共用体的概念可以追溯到早期计算机系统内存极为珍贵的时代。共用体的本质定义:共用体(Union)是C语言中一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。内存共享的哲学意义:共用体体现了计算机科学中"空间-时间权衡"原则的经典应用。通过牺牲数据的同时可用性来换取内存空间的节省,这种设计在资源受限的环境中具有重要价值。通过这些内容,读者可以全面掌握共用体的原理和应用,能够在适当的场景中正确使用共用体来解决实际问题。7.5.2 共用体的内存布局与大小计算。
2025-10-30 14:43:17
382
原创 结构体数组
7.4 结构体数组7.4.1 结构体数组的基本概念与定义7.4.1.1 结构体数组的引入背景与意义在现实世界的编程实践中,我们很少只处理单个结构体对象,更多时候需要处理大量相同类型的结构化数据。以学生管理系统为例,一个班级通常有30-50名学生,一个学校可能有数千名学生。如果为每个学生都单独定义结构体变量,代码将变得极其冗长且难以维护。传统离散变量定义的局限性:这种方法的明显缺陷包括:结构体数组的解决方案:7.4.1.2 结构体数组的深层概念解析结构体数组的本质:结构体数组是相同结构体类型的元素按顺序排
2025-10-30 14:34:14
549
原创 结构体变量的引用
点运算符(.)的本质:点运算符是C语言中用于访问结构体变量成员的二元运算符,其优先级为第一级(最高级),结合性为从左到右。从编译器的视角来看,点运算符实际上是在编译时进行地址计算,将成员偏移量与结构体基地址相加,从而确定成员的确切内存位置。这个完整的实例展示了结构体变量的引用、初始化、赋值等概念在实际系统中的应用,涵盖了从基础操作到高级技术的各个方面。7.3.1.1 成员访问运算符的深度解析。7.3.1.4 位域成员的访问技术。7.3.3.2 指针成员的赋值陷阱。7.3.2 结构体变量的初始化。
2025-10-29 17:05:58
284
原创 认证机制的攻防战场:针对 Cookie、Session、Token、JWT 的渗透测试完全指南
Cookie、Session、Token、JWT 作为现代 Web 认证的四大基石,各自拥有独特的安全模型,也因此衍生出不同的攻击向量。本文将从渗透测试的角度,系统性地剖析这四种机制的脆弱点,演示具体的攻击手法,并最终为构建更安全的系统提供防御思路。· 服务器在返回表单时生成一个随机、不可预测的 Token,并将其存储在用户的 Session 中或另一个 SameSite=Strict 的 Cookie 里。通过系统性地测试这些攻击向量并实施相应的防御措施,可以显著提高基于JWT的认证系统的安全性。
2025-10-29 11:11:02
911
原创 从Cookie到Session,从Token到JWT——一文吃透四大核心机制
本文将深入剖析现代 Web 开发中四种核心的认证机制:Cookie、Session、Token 和 JWT,从底层原理、工作流程到优缺点对比、安全考量和适用场景,进行一场彻底的技术深潜,旨在为开发者构建安全、可扩展的认证系统提供全面的理论指导。作为开发者,深刻理解其底层原理、安全模型和适用边界,不再拘泥于概念名词,而是灵活运用其思想,才能为你的应用场景选择并设计出最安全、最稳健、最高效的认证方案。Token 认证的核心是:服务器在验证用户凭证后,生成一个代表用户身份的令牌(一个字符串),发送给客户端。
2025-10-29 11:09:47
1072
原创 定义结构体变量的方法
struct 结构体标签共同构成了一个完整的类型说明符,在C语言的类型系统中,它与其他内置类型(如int、float)具有同等的地位。这种方法体现了"先抽象,后具体"的编程哲学,即先定义数据类型的抽象蓝图,再根据这个蓝图创建具体的变量实例。通过这个完整的实例,我们可以看到四种定义方法在实际项目中的协同使用,每种方法都在其最适合的场景中发挥作用,共同构建了一个清晰、可维护的学生管理系统。在类型系统中,原类型和别名类型是完全等价的,这影响了类型兼容性和重载解析。代码清晰度 ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐。
2025-10-24 06:44:41
837
原创 结构体和共同体概述
在现代编程语言中的演进:虽然现代高级编程语言通常提供更强大的数据抽象机制(如类、接口、泛型等),但结构体和共用体的核心思想仍然具有重要价值。考虑一个图书馆管理系统的开发场景:我们需要管理每本图书的详细信息,包括书名、作者、ISBN号、出版日期、出版社、分类号、库存数量、借阅状态等。随着ANSI C标准的制定,结构体的功能得到了极大增强,包括结构体赋值、作为函数参数和返回值传递、嵌套结构体等高级特性。未来发展趋势:随着计算机体系结构的变化和新的编程范式的出现,结构体和共用体的使用模式也在不断演进。
2025-10-23 16:45:06
690
原创 函数应用实例
想象你正在建造一座宏伟的建筑:你不会直接堆砌砖块,而是先设计蓝图、制造标准构件,然后按规划组装。在C语言编程中,函数就是这些标准构件——它们将复杂问题分解为可管理的模块,通过精心设计和组合,构建出可靠、可维护的软件系统。本章将带你超越基础语法,探索函数在真实项目中的综合应用。通过实际案例,你将学会如何设计函数接口、组织代码结构、处理复杂逻辑,从而编写出专业级的C语言程序。通过这些综合应用练习,你将深刻理解函数在构建复杂软件系统中的作用,掌握专业级的C语言编程技能,为开发真实世界的应用程序奠定坚实基础。
2025-10-22 10:08:33
501
原创 变量的储存类别
在C语言编程中,变量存储类别(Storage Class) 就如同这个仓库的管理策略——它决定了变量在内存中的存储位置、生命周期和访问速度。变量存储类别决定了变量的存储位置(内存中的哪个区域)、生命周期(何时创建和销毁)以及作用域(在哪些地方可见)。寄存器变量建议编译器将变量存储在CPU寄存器中,适用于需要频繁访问的变量,如循环计数器、临时计算结果等。通过掌握变量存储类别,你将能够精确控制程序的内存使用和性能特性,为编写高效、可靠的系统软件奠定坚实基础。:自动变量,存储在栈中,函数结束时销毁。
2025-10-22 09:59:05
292
原创 变量的作用域
在C语言编程中,变量作用域(Variable Scope) 就如同公司的信息权限管理——它决定了在程序的哪些部分可以访问和修改特定的变量。掌握作用域的概念,意味着你能够精确控制数据的可见范围,写出更加健壮和安全的代码。全局变量在整个程序中都可见,适用于需要在多个函数间共享的数据,如配置设置、程序状态、计数器等。局部变量是编程中最常用的变量类型,它们提供了数据封装和隔离,防止函数间的意外干扰。代码块作用域(用花括号{}定义的区域)允许在更小的范围内定义变量,这在条件判断、循环和资源管理等场景中非常有用。
2025-10-22 09:58:18
458
原创 数组作为函数参数
在C语言中,数组作为函数参数允许我们将整个数组或数组元素传递给函数进行处理。与普通变量不同,数组参数的传递涉及特殊的语法和内存机制,理解这些差异对于编写正确的数组处理函数至关重要。通过掌握数组作为函数参数的技术,你将能够编写出更强大、更灵活的数据处理程序,为解决复杂问题奠定坚实基础。当数组名作为函数参数时,实际上传递的是数组首元素的地址,而不是整个数组的副本。编写一个函数,接收一个整型数组和其大小作为参数,返回数组中第二大的元素。· 关键点:数组元素传递是值传递,函数内对参数的修改不会影响原数组。
2025-10-21 15:23:16
369
原创 函数的调用
在C语言编程中,函数调用(Function Call) 就如同指挥家的指令——你不需要关心函数内部的具体实现,只需知道如何调用它来完成任务。函数调用是连接程序各个模块的桥梁,它让代码从孤立的函数定义变为有机协作的整体。掌握函数调用的各种方式,特别是嵌套调用和递归调用,将显著提升你解决复杂问题的能力。函数调用是程序执行过程中暂停当前函数的执行,转去执行被调用函数,并在被调用函数执行完毕后返回原函数继续执行的过程。递归是函数调用自身的特殊形式,特别适合解决具有自相似性质的问题,如数学定义、树形结构遍历等。
2025-10-21 15:21:56
247
原创 函数的定义和使用
想象一下这样的场景:你正在编写一个学生成绩管理系统,需要在程序的多个地方计算学生的平均分。它能够将常用的代码块封装成独立的模块,通过简单的调用来执行复杂操作,极大地提升了代码的可读性、可维护性和复用性。在C语言中,函数是一段完成特定任务的独立代码块,可以接受输入参数,执行特定操作,并返回一个结果。将这些公式封装成函数,可以避免代码重复,提高程序的可维护性。当函数被调用时,程序会在栈(Stack) 中为函数创建一个新的栈帧(Stack Frame)。将验证逻辑封装成函数,可以在程序的多个地方重用验证规则。
2025-10-21 15:21:22
401
原创 数组的应用举例
5.4 数组的应用举例引言数组作为C语言中最基础且最重要的数据结构之一,在实际编程中有着广泛的应用。从简单的数据存储到复杂的算法实现,数组都扮演着不可或缺的角色。本章将通过一系列实用且典型的实例,深入探讨数组在各种场景下的应用,帮助读者将理论知识转化为解决实际问题的能力。在前面的章节中,我们已经学习了一维数组、二维数组和字符数组的基本概念和操作方法。现在,我们将把这些知识综合运用于解决实际问题,涵盖数值计算、数据处理、游戏开发、图形处理等多个领域。每个实例都将从问题分析、算法设计、代码实现到运行结果进行全面
2025-10-20 10:03:34
782
原创 字符数组的定义和使用
字符数组是专门用于存储字符序列的数组,它是C语言中处理文本数据的基础。在C语言中,字符串是一种非常重要且常用的数据类型,但C语言本身并没有内置的字符串类型。本章将全面深入地讲解字符数组的定义、初始化、输入输出操作以及常用的字符串处理函数,通过大量实用示例帮助读者掌握字符数组的各种应用技巧。字符数组是一种特殊类型的数组,其元素类型为char,用于存储字符序列。字符数组和字符串处理是C语言编程中的重要组成部分,建议通过大量实践来巩固所学知识,特别是在安全编程方面要养成良好的习惯。
2025-10-20 10:02:27
418
原创 二维数组的定义和使用
在实际程序设计中,我们经常需要处理具有行列结构的数据,比如矩阵运算、表格数据、游戏地图等。为此,C语言提供了二维数组的概念,使得我们能够以行和列的形式组织数据。二维数组是数组的数组,它可以看作是一个表格,具有行和列两个维度。本章将深入探讨二维数组的定义、初始化、内存布局、基本操作以及实际应用,通过详实的代码示例和实际案例,帮助读者全面掌握二维数组的使用技巧。尽管我们在逻辑上将二维数组视为表格,但在物理内存中,所有元素仍然是连续存储的。由于二维数组在内存中是按行存储的,行优先访问具有更好的缓存局部性。
2025-10-19 14:02:10
767
原创 一维数组的定义和使用
数组是相同类型数据元素的有序集合,通过一个统一的数组名和下标来访问各个元素。一维数组是最基本的数组形式,可以看作是一行数据,每个元素通过一个索引值(下标)来标识。当我们定义一个数组时,系统会在内存中分配一块连续的空间来存储数组的所有元素。· 数据类型:指数组中每个元素的数据类型,可以是int、float、char等基本类型,也可以是自定义类型。合理的初始化可以避免使用未初始化的数组,提高程序的安全性。数组可以作为函数的参数传递,但需要注意数组在函数间传递的是地址(指针),而不是整个数组的副本。
2025-10-19 14:01:40
913
原创 循环结构程序设计
在实际编程中,循环结构几乎无处不在:从简单的数值计算,到复杂的数据处理、图形绘制、游戏逻辑等,都离不开循环的运用。在实际编程中,选择合适的循环结构、设计合理的循环条件、处理好边界情况,是写出高质量代码的关键。循环变量从1开始,每次增加1,直到n为止,将每个数累加到一个变量中。编写一个猜数字游戏:程序随机生成一个1-100的整数,用户有7次机会猜测,根据用户的输入给出"太大"、"太小"或"猜对了"的提示。× n,特别地,0!编写程序,输入若干个学生的成绩,统计平均分、最高分、最低分,以及各个分数段的人数。
2025-10-17 10:47:50
791
原创 break语句和continue语句
通过本节的深入学习,读者应能掌握break和continue语句从基础概念到高级工程实践的全方位知识,特别在需要精细控制循环执行路径的场景中能够做出恰当的技术选型和使用决策。break和continue语句是结构化编程中的非局部控制流转移机制,在程序语义学中属于跳转语句类别。continue语句用于跳过当前迭代的剩余代码,立即开始循环的下一次迭代。break语句用于立即终止循环的执行,无论循环条件是否仍然满足。它是提前退出循环的强有力工具。· break语句:立即终止最内层循环,转移到循环后的第一条语句。
2025-10-17 10:47:19
539
原创 多重循环。
4.4 多重循环🎯 深度理论解析4.4.1 多重循环的计算复杂性理论多重循环是组合爆炸和计算复杂性的直观体现。在算法分析中,嵌套循环的深度直接决定了算法的时间复杂度,从O(n)的线性时间到O(nk)的多项式时间,乃至O(2n)的指数时间。计算复杂性分类· 单层循环:O(n) - 线性时间· 双重循环:O(n²) - 多项式时间· 三重循环:O(n³) - 立方时间· k重循环:O(n^k) - 多项式时间层次4.4.2 多重循环的语法语义模型标准嵌套结构执行语义模型🔬 核心技术实现4.4.3 基
2025-10-17 10:46:51
695
原创 for循环
通过本节的深入学习,读者应能掌握for循环从基础语法到高级工程实践的全方位知识,特别在需要精确控制和性能优化的场景中能够做出恰当的技术选型和实现。for循环作为C语言中最常用且最高效的循环结构,是编写高质量C程序的基础。在程序语义学中,for循环可视为有界迭代的语法糖,具有可预测的迭代次数和明确的终止条件。高级特性 性能优化、算法模式 高性能计算、系统编程 性能与可读性平衡。基础语法 三表达式控制、循环体 数值计算、数组遍历 清晰的循环控制。4.3.1 for循环的计算理论与数学基础。
2025-10-16 16:49:02
350
原创 do...while循环
通过本节的深入学习,读者应能掌握do…while循环从理论基础到高级工程实践的全方位知识,特别在需要保证至少执行一次的业务场景中能够做出恰当的技术选型和实现。while循环在形式语义中被称为后测试循环,其理论模型基于不动点理论和程序验证逻辑。与while循环的本质区别在于保证至少执行一次的语义特性。模式设计 验证重试、状态维护 配置向导、对话系统 适当的用户反馈。工程实践 错误恢复、性能监控 生产系统、实时应用 资源清理与恢复。while循环的数学基础与计算理论。在霍尔逻辑中,do…陷阱1:不必要的do…
2025-10-16 16:48:28
435
原创 while循环
while循环作为结构化程序设计的三大基本结构之一(顺序、选择、循环),体现了计算思维中的迭代思想。通过本节的深入学习,读者应能掌握while循环从基础语法到高级工程实践的全方位知识,为构建复杂可靠的软件系统奠定坚实基础。工程实践 错误处理、性能优化 生产系统、性能敏感场景 可维护性优先。基础语法 条件表达式、循环体 简单迭代、计数循环 清晰的变量命名。高级特性 嵌套循环、复杂条件 业务逻辑、算法实现 循环不变式设计。模式设计 标记控制、状态标志 用户交互、数据处理 单一职责原则。
2025-10-16 16:47:57
576
原创 分支结构程序设计实例
这些实例展示了分支结构在复杂业务场景中的高级应用,为开发企业级软件系统提供了完整的参考实现。实现基于角色和权限的多层访问控制系统,包含用户认证、权限验证和操作审计。实现基于症状和检查结果的智能诊断建议系统,包含风险评估和紧急处理建议。· 清晰的命名规范:变量和函数名具有自解释性。· 完善的注释:关键算法和业务逻辑详细注释。· 错误处理:全面的输入验证和异常处理。· 错误引导:友好的错误提示和纠正建议。· 一致的代码风格:统一的缩进和格式。· 直观的界面:清晰的菜单和提示信息。🔐 实例2:多层安全认证系统。
2025-10-15 22:22:21
160
原创 从一次“差点翻车”的SQL注入,聊聊我的代码安全重构实践
本文从一个真实的代码漏洞案例出发,深度剖析SQL注入的原理与危害,并手把手带你进行安全重构,分享参数化查询、ORM框架使用等最佳实践。程序把用户输入直接当成了代码的一部分来执行,而非纯粹的数据。一次简单的代码Review,背后隐藏的却是一个可能造成数据泄露、服务瘫痪的重大安全风险。是的,这是一个典型的SQL注入漏洞。· 参数化查询是抵御SQL注入的银弹:无论是原生JDBC还是ORM框架,都要确保最终使用的是参数化查询。· ${}:是纯粹的字符串拼接,不安全。发现这个问题后,我立即推动了代码的重构。
2025-10-11 18:21:12
425
原创 多分支语句(switch语句)
switch语句是C语言中用于处理多分支选择的结构,它根据一个表达式的值,从多个可能的执行路径中选择一个执行。switch语句是处理多分支选择的强大工具,特别是在处理菜单、状态机等场景时非常有用。但是需要根据具体情况选择使用switch还是if语句,以获得更好的代码可读性和维护性。break语句用于跳出switch结构,如果没有break,程序会继续执行后续的case语句。switch语句的表达式必须是整型或字符型,不能是浮点型或字符串。switch语句的局限性。switch语句的特点。
2025-10-11 16:26:22
517
原创 条件语句(if语句)
if语句是C语言中最重要的控制结构之一,熟练掌握各种if语句的形式对于编写复杂的程序逻辑至关重要。在实际编程中,应该根据具体情况选择最合适的条件判断方式。:)是C语言中唯一的三目运算符,可以替代简单的if…if语句是C语言中最基本的分支结构,用于根据条件决定是否执行某段代码。如果条件表达式为真,整个表达式的值为表达式1的值,否则为表达式2的值。else语句提供了两个分支,根据条件选择执行其中一个分支。在一个if语句中嵌套另一个if语句,用于处理更复杂的条件判断。else语句的基本概念。
2025-10-11 16:24:15
433
原创 关系表达式和逻辑表达式
关系表达式和逻辑表达式是构成条件判断的基础,熟练掌握这些表达式对于编写复杂的分支结构程序至关重要。<= 小于等于 左操作数小于或等于右操作数 a <= b。= 大于等于 左操作数大于或等于右操作数 a >= b。&& 逻辑与 两个操作数都为真时结果为真 a && b。· &&:如果第一个操作数为假,不再计算第二个操作数。· ||:如果第一个操作数为真,不再计算第二个操作数。< 小于 左操作数小于右操作数 a < b。== 等于 两个操作数相等 a == b。大于 左操作数大于右操作数 a > b。
2025-10-11 16:23:44
452
原创 数据结构程序设计实例
顺序结构是程序设计中最基本的结构,程序按照语句的书写顺序依次执行。本节通过多个实际案例来展示顺序结构程序的设计方法和应用场景。通过以上实例,我们可以看到顺序结构程序设计的典型模式:输入→处理→输出。输入一个学生的三门课程成绩,计算平均分和总分,并给出成绩等级。编写程序计算常见几何图形的面积和周长,包括矩形、圆形、三角形。编写程序实现时间单位的转换,包括秒、分钟、小时、天之间的转换。编写程序计算两个数的和、差、积、商,并显示结果。编写程序实现人民币与主要外币的兑换计算。实例1:简单的数学计算。
2025-10-08 14:32:59
382
原创 常用的数学函数
C语言的标准数学库math.h提供了丰富的数学函数,用于执行各种数学运算。pow(x, y) x的y次幂 pow(2, 3) = 8.0。sqrt(x) x的平方根 sqrt(16) = 4.0。cbrt(x) x的立方根 cbrt(27) = 3.0。fmod(x, y) 浮点数取余 x除以y的余数。floor(x) 向下取整 不大于x的最大整数。ceil(x) 向上取整 不小于x的最小整数。log10(x) x的常用对数 以10为底。exp(x) e的x次幂 自然指数函数。
2025-10-08 14:32:27
315
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅