随着科学技术的不断发展,计算机技术已经取得了较快发展,C语言已经成为应用最广泛的编程语言。下面是搜索整理的c语言论文8篇,供大家借鉴参考。
c语言论文第一篇:C语言的命名规范和结构设计探究
摘要:C语言作为目前国际上比较流行的高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普遍青睐,C语言程序设计课程也已在高校计算机类专业中开设,但是鉴于高职院校的学生在学习过程中对有些技术掌握不好,应用时较易发生错误,因此结合长期从事C语言项目实践的体会,对C语言编程中命名规范和结构设计的应用进行了研究与分析,以期为初学者提供一定参考。
关键词:C语言; 命名; 结构;
Application of C Language Naming and Structural Design Technology
XU Hui
College of Electronic and Information Engineering,Wuhan Technical College of Communications
Abstract:C language, being one of the most popular advanced programming languages in the world, is widely favored by programmers because of its simplicity, convenience and powerful functions. C language programming course has also been offered in the computer specialty of colleges and universities. However, in view of the students 39; poor mastery of some technologies in the learning process in higher vocational colleges, errors in application are easy to occur. In this regard, combined with long-term experience in C language project practice, the application of naming specification and structure design in C language programming technology has been studied and analyzed in order to provide some reference for beginners.
0 引言
C语言是一种非常实用、应用广泛的程序设计语言。它功能强大、使用灵活、可移植性好,既具有高级语言的优点,又具有低级语言的特点。C语言可用于编写系统软件,也可用于编写应用软件,是大多数计算机相关专业学生的入门语言。但由于涉及到的概念及数据结构较复杂,导致在某些技术应用上较易出错。为了编写出简洁可靠的C语言代码,笔者结合自身多年C语言使用心得,就其命名规范和结构设计两个方面的常见应用展开分析,帮助初学者增加所编写程序的可读性、健壮性,养成良好的编程习惯。
1 命名规范
1.1 变量命名
目前我们利用的C语言主要数据类型有整型、字符串型、结构型、浮点型等,变量由字母组成,可以是大小写混合命名,一般不使用 _ 符号、数字和中文拼音或者中文拼音缩写来命名变量。
(1)整型。该数据类型指的是32位的整数,范围在 -231~+231-1 间,用int类型申明。此类型变量一般以i开头大小写混合单词命名;数组以ai开头大小写混合单词命名;指针则是以pi开头大小写混合单词命名。
这段代码中展示的是常见整数类型变量的命名,此处使用的是j,k,l定义变量,也可以使用I,K,L来定义,这些变量的作用域都比较小,无需做特殊处理。
(2)字符串类型。这种数据类型用来存放字符串数据或一个字符的数组,用char类型声明。此类型变量一般以s开头的大小写混合命名;数组以as开头大小写混合单词命名;指针不定义指向字符串的指针,而字节用字符串的地址。
这段代码展示的是常见字符串类型变量的命名,一般字符串在存放数据时,需要定义的数组长度必须比实际存放的数据长一位,例如:此变量对应的字符串是 hello ,因此至少需要定义一个6位的字符数组来存放这个字符串。
对于初学者最易出错的就是字符串和整数间的转换问题,不同的操作系统会将char做不同的处理,有的视为无符号的8位整数,而有的则处理为有符号的整数,因此,在做字符串和整数间的转换时要特别注意。
以上代码在不同的系统上很可能有不同的返回,所以建议在做逻辑判断时尽量用整数来判断,不要用char类型。
(3)结构类型。这种数据类型用来存放一组相互关联的数据(如用户资料、区号、号段等),用struct关键字申明。此类型变量一般直接用大小写混合命名;数组用as开头的大小写混合命名(一般使用的比较少);指针则用p或pt开头的大小写混合命名,指针的指针用pp开头的大小写混合命名(一般不用三重指针)。
这段代码展示的是常见结构类型变量的命名。对于指针我们一般也使用pTemp,pt Head,pHead,pData,ptCur,ptPre等来命名,这同整数变量中的I,j,k,l,m,n类似,用来命名作用域比较小的指针变量;对于结构体我们常用Temp、TempIn、TempOut等来命名。
(4)浮点类型。这种数据类型用来存放特别小的数值,或特别大的数值,用float类型声明。此类型变量一般用f开头大小写混合命名;数组用af开头大小写混合命名;指针则用pf开头大小写混合命名。
这段代码展示的是常见浮点类型变量的命名,浮点类型使用上需要注意它在转换为整数时是截断的,需要四舍五入。
除了以上常见类型的变量定义,还要注意在C语言中这些类型的变量命名,如:长整数类型用LONGINT来申明,因为long在某些系统中是32位的,在另一些系统中是64位的;short类型表示 -215~+215-1 ,一般用int代替;FILE类型用fp或fp开头大小写混合的字符串命名,等等。
1.2 函数命名
函数命名时,相同类型的参数是连续设置的,参数个数一般不要超过6~7个。函数名称不要超过50个字符。函数名称需要标明具体的含义,特别是函数的功能,改动函数的实现功能后需要将函数名也做相应的修改。
(1)一般用途函数用大小写混合字符串。
(2)特殊用途函数用小写字符串,用下划线连接。
(3)一些特定字符串开头的函数名有专门的功能含义。
Arch开头的函数一般表示将内存中数据结构中变动的变量保存到另外一个变量;
Assign开头的函数一般表示具体将数据加到某个数据结构的函数;
Check开头的函数一般表示做某个校验;
Create开头的函数一般是建立某个内存数据结构;
Comp开头的函数一般表示对2个相同结构的比较;
Destroy开头的函数表示释放内存中的数据结构;
Get开头的函数表示从数据库中获取数据或获取指定的数值;
Init开头的函数一般表示将数据库数据初始化到内存或表示初始化一个指定的结构;
Insert开头的函数表示将数据写入数据库或将数据插入到内存的一个数据结构中;
Load开头的函数一般表示调用Get函数将数据库小数据量加载到内存;
Mount开头的函数一般表示调用Get函数将数据库大数据量加载到内存;
Process开头的函数一般表示主处理逻辑,如ProcessMain,ProcessFile,ProcessTicket等;
Reset开头的函数一般表示将内存中数据结构中的变量数值恢复到上次保存的值;
Search开头的函数表示从内存表中匹配;
Update开头的函数表示将数据更新到数据库中。
1.3 文件命名
在C语言编程中需要根据功能将代码分别存放在不同的文件中,对于文件命名通常用小写单词的字符串,如果比较长就用下划线隔开单词。常见的文件命名有头文件用.h、数据库接口文件用.pc、逻辑实现用.c、库文件用.a。文件名不要太长,不要超过30个字符。
2 结构设计
2.1 程序书写结构
在进行程序结构设计时,需要关注书写结构和逻辑结构,其中书写结构主要侧重的是程序的风格,好的书写结构能够大大提高程序的可读性。在书写程序过程中,大致会遇到结构声明、函数定义、函数调用、循环等主要结构。
2.1.1 结构声明
尽量用/**/注释,用//对PROC不太支持, { 应放在行尾。注释要用简单明了的中文,要排列整齐,一般不要超过5行,最多不要超过10行。
2.1.2 变量声明
函数内的变量不要太多,除了复杂的函数一般不要超过10个变量,最多不要超过20个。尽量不要在函数内引用全局变量,如果实在需要引用,最好在函数最前方声明一个与临时变量相同的变量,或申明一个指针指向该全局变量,在申明指针时最好加默认值。一般声明语句同一个变量类型写一行,变量类型书写的顺序一般为file、int、char、long、struct的顺序。
以下是关于不同类型变量申明的细微区别的分析:
以上三种声明在大多数系统中是相同的,但是也存在理解上的细微差别,建议使用(2)式,因为该函数需要返回一个字符串的功能,而且该字符串最长为14位,但是(1)式中建议如果需要返回一个字符时使用,(3)式不建议使用,因为该种申明当用sHostTime去绑定oracle数据库系统变量时会有问题。
2.1.3 函数调用
函数调用形式通常有两种,无返回值和有返回值。
无返回值的情况:
有返回值的情况:
2.1.4 循环
循环结构有两种,分别为for和while,一般不要循环套循环。
2.1.5 if结构
在if结构设计中有三点需要注意:不要if套if三重或以上;不要else后有if;不要第一个if的执行语句块内包含修改第二个if条件的逻辑。
这里建议使用(1)if结构,因为(2)if结构逻辑复杂,可能会引起代码理解偏差。
2.1.6 返回值
一般定义函数正常返回0,函数异常返回-1。
2.2 程序逻辑结构
另一个结构应用就是逻辑结构设计,逻辑结构侧重程序的逻辑划分,好的逻辑结构能够大大提高程序的可理解性。一般来讲,程序的实现包含三个主要部分,即数据访问部分、业务逻辑部分、算法。在程序逻辑结构设计上可以将访问、逻辑、算法分开实现。同时从程序运行的环境上,又分为数据库、网络、文件、目录、异常、日志等内容,所以在进行函数划分、文件划分、异常处理、日志处理时都依照以上要求进行。
2.2.1 函数的划分
(1)一个函数没有特殊需要不要超过100行,一个程序80%的函数应该在一屏之内可以显示;
(2)函数功能一般比较单一,如实现某个算法、从数据库获取数据、将结果数据写到数据库中、对获取的数据做逻辑处理等;
(3)主逻辑函数中最好不要出现太多的基本赋值语句;
(4)对一些已经有的函数可以直接调用;
(5)没有特殊情况,不要构造递归函数。
2.2.2 文件的划分
(1)一个文件一般不要超过5000行;
(2)头文件中不要声明变量;
(3)头文件中必须加入避免重复包含的语句;
(4).pc文件中最好都是数据库访问逻辑的集合;
(5).c文件中最好是算法的集合和业务逻辑的集合。
2.2.3 程序异常处理
(1)底层函数一般不能调用exit函数,而只有主逻辑函数才能退出;
(2)底层函数一般不能调用print函数、直接写日志函数;
(3)底层函数一般不能提交或回退数据库;
(4)在分配内存、文件句柄等系统资源时,如果函数调用异常,最好在资源分配的同一层次释放;
(5)为了简化函数的异常处理,有时候常常将使用系统资源函数的部分代码单独写一个逻辑简单的函数专门处理,而将与系统资源无关的部分代码封装为一个函数。
2.2.4 日志问题处理原则
(1)程序日志设置需要分为正常日志记录、告警日志记录、错误日志记录;
(2)为了方便异常处理日志,一般需要记录系统的时间为yyyymmdd hh24:mi:ss结构;
(3)日志以简明中文描述具体的内容;
(4)告警和错误日志不能和正常日志混在一起;
(5)一般错误日志表示程序已经无法正常处理或已经退出了,如表空间满等,这时候需要详细记录底层系统(如操作系统、数据库等软件)传给应用的信息,也必须记录应用第一次发现异常的关键变量的值,以及错误发生文件行、返回路径等信息,便于程序源定位错误。
3 结语
C语言是一种规则繁多、使用灵活、容易出错的语言,在C语言的学习过程中要熟练掌握C语言的语法规则和编程规范,同时在编程过程中不断总结,积累经验,持续提高编程质量。希望本文所提出的这些C语言编程技术的各类命名规范和结构设计规范的技巧和应用,能够为高职院校相关专业的初学者提供一定的参考。
参考文献
[1]谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[2]陈火涛,谢丽珍,张伟志.C语言编程中常见错误及解决办法探讨[J].科技展望,2016,26(5):17.
[3]李阳.计算机C语言编辑程序技巧[J].电脑迷,2017(3):59-60.
[4]沈继涛.计算机C语言编辑程序技巧论述[J].电子技术与软件工程,2016(16):254.
c语言论文第二篇:基于c语言的直接插入排序和希尔排序探析
摘要:数据处理是计算机编程中经常会遇到的问题,而数据排序又是数据处理中的重要组成部分,其中排序算法是数据排序中的核心技术。在很多情况下,排序算法决定着一个程序的执行效率,在实际的编程开发中如何根据具体的问题环境选择合适有效的排序算法就显得尤为重要。本文针对插入排序算法展开研究,对其排序算法原理和特点进行了分析,希望能给相关领域的学者带来帮助。
关键词:c语言; 排序算法; 直接插入排序; 二分查找; 希尔排序;
随着大数据时代的到来,数据量爆炸式增长,数据排序越显重要。排序好的数据在进行各种操作时都会更加便捷,处理效率也会更高效。排序算法是数据排序的灵魂,决定着所用时间的多少,以及所占空间的大小。下面对基于c语言的插入排序进行详细的分析研究。
一、插入排序的基本原理及分类
(一)插入排序的基本原理
插入排序是内部排序算法的一种,其基本原理是在一次插入操作中,按照排序码的大小,将一个待排序元素插入到一组有序元素的适当位置上去,直到元素全部插入为止。
(二)插入排序的分类
在执行具体插入操作时,根据插入方法的不同,主要分为三种插入排序算法,分别是直接插入排序、带二分查找的直接插入排序和希尔排序。下面对这三种插入排序算法进行详细分析。
二、直接插入排序(Straight Insertion Sort)
(一)直接插入排序的基本思想
直接插入排序的基本思想是在一组待排序的元素中,按一定的顺序取出一个元素,将这个元素按排序码的大小插入到排好序了的元素序列中,进而得到一个新的有序的总元素数目加一的有序表,直到所有的元素都插入到这个有序表中为止。
(二)直接插入排序详细过程及c语言程序代码
下面举例说明,假设有一个N=6个的待排序元素,排序码相同的用*加以区分。其中的临时变量temp起暂存的作用。
图(a)是在对该序列进行直接插入排序的过程中每趟排序后的结果。
图(b)是在进行直接插入排序时,i=4时的详细的直接插入排序过程。
直接插入排序算法的c语言代码如下:
(三)直接插入排序算法的性能分析
时间复杂度分析:
初始元素的序列是是影响直接插入排序效率的主要因素,根据初始元素序列的不同其时间复杂度有很大区别。
(1)初始序列是顺序排列时,比较N-1次即可完成排序,时间复杂度O(N)。
(2)初始序列是逆序排列时,需比较N*(N-1)/2次,时间复杂度O(N^2)。
(3)初始序列杂乱无序时,平均时间复杂度O(N^2)。
空间复杂度分析:
在直接插入排序中,临时变量temp暂存待插入元素,空间复杂度O(1)。
算法稳定性分析:
所谓算法稳定性指的是如果待排序记录中有重复元素,在排序后这些元素的相对位置如果保持不变,那么这个排序算法就是稳定的。反之则不稳定。在图(a)中容易发现排序码相同的记录的相对位置没有变化,可见直接插入排序算法是稳定的排序算法。
(四)直接插入排序的改进
直接插入排序算法在进行位置查找操作中可以进行性能改进,那就是在寻找合适的插入位置时,使用二分查找算法,但插入操作的基本原理不变,这样就可以大大减少元素比较次数,提高算法效率。这种改进之后的算法又叫带二分查找的直接插入排序。
三、希尔排序(Shell Sort)
(一)希尔排序基本原理
希尔排序是在直接插入排序的基础上的一种改进,实际上是将待排序序列分组进行直接插入排序,在分组时会出现增量这个概念,增量其实就是同一组数据中相邻元素的下标相隔距离。希尔排序利用了在数据量小、元素基本有序时直接插入排序的效率高的特点,大大提高了排序的效率。
(二)希尔排序c语言程序代码
下面给出希尔排序算法的c语言程序代码:
希尔排序c语言程序代码如下:
(三)希尔排序算法性能分析
时间复杂度分析:
希尔排序算法的时间复杂度分析较复杂,整个过程中元素的比较次数和移动次数因所选择的增量的不同而有较大差异。整体上来看希尔排序的时间复杂度是O(N*log N)。步长gap不同时间复杂度会受影响,根据现有研究随着步长变化希尔排序时间复杂度在O(N*log N)与O(N^2)之间,具体详细的时间复杂度与步长gap的关系还在研究中。
算法稳定性:
希尔排序算法是不稳定的,这一点在其程序代码中也能发现,在进行分组时两个排序码相同的元素的相对位置可能发生变化。
四、结语
在这个数据时代中,数据处理是经常会遇到的问题,数据排序是数据处理中很重要的一环,研究排序算法具有重要的意义。本文主要研究了基于c语言的插入排序算法,并对三种插入排序算法进行了详细的分析。明确各种排序算法的适用条件,熟练掌握算法思想,针对实际问题灵活运用,有助于我们更好的完成数据处理工作。
参考文献
[1]李晶.直接插入排序算法分析与实现[J].中国科技信息,2007(24):347+349.
[2]刘模群.排序算法时间复杂度研究[J].软件导刊,2012,11(06):35-38.
第一篇: 第二篇:
第三篇:嵌入式系统开发中C语言编程软件的运用 第四篇:C语言程序循环结构中的代码优化分析
第五篇:Crowbar(杠杆)的主要模块和命名规则 第六篇:C语言学习过程中几种常用的算法
第七篇:计算机C语言的特点与结构分析 第八篇:浅析C语言代码漏洞的静态检测工具
相关文章:
探究机电设备故障预警及安全保障技术的发展04-26
视觉传达与平面设计04-26
浅谈幼儿园健康教育的有效策略04-26
走进敬老院作文【通用3篇】04-26
生态银行在流域生态补偿机制中的应用 --—以黄河流域04-26
明清长崎贸易与闽南文化东传———以福济寺的变迁为中04-26
企业绩效会影响社会责任履行吗? —基于不同性质企业的04-26