开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《C语言课程设计》一2.2 程序排版和注释

简介: 本节书摘来自华章出版社《C语言课程设计》一书中的第2章,第2.2节,作者 刘博 董学文,更多章节内容可以访问云栖社区“华章计算机”公众号查看
+关注继续查看

2.2 程序排版和注释

程序排版和注释非程序功能的组成部分,但清晰、美观的排版和准确、简洁的注释均可增强程序的可读性。

2.2.1 缩进与对齐

缩进可以体现语句块的层次关系。一般采用4个空格或1个Tab字符缩进。若采用Tab字符缩进,可将编辑器Tab字符宽度设置为4。不要在代码中混合使用Tab字符和空格来进行代码缩进。

2.2.2 空行

使用空行的目的在于分隔程序段落,使程序布局更加清晰。每个函数定义之后应加空行。函数体内一组变量定义之后应加空行,函数体内一段逻辑相对独立的代码之后应加空行。

2.2.3 代码行

一行代码只做一件事会使程序易于阅读和注释。如果可能,则应在定义变量的同时初始化。
if、for、do、while、switch等语句应单独成行,其执行语句部分应另起一行,并且即使执行语句只有一行也应用花括号括起来。例如:

if ((tmp = fopen("tmp.txt", "w")) == NULL) {
    printf("Can’t create tmp.txt file\n");
}

长句(大于80个字符)应拆行,拆分出的新行要进行适当的缩进,使排版整齐,语句易读。例如:

struct key keyTable[] = {
    "auto", 0, 
    "break", 0,
    "case", 0, "char", 0, "const", 0, "continue", 0, 
    "default", 0, "do", 0, "double", 0,
    "else", 0, "enum", 0, "extern", 0,
    ......
};

fprintf(fp, "%s %c %s %s\n", (p->data).name, (p->data).sex, 
                   (p->data).tel, (p->data).email);

printf("This is such a long sentence that "
        "it cannot be held within a line\n");

2.2.4 空格

一元运算符前后不要空格,二元运算符两侧应有一个空格。例如:

i++;
i = i + 1;

操作符‘[]’,‘→’,‘.’前后不要空格。例如:

strcpy((n->data).name, buffer.name);

关键字if、for、do、while、switch等与其后的控制表达式的左括号‘(’之间应有一个空格,但左括号‘(’的右边及右括号‘)’的左边不要空格。当if、for、while、switch等语句采用紧凑型写法时,右括号‘)’与左花括号‘{’之间应有一个空格。for语句分号‘;’后应有一个空格。例如:

for (i = 0; i < c; i++) {
    if (strcmp(r[i].email, e) == 0) {
        return i;
    }
}

函数参数个数大于1时,每个逗号‘,’后面应有空格。函数名与紧跟的左括号‘(’之间不要空格。例如:

int MyStrncmp(const char *s1, const char *s2, int len);

2.2.5 对齐

语句if、for、do、while、switch等有“紧凑型”和“清晰型”两种对齐风格,应保持风格一致,不要混合使用。例如:

/* 紧凑型 */
if (argc < 2) { 
    int i;
    ......
} 

/* 清晰性 */
if (argc < 2) 
{ 
     int i;
    ......
}

定义函数时,左花括号另起且独占一行,并与函数对齐。{ }之内的代码块在‘{’右侧4个空格或Tab字符处左对齐。例如:

int MyStrlen(const char *s)
{
    int length = 0;
    ......
}

2.2.6 间接访问操作符‘*’

操作符‘’靠近数据类型时,语义直观,但容易造成误解,操作符‘’靠近变量名可避免误解。例如:
int x, y; / 操作符靠近数据类型,y容易被误解为指针变量 /
int x, y; / 操作符靠近变量名,y不会被误解为指针变量 /

2.2.7 注释

注释有助于程序的阅读,注释语言必须准确、简洁。注释主要说明代码“能做什么”,而非“怎样做”,“怎样做”由代码本身说明。
函数、变量、常量等标识符的命名应尽量体现其含义,以减少不必要的注释。
应边写代码边注释,修改代码的同时修改注释。

  1. 文件注释
    文件注释位于头文件和定义文件的开头,内容可包括版权信息、文件名称、文件描述、当前版本号、作者、修改者、完成日期等。本书中的示例文件注释仅列出了文件名、文件描述和作者。例如:
/*
 * 文件名: keyword.c 
 * 描述: 统计C程序中的关键字
 * 作者: 刘博 
 */
  1. 函数注释
    函数注释内容可包括函数功能、输入参数、输出参数、返回值等,写在函数定义之上,与函数定义之间不留空行。例如(本书中的示例函数注释仅列出了函数功能):

*
 * 函数功能: 计算字符串s的长度
 * 输入参数: 字符串s           
 * 输出参数: 无 
 * 返回值: 字符串长度 
*/
int MyStrlen(const char *s)
{
......
}
  1. 代码行注释
    注释应与被描述的代码相邻,可以放置于代码的上方或右方。函数、变量、常量等标识符的命名若无法充分体现其含义,应进行注释。代码块行数较多或者逻辑较复杂时,应在段落结束处进行注释。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C语言及程序设计提高例程-21 首尝排序——冒个泡
贺老师教学链接  C语言及程序设计提高 本课讲解 冒泡排序源程序 #include <stdio.h> #define n 10 int main( ) { int i,j,t,a[10]= {3,5,9,11,33,6,-9,-76,100,123}; for (i=0; i<n-1; i++) for(j=0; j<=n-i-1;
963 0
C语言及程序设计提高例程-20 经典:查找的艺术
贺老师教学链接  C语言及程序设计提高 本课讲解 数组中的基本操作:顺序查找元素 #include &lt;stdio.h&gt; #define SIZE 10 int main( ) { int d[SIZE]={34, 43, 98, 72, 12, 47, 31, 43, 1, 78}; int i,key,index=-1; printf("Input a
863 0
C语言及程序设计提高例程-19 越界的后果
贺老师教学链接  C语言及程序设计提高 本课讲解 讨论:越界的后果 #include &lt;stdio.h&gt; int main() { int x, i, n ; int a[100]; //a[10]会如何? scanf("%d", &amp;x); //x是要转换的数 i=0; while(x) { a[i]
956 0
C语言及程序设计提高例程-18 一维数组应用二三例
贺老师教学链接  C语言及程序设计提高 本课讲解 应用1: 利用数组求Fibonacci数列的前20项 #include <stdio.h> int main( ) { int i; int f[20]= {1,1}; for(i=2; i<20; i++) f[i]=f[i-2]+f[i-1]; for(i=0; i<
924 0
《C语言及程序设计》实践项目——算术运算符与算术表达式
返回:贺老师课程教学链接  C语言及程序设计初步   【项目1-分离各位数】写一个程序,输入x(三位数),输出其个、十、百位数,用空格隔开样例输入:768样例输出:8 6 7[参考解答]【项目2-分离整数和小数部分】编写一个程序,其功能为:从键盘上输入一个浮点数(小数点后有三位数),然后分别输出该数的整数部分和小数部分。样例输入:123.456样例输出:123 456[参考解答]【项目3-如
1173 0
《C语言及程序设计》实践参考——分离整数和小数部分
返回:贺老师课程教学链接  C语言及程序设计初步  项目要求 要求:编写一个程序,其功能为:从键盘上输入一个浮点数(小数点后有三位数),然后分别输出该数的整数部分和小数部分。样例输入:123.456样例输出:123 456 [参考解答] #include &lt;stdio.h&gt; int main() { float x; int a, b; scanf("%
1378 0
《C语言及程序设计》实践参考——发工资
返回:贺老师课程教学链接  C语言及程序设计初步  项目要求 【项目3-发工资】某公司工资按周发放,标准是每小时制20元,若员工周工作时间超过40小时,超出部分每小时30元。编程序输入一名员工一周的工作小时数,输出他的周工资。样例输入之一:32样例输出之一:640样例输入之二:48样例输出之二:1040 参考解答: #include <stdio.h> int main(
741 0
《C语言及程序设计》实践项目——使用变量
返回:贺老师课程教学链接  C语言及程序设计初步   【修改程序】下面的程序要求两个并联电阻阻值。程序中存在语法错误,请修改程序,使之能正确求解问题。#include &lt;stdio.h&gt; int main( ) { float r1, r2; printf("输入要并联的两个电阻值:"); scanf("%f %f", &amp;r1, &amp;r2);
887 0
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
用RxSwift写易维护易读的愉悦代码
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载