下面了解一下C程序的基本结构。程序由一个或多个函数组成,必须有mian( )函数。 函数由函数头和函数体组成。 函数头包括函数名、传入该函数的信息类型和函数的返回类型。通过函数名后的圆括号()可识别出函数,圆括号里可能为空,可能有参数。函数体被花括号括起来。由一系列语句、声明组成。 例:
函数头
int main(vioid)函数体
( int a; //声明 a = 1; //语句 printf("%d is champion.\n",a); //语句 return 0; )简而言之,一个简单的C程序的格式如下:
#include <stdio.h> int main(void) { 语句 return 0; }(大部分语句都以分号结尾。)
选择有意义的函数名和注释。注意,使用这两种技巧时应相得益彰,避免重复啰嗦。 例如:如果变量名是height、width,就不必写注释说明该变量表示高度和宽度;但是如果变量名是video_routine_7,就要解释一下该变量名的含义。(此处变量的概念下节内容会写到)
在函数中用空行分隔概念上的多个部分。 如上节内容中的这个程序,用空行把声明部分和程序其他部分区分开来。
#include<stdio.h> int main(void) { int num; num = 1; printf("I am a simple"); printf("computer.\n"); pientf("My favorite number is %d because it is first.\n",num); return 0; }C语言并未规定一定要使用空行,但是多使用空行能提高程序的可读性。
每条语句各占一行。同理,这并不是C语言的要求,C语言的格式比较自由,可以把多条语句放在一行,也可以每条语句独占一行。如下面这个语句,没有问题,但是不好看: #include<stdio.h> int main(void) { int a; a = 5; printf ( "%d\n", a); return 0; }分号会告诉编译器一条语句哪里结束、下一条语句在哪里开始。如按上节内容提到的程序示例来编写代码,程序的逻辑会更清晰。
⑴把所有变量放在一处,方便查找和理解程序的用途; ⑵声明变量会促使你在编写程序之前做一些计划; ⑶声明变量有助于发现隐藏在程序中的小错误; 如变量名拼写错误 ⑷如果事先未声明变量,C程序将无法通过编译。
现在,你可以试着写一个简单的程序,但是可能会犯一些简单的错误。程序的错误通常叫做bug,找出并修改错误的过程叫做调试(debug)。以下是一个错误程序:
#include<stdio.h> int main(void) ( int n, int n2, int n3; n = 5; n2 = n * n; n3 = n2 *n2; printf("n = %d,n squared = %d,n cubed = %d\n", n, n2, n3); return 0; )试修改上述错误程序
语法错误 ⑴main( )函数体应使用{ } ⑵变量声明应这样写:
int n, n2, n3;或者,这样写:
int n; int n2; int n3;编译器会提示错误,但也有出错的时候,也许某处隐藏的语法会导致编译器误判。 若编译器报错某行缺少分号,请检查上一行。
语义错误 语义错误是指意思上的错误。
n3 = n2 * n2;此处,n3表示n的3次方,但是代码中的n3被设置成n的4次方(n2 = n * n) 编译器无法检测语义错误,因为这类错误并未违反C语言的规则。编译器无法了解你的真正意图,所以你只能自己找出错误。以下为修正了程序的语法错误:
#include<stdio.h> int main(void) { int n, n2, n3; n = ; n2 = n * n; n3 = n2 * n2; printf("n = %d,n squared = %d,n cubed = %d\n", n, n2, n3); return 0; }该程序的输出如下:
n = 5, n squared = 25; n cubed = 625检查的过程可能比较麻烦,但是用这种一步一步来查看程序的执行情况,通常是发现程序问题的关键。
