• 1. C语言编程规范 Debugging by VC++ 吴老师 信息与通信工程学院 湖南理工学院 10/22/2018
• 2. 我看到的程序#include #include #define i "i" int main() { int a,b,c;double x1,x2,x3,x4,x; scanf("%d %d %d",&a,&b,&c); if(a==0&&b==0) { printf("Input error!\n");} else if(a==0) { x=(float)(-c)/(float)b; printf("x=%.6f\n",x); } else { if((b*b-4*a*c)>=0) { x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); if(x1==x2) { printf("x1=x2=%.6f\n",x1,x2);} else { printf("x1=%.6f\nx2=%.6f\n",x1,x2); } } else { x1=-(float)b/(2*(float)a); x2=-(float)b/(2*(float)a); x3=sqrt(-b*b+4*a*c)/(2*a); x4=-sqrt(-b*b+4*a*c)/(2*a); if(x1==0.000000) { if(x1==x2&&x3==x4) {printf("x1=x2=%.6f""i",x3,x4);} else { printf("x1=%.6f""i\n" "x2=%.6f""i\n",x3,x4); } } else { if(x1==x2&&x3==x4) { printf("x1=x2=%.6f""+""%.6f""i",x1,x2,x3,x4);} else { printf("x1=%.6f""+""%.6f""i\n" "x2=%.6f""%.6f""i\n",x1,x3,x2,x4); } } } } }2
• 3. 我看到的程序#include #include main() { int a,b,c,d,k,m,x1,x2;unsigned i;char ch,ch1,ch2; scanf("%d%c%d %c %d%c%d",&a,&ch1,&b,&ch,&c,&ch2,&d); k=b*d,x1=a*d,x2=b*c; if (ch=='+') {m=x1+x2; for (i=m;i>1;i--) {if (m%i==0 && k%i==0) {m=m/i;k=k/i;break;}} if (m==0) {printf("%d/%d %c %d/%d = 0\n",a,b,ch,c,d);} else if (k==1) {printf("%d/%d %c %d/%d = %d\n",a,b,ch,c,d,m);} else printf("%d/%d %c %d/%d = %d/%d\n",a,b,ch,c,d,m,k);} if (ch=='-') {m=x1-x2; for (i=abs(m);i>1;i--) {if (m%i==0 && k%i==0) {m=m/i;k=k/i;break;}} if (m==0) {printf("%d/%d %c %d/%d = 0\n",a,b,ch,c,d);} else if (k==1) {printf("%d/%d %c %d/%d = %d\n",a,b,ch,c,d,m);} else printf("%d/%d %c %d/%d = %d/%d\n",a,b,ch,c,d,m,k);} if (ch=='*') {m=a*c; for (i=m;i>1;i--) {if (m%i==0 && k%i==0) {m=m/i;k=k/i;break;}} if (m==0) {printf("%d/%d %c %d/%d = 0\n",a,b,ch,c,d);} else if (k==1) {printf("%d/%d %c %d/%d = %d\n",a,b,ch,c,d,m);} else printf("%d/%d %c %d/%d = %d/%d\n",a,b,ch,c,d,m,k);} if (ch=='/') {m=a*d;k=b*c; for (i=(unsigned)m;i>1;i--) {if (m%i==0 && k%i==0) {m=m/i;k=k/i;break;}} if (m==0) {printf("%d/%d %c %d/%d = 0\n",a,b,ch,c,d);} else if (k==1) {printf("%d/%d %c %d/%d = %d\n",a,b,ch,c,d,m);} else printf("%d/%d %c %d/%d = %d/%d\n",a,b,ch,c,d,m,k);} }3
• 4. 我看到的程序#include"stdio.h"   main()   {int s,n,i;    s=1;    scanf("%d",&n);   if(n==1)   printf("The monkey got 1 peach in first day.\n");   else {i=n-1;    while(i>0)   {s=(s+i)*2;    i--;}    printf("The monkey got %d peachs in first day.\n",s);   }   }  4
• 5. C语言程序代码编写规范 一个好的程序编写规范是编写高质量程序的保证。 清晰、规范的源程序不仅仅是方便阅读，更重要的是能够便于检查错误，提高调试效率，从而最终保证软件的质量和可维护性。5
• 6. C语言程序代码编写规范1 代码书写规范 1.1 函数定义 每个函数的定义和说明应该从第1列开始书写。函数名（包括参数表）和函数体的花括号（“{”和“}”）应该各占一行。 在函数体结尾的括号（“}”）后面应该加上注释，注释中应该包括函数名，这样比较方便进行括号配对检查，也可以清晰地看出来函数是否结束。 范例1：函数的声明 void matMyFunction(int n) { …… } /* matMyFunction*/6
• 7. C语言 程序代码编写规范1.2 空格的使用 使用空格分割所有演算符号和操作数。 这条规则的例外是“->”,““.”, “()”和“[]”，这些操作符和操作数之间不空格。 当需要把一个程序行的内容分成几行写时，操作符号应该放在行末，而不是下一行的开头。 1.3 缩进的设置 代码书写应该遵从结构化的要求，采用缩进的格式。最小缩进量为4个空格，整个文件内部应该统一，不要混用Tab键和4个空格这两种情况，因为不同的编辑器对Tab键的处理方法不同。7
• 8. C语言 程序代码编写规范1.4 折行的使用 每行的长度不要超过80个字符，当程序行太长时，应该分行书写。 分行时应该按照自然的逻辑关系进行，例如：不要把一个简单的逻辑判断写在两行上。 分行后的缩进应该按照程序的逻辑关系进行对齐。例如：参数表折行后，下面的行应该在参数表左括号的下方。8
• 9. C语言 程序代码编写规范范例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); }9
• 10. C语言 程序代码编写规范1.5 嵌套语句（语句块）的格式 对于嵌套式的语句----即语句块（如，if、while、switch等）应该包括在花括号中。 花括号的左括号应该单独占一行，并与关键字对齐。建议即使语句块中只有一条语句，也应该使用花括号包括，这样可以使程序结构更清晰，也可以避免出错。 建议对比较长的块，在末尾的花括号后加上注释以表明该语言块结束。10
• 11. C语言 程序代码编写规范范例3：嵌套语句格式 if (value < max) { if (value != 0) { func(value); } } else { error("The value is too big."); } /* if (value < max) */11
• 12. C语言 程序代码编写规范范例3：嵌套语句格式----另一种风格 if (value < max) { if (value != 0) { func(value); } } else { error("The value is too big."); } /* if (value < max) */12
• 13. C语言 程序代码编写规范2 注释书写规范 注释必须做到清晰，准确地描述内容。对于程序中复杂的部分必须有注释加以说明。注释量要适中，过多或过少都易导致阅读困难。13
• 14. C语言 程序代码编写规范2.1注释风格 C语言中使用一组（/* … */）作为注释界定符。 注释内容尽量用英语方式表述。 注释的基本样式参考范例4。 注释应该出现在要说明的内容之前，而不应该出现在其后。 除了说明变量的用途和语言块末尾使用的注释，尽量不使用行末的注释方式。14
• 15. C语言 程序代码编写规范范例4：几种注释样式 /* * ************************************************ * 强调注释 * ************************************************ */ /* * 块注释 */ /* 单行注释 */ int i; //行末注释15
• 16. C语言 程序代码编写规范2.2 何时需要注释 如果变量的名字不能完全说明其用途，应该使用注释加以说明。 如果为了提高性能而使某些代码变得难懂，应该使用注释加以说明。 对于一个比较长的程序段落，应该加注释予以说明。如果设计文档中有流程图，则程序中对应的位置应该加注释予以说明。 如果程序中使用了某个复杂的算法，建议注明其出处。 如果在调试中发现某段落容易出现错误，应该注明。16
• 17. C语言 程序代码编写规范3 命名规范 3.1 常量、变量命名 用#define定义的符号常量全部采用大写。 变量命名的基本原则： 可以选择有意义的英文（小写字母）组成变量名，使人看到该变量就能大致清楚其含义。 不要使用人名、地名和汉语拼音。 如果使用缩写，应该使用那些约定俗成的，而不是自己编造的。 多个单词组成的变量名，每个单词的首字母应该大写。如：dwUserInputValue。17
• 18. C语言 程序代码编写规范3.2 函数命名 函数命名原则与变量命名原则基本相同。对于初学者，函数命名可以采用“FunctionName”的形式。18