C语言 程序代码编写规范

时间:2019-05-12 21:46:46下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C语言 程序代码编写规范》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C语言 程序代码编写规范》。

第一篇:C语言 程序代码编写规范

C语言 程序代码编写规范

(初级程序员 讨论版)

前言

一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。

说明

此文挡还在完善改进中,如有不足,欢迎指正。本文档主要适用于刚刚开始接触编程的初学者。

对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范—高级版。

目录 代码书写规范 2 注释书写规范 3 命名规范内容代码书写规范

1.1函数定义

每个函数的定义和说明应该从第1列开始书写。函数名(包括参数表)和函数体的花括号(“{”和“}”)应该各占一行。在函数体结尾的括号(“}”)后面应该加上注释,注释中应该包括函数名,这样比较方便进行括号配对检查,也可以清晰地看出来函数是否结束。

范例1:函数的声明

void matMyFunction(int n){ …… } /* matMyFunction*/ 1.2空格的使用

使用空格分割所有演算符号和操作数。

这条规则的例外是“->”,““.”, “()”和“[]”,这些操作符和操作数之间不空格。当需要把一个程序行的内容分成几行写时,操作符号应该放在行末,而不是下一行的开头。

1.3缩进的设置

代码书写应该遵从结构化的要求,采用缩进的格式。最小缩进量为4个空格,整个文件内部应该统一,不要混用Tab键和4个空格这两种情况,因为不同的编辑器对Tab键的处理方法不同。

1.4折行的使用

每行的长度不要超过80个字符,当程序行太长时,应该分行书写。分行时应该按照自然的逻辑关系进行,例如:不要把一个简单的逻辑判断写在两行上。

分行后的缩进应该按照程序的逻辑关系进行对齐。例如:参数表折行后,下面的行应该在参数表左括号的下方。

范例2:折行的格式dwNewShape = matAffineTransform(coords, translation,rotation);

if(((new_shape.x > left_border)&&

(new_shape.x < right_border))&&

((new_shape.y > bottom_border)&&

(new_shape.y < top_border))){

draw(new_shape);}

1.5嵌套语句(语句块)的格式

对于嵌套式的语句--即语句块(如,if、while、switch等)应该包括在花括号中。花括号的左括号应该单独占一行,并与关键字对齐。建议即使语句块中只有一条语句,也应该使用花括号包括,这样可以使程序结构更清晰,也可以避免出错。建议对比较长的块,在末尾的花括号后加上注释以表明该语言块结束。

范例3:嵌套语句格式 if(value < max){

if(value!= 0)

{

func(value);

} } } else {

error(“The value is too big.”);} /* if(value < max)*/ 注释书写规范

注释必须做到清晰,准确地描述内容。对于程序中复杂的部分必须有注释加以说明。注释量要适中,过多或过少都易导致阅读困难。

2.1注释风格

语言中使用一组(/* … */)作为注释界定符。注释内容尽量用英语方式表述。

注释的基本样式参考范例4。

注释应该出现在要说明的内容之前,而不应该出现在其后。

除了说明变量的用途和语言块末尾使用的注释,尽量不使用行末的注释方式。

范例4:几种注释样式

/*

* ************************************************* 强调注释

* ************************************************ */ /* * 块注释 */

/* 单行注释 */

int i;/*行末注释*/ 2.2何时需要注释

如果变量的名字不能完全说明其用途,应该使用注释加以说明。

如果为了提高性能而使某些代码变得难懂,应该使用注释加以说明。对于一个比较长的程序段落,应该加注释予以说明。如果设计文档中有流程图,则程序中对应的位置应该加注释予以说明。

如果程序中使用了某个复杂的算法,建议注明其出处。

如果在调试中发现某段落容易出现错误,应该注明。命名规范

3.1常量、变量命名

用#define定义的符号常量全部采用大写。

变量命名的基本原则:

可以选择有意义的英文(小写字母)组成变量名,使人看到该变量就能大致清 楚其含义。

不要使用人名、地名和汉语拼音。

如果使用缩写,应该使用那些约定俗成的,而不是自己编造的。

多个单词组成的变量名,每个单词的首字母应该大写。如:dwUserInputValue。

3.2函数命名

函数命名原则与变量命名原则基本相同。对于初学者,函数命名可以采用 “FunctionName”的形式。

第二篇:程序代码注释编写规范

程序代码注释编写规范

为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。常规注释有以下两种方式。

单行:以“//”符号开始,任何位于该符号之后的本行文字都视为注释。

多行:以“/*”符号开始,以“*/”结束。任何介于这对符号之间的文字都视为注释。

一、说明性文件

说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。

/************************************************* COPYRIGHT(C), MicTiVo International.Co., Ltd.File NAME: // 文件 Author: Version: Date:

// 作者、版本及完成日期

DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块

// 或函数的接口,输出值、取值范围、含义及参数间的控

// 制、顺序、独立或依赖等关系 Others:

// 其它内容的说明

Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1....History: // 修改历史记录列表,每条修改记录应包括修改日期、修改

// 者及修改内容简述 1.Date: Author: Modification: 2...*************************************************/

二、源文件头

源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。

示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。

/************************************************************ COPYRIGHT(C), MicTiVo International.Co., Ltd.FileName: Author: Version : Date: DESCRIPTION: // 模块描述,描述本文件的内容、功能、内部各部分之间的关系及

//本文件与其它文件关系等 Version:

// 版本信息

Function List:

// 主要函数及其功能 1.-------History:

// 历史修改记录

**********************************************************/

三、函数

函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。

示例:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。

/************************************************* Function:

// 函数名称

DESCRIPTION: // 函数功能、性能等的描述 Calls:

// 被本函数调用的函数清单 Called By:

// 调用本函数的函数清单

Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)Input:

// 输入参数说明,包括每个参数的作

// 用、取值说明及参数间关系。OUTPUT:

// 对输出参数的说明。Return:

// 函数返回值的说明 Others:

// 其它说明

*************************************************/

四、变量寄存器

标志变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。示例:

Unsigned char receive_floag;//接收标志;

/* 0—接收失败, 1—接收成功, 2—…….*/

/*

receive _process()

*/

//调用函数

Unsigned char receive_data[10];//数据接收存储器;

/*在 receive _bit()中对其赋值*/

//调用函数

五、控制寄存器

在对控制器控制寄存器进行操作时,需注明该寄存器功能,配置参数作用,以及配置时的注意事项等的说明。示例:(PIC单片机定时器控制)void time0_init(void){ T0CON=0X09;

//设定TMR0工作于16位定时器方式,内部时钟,不分频 INTCON=INTCON|0X20;//TMR0中断允许

INTCON=INTCON&0Xfb;//清除TMR0的中断标志

INTCON=INTCON|0xc0;//* 开总中断、开外围接口中断

TMR0H= 0xaa;

TMR0L= 0xaa;}

// 对TMR0写入初值.注意:与溢出中断写初值不同

第三篇:单纯形法C语言程序代码

长 春 工 业 大 学

课程设计程序代码

课程设计名称 运筹学课程设计 专 业 信息管理与信息系统 班 级 130506班 学 生 姓 名 于松南、张鑫蕊、赵改玲、赵海潮

指 导 教 师

王亚君、王忠吉

2015年7月3日

#include #include

int m;//记录约束条件方程组的个数 int n;//记录未知量的个数 float M=1000000.0;float A[100][100];

//用于记录方程组的数目和系数

float C[100];

//用于存储目标函数中各个变量的系数 float b[100];

//用于存储常约束条件中的常数 float CB[100];

//用于存储基变量的系数 float seta[100];

//存放出基与入基的变化情况 float cn[100];

//存储检验数矩阵 float x[100];int num[100];

//用于存放出基与进基变量的情况 float Z=0;

//记录目标函数值

void shuru();void print();int mincz();int find_line(int a);void exchange(int a,int b);int main(){

int i,j=0;

int p,q,temp;//q:换入,p:换出

shuru();

printf(“n------------n”);

printf(“ tCBtXBtbt”);

for(i=0;i

printf(“ X(%d)t”,i+1);

for(i=0;i

x[i]=0;

printf(“n”);

while(1){

q=mincz();

if(q==-1){

print();

printf(“n所得解已经是最优解!n”);

printf(“n最优解为:n”);

for(j=0;j

temp=num[j]-1;

x[temp]=b[j];

}

for(i=0;i

printf(“x%d=%.2f ”,i+1,x[i]);

Z=Z+x[i]*C[i];

}

printf(“Z=%.2f”,Z);

break;

}

print();

p=find_line(q);

printf(“np=%d,q=%d”,p,q);

if(q==-1)break;

exchange(p,q);

}

return 0;} int mincz(){

int i,k=0;

int flag=0;//检验数标记

float min=0;

for(i=0;i

if(cn[i]>=0)

flag=1;

else {

flag=0;

break;

}

if(flag==1)

return-1;

//进行到此处,说明存在<0的检验数

//找到最小的检验数,作为换入变量

for(i=0;i

if(min>cn[i]){

min=cn[i];

k=i;

}

}

return k;} int find_line(int a){

int i,k,j;

int flag=0;

float min;

k=a;

for(i=0;i

if(A[i][k]<=0)

flag=1;

else {

flag=0;

break;

}

if(flag==1){

printf(“n该线性规划无最优解!n”);

return-1;

}

for(i=0;i

if(A[i][k]>0)

seta[i]=b[i]/A[i][k];

else seta[i]=M;

}

min=M;

for(i=0;i

if(min>=seta[i]){

min=seta[i];

j=i;

}

}

num[j]=k+1;

CB[j]=C[k];

return j;} void exchange(int p,int q){

int i,j,c,l;

float temp1,temp2,temp3;

c=p;//行号,换出

l=q;//列号,换入

temp1=A[c][l];//A[c][l]主元

b[c]=b[c]/temp1;

for(j=0;j

A[c][j]=A[c][j]/temp1;//主元化为1

for(i=0;i

if(i!=c)

if(A[i][l]!=0){

temp2=A[i][l];

b[i]=b[i]-b[c]*temp2;

//主元所在列,其余元素化为0

for(j=0;j

A[i][j]=A[i][j]-A[c][j]*temp2;

}

}

temp3=cn[l];

for(i=0;i

cn[i]=cn[i]-A[c][i]*temp3;} void print(){

int i,j=0;

printf(“n------------n”);

for(i=0;i

printf(“%8.2ftX(%d)%8.2f ”,CB[i],num[i],b[i]);

for(j=0;j

printf(“%8.2f ”,A[i][j]);

printf(“n”);

}

printf(“n------------n”);

printf(“ttt”);

for(i=0;i

printf(“ %8.2f”,cn[i]);

printf(“n------------n”);} void shuru(){

int i,j;//循环变量

int k;

printf(“请输入线性规划问题的约束条件个数M:”);

scanf(“%d”,&m);

printf(“请输入线性规划问题的决策变量个数N:”);

scanf(“%d”,&n);

printf(“n请输入方程组的系数矩阵A(%d行%d列):n”,m,n);

for(i=0;i

for(j=0;j

scanf(“%f”,&A[i][j]);

printf(“n请输入初始基变量的数字代码矩阵:n”);

for(i=0;i

scanf(“%d”,&num[i]);

printf(“n请输入方程组右边的值矩阵b:n”);

for(i=0;i

scanf(“%f”,&b[i]);

printf(“n请输入目标函数各个变量的系数所构成的系数阵C:n”);

for(i=0;i

scanf(“%f”,&C[i]);

for(i=0;i

cn[i]=-C[i];

for(i=0;i

k=num[i]-1;

CB[i]=C[k];

}

}

第四篇:汉诺塔c语言程序代码

汉诺塔c语言程序代码(通过vc++6.0验证)(附讲解)让我们先看看代码吧 #include int hj(int a,int b, int c,int i){ int t;if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;t=b;b=c;c=t;hj(a,b,c,i-1);return 0;} } main(){ int a,b,c,i;a=1;b=2;c=3;printf(“请输入汉诺塔的盘数”);scanf(“%d”,&i);hj(a,b,c,i);return 0;}

以上是汉诺塔的代码,该程序主要是运用了递归的思想,比如数学中的f(x)=f(x-1)+f(x-2),在本程序中为:int hj(int a,int b, int c,int i){ int t;if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);也就是说,我们在这个函数中再次调用这个函数,相当于一个循环,而在再次调用的过程中,i的值变成i-1,就类似于f(x-1),这样层层调用,最终就变成当i=1的时候的值,然后通过运算,计算出想要得到的值。汉诺塔的数值分析:

我们可以发现,当只有一个盘的时候,我们只需要做1->3(就是把第一个柱子上的最顶端的盘移动到第三根柱子,以下不再解释)当有两个盘的时候,是1->2

1->3

2->3 三个盘子是:1->3

1->2

3->2

1->3

2->1

2->3 分析一下可以得出以下结论: 初始值a=1 b=2 c=3 一个盘子就是a->c 两个盘子与一个盘子的关系是:

第一步:b与c交换值,然后打印a->c 第二步:打印a->b 第三步:a与c交换值,b与c交换值,打印a->c 进一步分析,便可以得出以下结论 只要盘子数量为i(i大于1),那么它就有三部分 第一部分,b与c交换值,然后运行i-1 第二部分,打印a->b 第三部分,a与c交换值,b与c交换值,然后运行i-1 程序表示便是: if(i==1)

printf(“%d->%dn”,a,c);else {t=c;c=b;(交换值)

b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;(a c交换)

t=b;b=c;c=t;(b c交换)

hj(a,b,c,i-1);不明加QQ765233918(请写清备注)

1->3

第五篇:报告编写规范

项目报告撰写规范

1页边距设置

项目报告文页边距按以下标准设置:上边距(天头)为:30 mm;下边距(地脚)25mm;左边距和右边距为:25mm;装订线:10mm;页眉:16mm;页脚:15mm。2.页眉

页眉从摘要页开始到报告最后一页,均需设置。页眉内容:左对齐为“成都凯天电子股份有限公司”,右对齐为各章章名;打印字号为5号宋体,页眉之下有一条下划线。3.页脚

从报告主体部开始,用阿拉伯数字连续编页,页码位于每页页脚的中部。4.字体与间距

项目报告字体为小四号宋体,字间距设置为标准字间距,行间距设置为固定值20磅。5.封面设置

成都凯天电子股份有限公司(小二号黑体,居中)报告题名(二号黑体,居中)

报告提交(完成)时间(四号黑体,居中)6.正文设置

6.1报告各章应有序号,序号用阿拉伯数字编码,层次格式为: 1××××(三号黑体,居中)

××××××××××××××××××××××(内容用小四号宋体)。1.1××××(小三号黑体,居左)

×××××××××××××××××××××(内容用小四号宋体)。1.1.1××××(四号黑体,居左)

××××××××××××××××××××(内容用小四号宋体)。

①××××(用与内容同样大小的宋体)

1)××××(用与内容同样大小的宋体)

a.××××(用与内容同样大小的宋体)

6.2报告中的图、表、公式、算式等,一律用阿拉伯数字分别依序连续编排序号。序号分章依序编码,其标注形式应便于互相区别,可分别为:图2.1、表3.2,式(3.5)等 每一图应有简短确切的题名,连同图号置于图下。中文宋体五号。6.3曲线图的纵横坐标必须标注“量、标准规定符号、单位”。此三者只有在不必要标明(如无量钢等)的情况下方可省略。坐标上标注的量的符号和缩略词必须与正文中一致。6.4照片图要求主题和主要显示部分的轮廓鲜明,便于制版,如用放大缩小的复制品,必须清晰,反差适中。照片上应该有表示目的物尺寸的标度。

下载C语言 程序代码编写规范word格式文档
下载C语言 程序代码编写规范.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    教案编写规范

    XXX学院教案编写规范及要求 教案是教师组织教学的必备教学文件。为进一步规范课程教学,提高教学水平和质量,确保专业人才培养目标的实现,学院要求教师上课(所有的理论课和实验、......

    规范教案编写格式

    (武汉工程大学教师教案规范格式) 《绿色建筑材料》课程教案 课程名称绿色建筑材料/Green Construction Materials 学 时 数 32 本章名称 1-2章 学 时 数 4 授课对象 14级无......

    教案编写规范(汇编)

    郑州爱婴技术学校教案编写规范 教案是教师组织教学必备的教学文件,是教学大纲具体细化后再经过精心设计的授课框架,是教师为实施课堂教学而形成的以课为单位的具体行动计划或......

    教案编写规范

    教案编写规范及要求 教案是教师组织教学的必备教学文件,是教师授课的重要依据,是保证教学质量、提高课堂教学效果的基本保障。为规范教学行为,加强教学管理,特制定本规范。 一、......

    年鉴编写规范

    年鉴编写规范 一、选题。 坚持“重事业、轻部门”、“重事件、轻个人”、“重实践活动、轻礼仪活动”的原则,面向教育教学改革第一线,重点记述教育教学改革实践活动,突出办学特......

    教案编写规范

    教案编写规范 教案是教师依据教学大纲的要求和教材内容,结合个人教学实践和学生实际设计、编写的授课实施方案,教案即课时教学计划,是教师授课的依据之一,教案质量的好坏直接关......

    教案编写规范

    授课教案编写规范 授课教案编写规范 一、教案的内涵 教案是指教师为组织教学而编制的教学实施方案。编写教案应以课程的教学大纲为依据,根据每门课程的内容和特点以及学生基......

    教材编写规范

    教材编写规范 一、总体要求 1.教材的内容要突出学科特色、体现科技成就、反映研究成果,力求具有“新、特、深、精”的特点。同时要涵盖本门学科的主要内容,教材的深度和广度要......