C语言
文章平均质量分 55
WangLanguager
喜欢IT,喜欢编程,希望遇到更多志同道合的朋友!
展开
-
auto关键字
需要注意的是,在使用"auto"关键字时,编译器会在编译期间推导变量的实际类型,因此编译时会产生与推导类型相关的代码。在使用"auto"关键字时,要确保初始化表达式的类型明确且不会发生隐式转换,以避免类型推导错误。在使用"auto"关键字时,变量的类型将由编译器根据其初始化表达式进行推导,无需显式指定变量类型。在编程中,"auto"关键字通常用于自动推导变量的类型。在这个例子中,我们使用"auto"关键字声明了几个变量,并根据其初始化表达式来自动推导类型。输出结果显示了每个变量的值和类型。原创 2024-06-03 21:01:01 · 254 阅读 · 0 评论 -
C语言自定义数据类型
除了使用结构体类型外,我们还可以使用typedef关键字将结构体类型定义为一个新的类型名,这样使用起来更加简洁。综上所述,C语言自定义数据类型的本质是结构体类型,我们可以使用结构体类型以及typedef关键字定义自己的数据类型。上述代码定义了一个Person结构体类型,该类型包含三个成员变量:name、age和height。上述代码定义了一个名为p1的Person类型的结构体变量,并对其成员变量进行了初始化。上述代码通过结构体变量p1以及点操作符访问了结构体成员变量。三、访问结构体成员变量。原创 2023-05-10 20:00:00 · 234 阅读 · 0 评论 -
C语言随机读写文件
总之,在C语言中,随机读写文件的操作可以使用fseek,fread和fwrite等标准库函数来实现。在实际开发中,可以根据具体需求选择不同的读写方式和函数,以提高程序的性能和效率。使用fseek函数将文件指针移动到指定位置,然后使用fwrite函数往文件中写入数据。使用fseek函数将文件指针移动到指定位置,然后使用fread函数从文件中读取数据。C语言可以通过标准库函数实现文件的随机读写操作。原创 2023-05-11 18:00:00 · 266 阅读 · 0 评论 -
C语言的文件读取、写入
文件读取和写入是C语言中非常重要的操作之一,可以通过标准库函数来实现。原创 2023-05-12 17:00:00 · 3165 阅读 · 0 评论 -
C语言预处理命令
C语言预处理命令用于在编译之前对源文件进行简单加工。原创 2023-05-13 17:30:00 · 244 阅读 · 0 评论 -
C语言实现学生成绩管理系统
这个示例程序实现了添加、查询、删除、修改学生信息的功能。在程序中,使用了结构体和指针等C语言的基础语法,同时也涉及到了动态内存分配和释放等高级语法。总之,C语言作为计算机行业的核心语言,确实非常重要,无论是在操作系统、硬件驱动领域,还是在科学计算和前端开发等领域,都有广泛应用。C语言可以通过结构体和指针等基本语法来实现学生成绩管理系统。原创 2023-05-14 21:00:00 · 1395 阅读 · 0 评论 -
递归详解,斐波那契数列、二叉树遍历、汉诺塔问题的递归代码
否则,将n-1个盘子从from柱子借助to柱子移动到by柱子,再将第n个盘子从from柱子移动到to柱子,最后将n-1个盘子从by柱子借助from柱子移动到to柱子。需要注意的是,在使用递归遍历二叉树时,需要判断当前节点是否为空,如果为空则直接返回;在递归过程中,问题会不断被分解为规模更小的子问题,直到达到一个基本情况,该基本情况可以被直接求解,而无需再进行递归调用。在主函数中,我们定义了汉诺塔的圆盘数n和三根柱子的名称A、B、C,并调用move函数将n个盘子从A柱子借助B柱子移动到C柱子。原创 2023-06-02 22:00:00 · 938 阅读 · 0 评论 -
自动化测试的框架
Robot Framework:基于Python的自动化测试框架,通过关键字驱动的方式来简化测试脚本的编写。自动化测试框架是指为了支持自动化测试而开发的一套软件框架,它可以提供一些常用的测试功能,例如测试用例管理、结果统计、报告生成等。使用自动化测试框架可以大大提高测试的效率和准确性。总之,在选择自动化测试框架时,需要根据实际情况选择合适的框架,并考虑框架的可维护性、易用性、扩展性和稳定性等因素。PyTest:基于Python的自动化测试框架,它具有可扩展性和灵活性,可以方便地扩展自定义的测试插件。原创 2023-06-14 20:00:00 · 540 阅读 · 0 评论 -
自动化测试
自动化测试是指通过专门的自动化测试工具和脚本,对软件系统进行测试,从而提高测试效率、减少测试周期和成本,增强测试结果的可重复性和一致性。增强测试结果的可重复性和一致性:自动化测试可以自动执行相同的测试用例,并在相同的测试环境中运行,从而保证了测试结果的可重复性和一致性。发现更多的缺陷:自动化测试可以执行一些手动测试无法做到的测试,例如并发测试、压力测试等,这会帮助发现更多的缺陷。提高测试覆盖率和准确性:自动化测试可以执行更多的测试用例,覆盖更多的测试场景,从而提高测试覆盖率和准确性。原创 2023-06-13 21:00:00 · 415 阅读 · 0 评论 -
单元测试及C语言的几个例子
单元测试是软件开发中的一种测试方式,它主要是对代码中最小可测试单元进行检查和验证。通常来说,单元测试的实施应该在整个软件开发周期的早期就开始,最好是在代码编写过程中就边写边测试,以及在执行集成和系统测试之前启动。下面是单元测试的详解:单元测试的目的:单元测试的主要目的是验证代码的正确性,从而尽早地捕获并消除缺陷,提高代码的质量、可读性、可维护性和可扩展性。通过单元测试,可以解决一些问题,例如改善软件架构、减少代码重构、优化代码性能等。原创 2023-06-16 22:00:00 · 1649 阅读 · 0 评论 -
C语言的几种缺陷及其规避方法
异常处理机制:C语言中没有自带的异常处理机制,但是可以通过设置错误码来表示异常情况,极其简单,也可以在C语言中使用一些异常处理库如setjmp.h、siglongjmp.h等来实现类似的机制。总之,虽然C语言是一种高效的编程语言,在工业界和学术界都得到了广泛的应用,但其存在的这些缺点也限制了其进一步的发展,使得在现代编程环境下,需要我们更加注意这些缺点,并采取相应的预防措施。容易出现内存管理问题:C语言中,程序员需要手动管理内存,包括内存的分配和释放,容易出现内存泄漏、越界等问题。原创 2023-06-15 20:00:00 · 1184 阅读 · 0 评论 -
c语言的几个陷阱和代码例子
第二个例子中,指针p超出了数组索引的范围,指向了不存在的地址,同样会导致未知的结果;在上述代码中,第一个例子中,循环条件中使用了后缀自增运算符,导致循环结束后,i的值又增加了1;在上述代码中,指针p被用来存储局部变量a的地址,但是当函数块结束后,变量a被销毁了,此时指针p被称为悬垂指针,它指向已经被释放的内存区域,在使用它的时候可能会引起不可预料的问题。在上述代码中,函数func()中使用了动态内存分配函数malloc分配了一段内存,但却没有在函数结束后手动释放这段内存,造成内存泄漏。原创 2023-06-17 23:00:00 · 148 阅读 · 0 评论 -
RC4加密算法及Python实现
密钥流是一个与明文长度相等的伪随机数流,其生成方法如下:初始化i和j两个变量(初始值为0),然后对S盒进行256次置换操作。每次操作中,将S[i]和S[j]交换,并以S[i]+S[j] MOD 256作为索引,从S盒中取出一个值,并将其加入到密钥流中。异或操作的规则是:将明文当中的每一个字节和密钥流中的一个字节进行异或操作,得到加密之后的字节流。T数组是由密钥生成的,其长度和S盒相同。该例程包含三个函数,KSA用于初始化S盒并生成T数组,PRGA用于生成密钥流,RC4函数则是对明文进行加密或解密操作。原创 2023-06-25 23:00:00 · 2066 阅读 · 0 评论 -
哈希搜索算法及C语言实现
线性探测法(Linear Probing):使用一个数组存储整个哈希表,在发生哈希碰撞时,从当前位置开始向后依次查找第一个空闲的位置,并将元素插入到该位置中,当需要查找某个元素时,首先计算出该元素的哈希值,并定位到对应的位置,如果该位置为空,则说明目标元素不存在于哈希表中;否则,如果该位置存储的元素与目标元素相同,则直接返回;需要注意的是,哈希表的实现涉及到很多细节问题,比如哈希函数、冲突解决方法等,如果没有特殊需求,可以使用已经实现好的哈希表库,例如C++ STL库中的 unordered_map 类。原创 2023-06-27 21:30:00 · 276 阅读 · 0 评论 -
二分搜索算法及C语言实现
上述代码中,binary_search 函数用来实现二分查找,在函数内部使用 while 循环不断缩小查找范围,最终返回目标元素的下标或者-1表示目标元素不在给定的数组中。值得注意的是,在使用二分查找时需要保证数组是有序的,否则无法使用该算法。此外,在计算数组中间位置的下标时,为了防止整型变量的溢出,建议采用 (left + right) / 2 或者 left + (right-left)/2 的方式进行计算。二分搜索是一种高效的查找算法,可以在有序数组中快速定位目标元素位置。将待查找区间的中间位置。原创 2023-06-28 21:00:00 · 484 阅读 · 0 评论 -
线性搜索算法及C语言实现
线性搜索算法(也称为线性查找)是在一组元素中按照顺序逐一查找特定元素的算法。它是一种最基础、最简单的查找方法,适用于任何类型的数据。具体实现过程是从数组的第一个元素开始,依次检查数组中的每个元素,直到找到目标元素或者查找整个数组都没有找到目标元素。以上代码中,arr 是待查找的数组,n 是数组长度,target 是待查找的目标元素。在 main 函数中,我们调用 linear_search 函数完成数组元素的查找,最后输出查找结果。从数组的第一个元素开始进行比较,如果查找到了目标元素,返回它所在的位置;原创 2023-06-29 23:30:00 · 515 阅读 · 0 评论 -
归并排序算法及C语言实现
其核心思想是将待排序的数组分为两个相等的部分,对这两个部分分别进行递归排序,最后将两个有序的子数组合并成一个有序的整体。可见归并排序的时间复杂度为。合并将相邻的两个单个元素的子序列进行合并,成为一个长度为 2 的有序子序列;接着,将相邻的两个长度为 2 的有序子序列合并,成为一个长度为 4 的有序子序列;以上代码中,merge 函数用于合并两个有序数组,merge_sort 函数是归并排序的主体函数,用于递归排序和合并数组。分解将待排序的数组递归分解为越来越小的子序列,直到分解成单个元素的子序列。原创 2023-06-30 21:30:00 · 628 阅读 · 0 评论 -
快速排序及C语言实现
快速排序算法是一种基于“分治思想”的高效排序算法,其原理是将一个可排序序列按照某个基准数划分成两个子序列,其中左边的子序列所有元素均小于等于基准数,右边的子序列所有元素均大于等于基准数,再对左右子序列分别递归执行同样的操作,直到整个序列有序为止。以上代码中,swap 函数用于交换两个数的值,partition 函数则是选择一个基准数(这里选择最后一个元素)将数组划分成左右两部分,并返回基准数所在的位置。但是,它也有一些缺点,例如在极端情况下,如当待排序的序列已经有序时,快排算法的时间复杂度会退化到。原创 2023-07-01 22:00:00 · 139 阅读 · 0 评论 -
插入排序及C语言实现
插入排序是一种简单的排序算法,其基本思想是将未排序序列中的每个元素依次插入到已排序的序列中合适的位置。外层循环负责遍历未排序序列,内层循环则负责在已排序序列中寻找合适的插入位置。注意,在 C 语言中,数组的下标是从 0 开始计数的,因此在插入排序算法的实现中,也需要注意数组下标的起始值。在函数内部,外层循环从第二个元素开始遍历整个序列,内层循环则负责在已排序序列中寻找合适的插入位置。从第二个元素开始,依次遍历整个序列,将当前遍历到的元素标记为。中,直到所有的元素都被插入到已排序的序列中。原创 2023-07-02 21:30:00 · 198 阅读 · 0 评论 -
选择排序及C语言实现
选择排序(Selection Sort)是一种基本的排序算法,它的基本思想是将待排序序列分成已排序区间和未排序区间,每次从未排序的区间中选出最小(大)的元素,将其放入已排序区间的末尾,直到所有元素都排完序位置。for 循环遍历整个数组,每次从剩余未排序部分中找出最小元素的下标,再将该元素和已排序部分的末尾交换位置。将当前元素和 minIndex 位置上的元素进行交换,把最小值放到已排序区间的末尾。选择排序的优点是简单易于理解,缺点是时间复杂度较高,为 O(n^2)。重复上述过程直到未排序区间为空。原创 2023-07-06 21:00:00 · 307 阅读 · 0 评论 -
堆栈的定义和用途
这个例程中,我们定义了一个结构体 Stack 表示堆栈,它包含一个数组 data 和一个整型变量 top,表示堆栈的元素和栈顶位置。堆栈的数据结构和算法堆栈(stack)是一种常用的数据结构,常用于需要先进后出(Last In First Out,LIFO)操作的场合。应用程序:堆栈被用来存储程序的执行过程中的状态信息,例如Android中的任务堆栈就是用来管理Activity的,帮助多任务处理。编译器:堆栈被用来实现表达式的计算和语句的执行,以及控制程序的流程等。原创 2023-04-10 23:00:00 · 3874 阅读 · 0 评论 -
内存管理介绍
常见的内存分配方式有如下几种:(1)连续内存分配:将可用内存划分为一段一段的连续空间,每个进程占用一段连续的内存空间。需要注意的是,在使用动态内存分配和释放时,需要谨慎处理内存泄漏和指针悬挂等问题,以避免出现程序非正常退出、崩溃等情况。1.内存的基础知识内存是计算机中用于存储和读写数据的硬件设备,它可以存储程序代码、数据、运行时产生的临时数据和内核数据等。如果内存分配失败,则打印分配失败的信息并退出程序。需要注意的是,在多进程或多线程的环境下,内存管理需要考虑同步和互斥等问题,以保证数据的一致性和安全性。原创 2023-04-04 21:15:00 · 694 阅读 · 0 评论 -
冒泡排序及C语言实现
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它的基本思路是通过比较相邻元素的大小关系,将大的元素交换到数组的末尾,同时不断缩小排序范围,直到整个数组有序为止。具体过程如下:从数组的第一个元素开始,依次比较相邻两个元素的大小。如果第一个元素比第二个元素大,则交换这两个元素的位置。继续向后比较,直到最后一个元素,此时最后一个元素应该是整个数组中最大的元素。重复以上步骤,不断缩小排序范围,并将剩余元素中的最大值放置在正确的位置上,直到整个数组排序完成。原创 2023-03-27 12:00:00 · 134 阅读 · 0 评论 -
CRC校验算法以及相关实现示例
接收方在接收到数据后,也可以重新计算校验码,若接收到的校验码与重新计算出的校验码不同,则说明数据存在错误。在这个函数中,我们首先将初始值设为0xFFFF,然后按照CRC算法对输入数据进行处理,并返回计算得到的CRC值。最后,在主函数中,我们定义了一个测试数据数组msg,并将它传入crc_ccitt()函数中计算得到CRC校验值,并输出结果。接收方收到数据帧后,也按照同样的方法计算出校验码,如果计算出的校验码与接收到的校验码相同,则数据传输没有出错。CRC码是由数据生成的,不必提前设定。原创 2023-03-22 22:30:00 · 1585 阅读 · 0 评论 -
C语言的优点
高度模块化和可扩展性:C语言通过函数库和模块化设计,可以方便地将大型程序分解成多个独立的部分进行开发和维护。强大的控制能力:C语言提供了指针和位运算等强大的控制机制,可以访问内存地址,从而实现对硬件的底层控制。可移植性好:C语言的标准库函数和语言规范较为稳定,因此编写的程序可以在不同的计算机平台上编译运行。丰富的数据类型和运算符:C语言支持多种基本数据类型和运算符,并且可以自定义数据类型。简洁而高效:C语言采用紧凑的语法结构,使得程序代码简洁明了,执行速度快。原创 2023-03-23 20:00:00 · 60 阅读 · 0 评论 -
C语言的常量
使用 #define 不用声明数据类型,而且不用类型检查,仅仅是定义;而使用 const 需要声明具体的数据类型,在编译阶段会进行类型检查。原创 2022-09-23 23:00:00 · 1977 阅读 · 0 评论 -
C语言的数据类型
为什么说可能,这是由于 C 语言为了适配不同的机器来设定的语法规则,在早起的计算机上,int 类型和 short 类型都占 16 位,long 类型占 32 位,在后来的计算机中,都采用了 16 位存储 short 类型,32 位存储 int 类型和 long 类型,现在,计算机普遍使用 64 位 CPU,为了存储 64 位整数,才引入了 long long 类型。所以,int 和 char 只是存储的范围不同,整型可以是 2 字节,4 字节,8 字节,而字符型只占 1 字节。原创 2022-09-22 22:45:00 · 398 阅读 · 0 评论 -
C 语言中的关键字
子程序返回语句(可以带参数,也看不带参数)控制语句循环的关键字也有 12 个,分别是。数据类型的关键字主要有 12 个,分别是。个,根据其作用不同进行划分。C 语言的关键字一共有。原创 2022-09-21 22:15:00 · 196 阅读 · 0 评论 -
C 语言标准库
头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型(比如 char、int 和 long)的值。和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。头文件定义了各种数学函数和一个宏。头文件定义了各种变量类型和宏。头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。,它是通过系统调用设置的,这些库函数表明了什么发生了错误。头文件定义了四个变量类型、一些宏和各种通用工具函数。头文件定义了整数变量。原创 2022-09-20 22:30:00 · 1444 阅读 · 0 评论 -
C语言程序执行时的硬件操作流程
前面我们简单的介绍了一下计算机的硬件的组成和操作,现在我们正式介绍运行示例程序时发生了什么,我们会从宏观的角度进行描述,不会涉及到所有的技术细节刚开始时,shell 程序执行它的指令,等待用户键入一个命令。当我们在键盘上输入了./hello这几个字符时,shell 程序将字符逐一读入寄存器,再把它放到内存中,如下图所示当我们在键盘上敲击回车键的时候,shell 程序就知道我们已经结束了命令的输入。原创 2022-09-19 22:45:00 · 866 阅读 · 0 评论 -
计算机的硬件组成
从系统通电开始,直到系统断电,处理器一直在不断地执行程序计数器指向的指令,再更新程序计数器,使其指向下一条指令。处理器从程序计数器指向的内存中读取指令,解释指令中的位,执行该指令指示的一些简单操作,然后更新程序计数器以指向下一条指令。一般来说,组成程序的每条机器指令都由不同数量的字节构成,C 程序变量相对应的数据项的大小根据类型进行变化。上图中有四类 I/O 设备:用于用户输入的键盘和鼠标,用于用户输出的显示器,一个磁盘驱动用来长时间的保存数据和程序。主存既保存程序,又保存处理器执行流程所处理的数据。原创 2022-09-18 22:30:00 · 238 阅读 · 0 评论 -
C 语言程序的执行流程
C 语言程序成为高级语言的原因是它能够读取并理解人们的思想。然而,为了能够在系统中运行hello.c程序,则各个 C 语句必须由其他程序转换为一系列低级机器语言指令。这些指令被打包作为可执行对象程序,存储在二进制磁盘文件中。目标程序也称为可执行目标文件。在 UNIX 系统中,从源文件到对象文件的转换是由编译器执行完成的。gcc 编译器驱动从源文件读取hello.c,并把它翻译成一个可执行文件hello。这个翻译过程可用如下图来表示,下面我们逐个击破。,预处理器会根据开始的#字符,修改源 C 程序。原创 2022-09-17 22:15:00 · 2559 阅读 · 0 评论 -
C 语言的特性
C 语言是一门抽象的、面向过程的语言,C 语言广泛应用于底层开发,C 语言在体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都应该把 C 语言放在首先要学的位置上。下面这张图更好的说明 C 语言的重要性可以看到,C 语言是一种底层语言,是一种系统层级的语言,操作系统就是使用 C 语言来编写的,比如 Windows、、UNIX。如果说其他语言是光鲜亮丽的外表,那么 C 语言就是灵魂,永远那么朴实无华。原创 2022-09-16 22:30:00 · 1036 阅读 · 0 评论 -
怎么在C语言中调用系统指令
可以理解成:程序跳到了新的进程开始执行,但是进程号并没没有变。exec也经常配合vfork在子进程中启动新的进程,这样父进程还能继续检测子进程的动态。type表示操作文件的权限,可以选择“r”,“w”,“e”。exec的定位和system不太一样,exec更多时候用于启动一个新的进程,用新的进程来代替当前进程。如果需要在C语言调用系统指令,经常使用system函数,操作简单方便,很容易理解。如果在C文件中调用系统命令,同时还要获得命令的输出结果,可以使用popen函数。参数非常简单,把需要执行的命令作为。转载 2022-09-15 22:30:00 · 1667 阅读 · 0 评论 -
函数指针与回调函数
有时候会遇到这样一种情况,当上层人员将一个功能交给下层程序员完成时,上层程序员和下层程序员同步工作,这个时候该功能函数并未完成,这个时候上层程序员可以定义一个API来交给下层程序员,而上层程序员只要关心该API就可以了而无需关心具体实现,具体实现交给下层程序员完成即可(这里的上层和下层程序员不指等级关系,而是项目的分工关系)。上面代码中采用的结构体初始化方式也是在Linux中最常用的一种方式,这种方式的好处在于无需按照结构体的顺序一对一。是回调函数,该函数的形参为一个函数指针,而。转载 2022-09-09 23:15:00 · 194 阅读 · 0 评论 -
C语言的多维数组
二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量。原创 2022-09-15 23:00:00 · 701 阅读 · 0 评论 -
C语言的字符串与数组
C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。1、strlen()获取字符串的长度,在字符串长度中是不包括‘’而且汉字和字母的长度是不一样的。char 字符串名称[长度] = {'字符1','字符2',...,'字符n',''};采用第2种方式的时候最后一个元素必须是'',''表示字符串的结束标志;char 字符串名称[长度] = "字符串值";采用第2种方式的时候在数组中不能写中文。[]中的长度是可以省略不写的;原创 2022-09-14 22:15:00 · 328 阅读 · 0 评论 -
C语言数组的应用[冒泡排序]、[数组查找功能]
以升序排序为例冒泡排序的思想:相邻元素两两比较,将较大的数字放在后面,直到将所有数字全部排序。就像小学排队时按大小个排一样,将一个同学拉出来和后面的比比,如果高就放后面,一直把队伍排好。那么应用到程序中,可以使用数组查找功能,看看是否存在该数据,如果存在并返回该元素的下标。当我们购物之后,拎着购物袋回到家,会一一检查购物袋中的物品看是否缺少或者都是想购之物。原创 2022-09-13 23:00:00 · 380 阅读 · 0 评论 -
C语言的数组
程序中也需要容器,只不过该容器有点特殊,它在程序中是一块,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋,在该购物袋中的物品是按一定顺序放置的。数组只声明也不行啊,看一下数组是如何初始化的。说到初始化,C语言中的数组初始化是有三种形式的,分别是:数据类型 数组名称[长度n] = {元素1,元素2…元素n};数据类型 数组名称[] = {元素1,元素2…元素n};数据类型 数组名称[长度n];数组名称[0] = 元素1;数组名称[1] = 元素2;原创 2022-09-13 22:15:00 · 123 阅读 · 0 评论 -
C语言的内部函数与外部函数
这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法。晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。请编写一个小程序计算小明每天打车的总费用。原创 2022-09-12 22:30:00 · 1672 阅读 · 1 评论