C语言教程03:C语言程序结构
一个 C 语言程序由一个固定名称为 main 的主函数和若干个其他函数(可没有)组成。下面通 过几个例题,总结出 C 语言程序的结构特点。在 Dev C++环境下编写的第一个 C 语言如下。
例1-1 在屏幕上输出 Hello World !
#include<stdio.h> /*编译预处理命令文件包含*/ int main() /*主函数*/ { printf("Hello World!\n"); /*在屏幕上输出语句*/ return 0; /*主函数正常运行完毕,则返回 0*/ }
1 文件包含
文件包含的格式:
#include <stdio.h>
C 语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由 程序员做成各种程序模块,存放在各种头文件(.h)中。
文件包含的作用是根据需要把相应的某个头文件的内容在编译时先整体嵌入所编写的程序 中。用户也可以将自己设计的程序模块等做成头文件,供其他程序包含。使用文件包含功能的 优点是提高程序设计效率和程序可靠性,减少程序员重复劳动量。
Turbo C 提供了 300 多个标准库函数,存放在若干个头文件中。常用的函数如下。
stdio.h: 标准输入/输出函数。
math.h: 数学函数。
stdlib.h: 常用函数。
2 主函数 Main
主函数的一般形式:
int main() { 数据定义(变量说明语句); /*数据结构*/ 数据处理(执行语句); /*算法*/ }
说明:
C 语言是一种函数式语言,C 程序的基本组成是函数。一个函数实际上就是一个功能 模块。
一个 C 程序是由一个固定名称为 main 的主函数和若干个其他函数(可没有)组成。
一个 C 程序必须有一个也只能有一个 main 主函数。
主函数在程序中的位置可以任意,但程序执行时总是从主函数开始,在主函数内结束。
主函数可以调用其他各种函数(包括用户自定义函数),但其他函数不能调用主函数。
3 注释语句
编写程序时为了使代码易读和注解,通常会在实现功能的同时为代码增加注释。它在编译和运行时会被编译器忽略掉。
C语言的注释分为两种类型:单行注释和多行注释
(1) 单行注释格式: //注释内容
说明:符号“//”后面为被注释的内容。 例如:
int c=10; //定义一个整型变量
(2) 多行注释格式: /*注释内容*/
说明:以符号“/*”开头,以符号“*/”结尾。 例如:
/* int c=10; int x=5; */
注释可以出现在一行的最右侧,也可以单独成为一行,如果需要,程序中的任意一行都可以加注释。
例1-2 输入两个整数,求两个整数的和
#includeint <stdio.h> main() { int a,b,c; /* 变量声明,定义整型变量 a、b、c */ scanf("%d,%d",&a,&b); /* 输入语句,输入两个整数分别赋值给 a 和 b */ c=a+b; /* 计算变量 a 和 b 的和并赋值给变量c */ printf("c=%d\n",c); /* 输出结果 */ return 0; }
4 数据类型定义语句
数据类型定义语句格式:
变量类型关键字 变量名;
例如:
int a,b,c; //定义a,b,c为整型变量 float f,g; //定义f,g为单精度实型变量
注意: 在 C 语言程序中,所有变量都要先定义后使用,否则就会出现编译错误提示。
Error : Underfined symbol 'a' in funcation main
5 赋值语句
赋值语句格式:
变量名=常量或表达式;
作用: 使变量获得具体的运算值。
r =3.0; /*把 3.0 赋值给变量 r. */ c=a+b; /*将 a 与 b 相加后的和赋值给 c */
例如:
变量赋初值也可在数据类型定义时进行,例如:
float r =3.0;
6 输出语句
输出语句格式:
printf( 格式控制字符串, 输出列表 );
作用:普通字符在输出时按原样输出,转义字符则输出它所代表的字符。
例如:
printf("Hello,World!\n"); /* 引号中的字符原样输出 */
其中,\n 是转义字符,代表换行符,即表示回车光标移到下一行开头处。
输出格式控制符以%开始,后面跟格式字符,用于以指定的格式输出数据。如例子中
printf("c=%d\n",c);
输出结果是 c=3,其中格式控制符%d 表示输出十进制整数,此处代替整型变量 c 的值。 以下是常用格式控制符。
字符型: %c 表示单字符; %s 表示字符串。
数值型: %d 表示整数(十进制); %f 表示实数(小数形式,默认为 6 位小数)。
7 输入语句
输入语句格式:
scanf( 格式控制字符串,输入项地址列表 );
作用:以格式控制字符串指定的格式输入数据,并存入地址列表所对应的内存中。
例如:
scanf("%d,%d",&a,&b);
其中,&是地址运算符,用于获取变量在内存中的地址。
注意:
(1) 若格式控制字符串间用逗号隔开,如"%d,%d",则输入的两个数用逗号隔开,如1,2。
(2) 若格式控制字符串间用空格隔开,如"%d %d",或者没有隔开,如"%d%d",则输入的 两个数都用空格或者回车隔开。
例如:
1 2
或者
1 2
例1-3 给定圆的半径为5.0mm,求圆的周长。
#define PI 3.14159 /* 编译预处理——宏替换 */ #include<stdio.h> /* 编译预处理——文件包含 */ int main() /* 主函数 */ { float r,s; /* 定义变量 r、s 类型为单精度实型 */ r=5.0; /* 变量 r 赋初值 */ c=2*PI*r; /* 计算圆周长 c */ printf("r=%.2f,c=%.2f\n",r,c); /* 输出结果 */ return 0; }
8 宏定义
宏定义格式:
#define 标识符 文本
其中,标识符就是所谓的符号常量,也称为宏名。例如:
#define PI 3.14159
其中,PI 为符号常量,即宏名,最好用大写,以区别一般变量。3.14159 为宏体,宏体也 可以是一个表达式。
作用: 用简单符号代表宏体部分内容(编译时会先自动替换)。
意义: 直观,可多次使用,便于修改。
注意:
#define 可出现在程序的任意位置,其作用范围为由此行到程序末尾。
宏定义不是 C 语句,不必在行末加分号,否则会连分号一起置换。
9 条件选择语句
例 1-3 中的程序有两处不足:
(1) 如果要求多个半径r值时的周长c,每次都必须修改源程序并重新编译处理。
(2) 如果半径 r 为负值,也会有正常的 c 值输出。 为此,可将程序进行如下修改。
(1) 增加键盘输入函数。 用户在交互键盘输入函数的格式:
scanf("%f",&r); /* &r 变量 r 的存储单元地址*/
功能:将键盘输入的值存放到变量 r 所对应的存储单元中。scanf()函数通常与 printf()函数 组合使用,实现“人机交互对话”功能。
(2) 增加if条件判断if(r>=0)。
条件选择语句格式:
if (条件表达式)语句或{复合语句};
功能:如果条件表达式的值为真,就执行指定语句或复合语句。
扩展形式:
if ... else 语句;
或
if (条件表达式) 语句或复合语句; else 语句或复合语句;
注意: 条件表达式必须用()括起,且不能跟分号。关于 if 语句的详细讲解见后面章节。
例 1-3 修改后的程序为:
# define PI 3.14159 # include <stdio.h> int main() { float r; printf("请输入半径 r:"); scanf("%f",&r); if(r>=0) printf("r=%.2f,s=%.2f\n",r,2*PI*r); else printf("半径不能为负数!"); return 0; }
例1-4 修改程序为
#include <stdio.h> int main() { int a,b,c; int add(int x, int y); /*函数声明,声明本函数要调用的 add 函数*/ scanf("%d, %d", &a, &b); /*输入变量 a 和 b 的值*/ c=add(a, b); /*调用 add 函数,将函数的返回值赋给 c*/ printf("c=%d", c); /*输出 c 的值*/ } int add(int x,int y) /*定义函数值为整型,形式参数 x、y 为整型的 add 函数*/ { int z; /*add 函数中的声明部分,定义本函数中用到的整型变量 z*/ z=x+y; return(z); /*返回 z 的值到该函数被调用处*/ }
10 函数及函数的调用
C语言是一种函数式语言,其程序的基本组成是函数。主要包括库函数和用户自定义函数。
库函数是由 C 语言编译系统提供的,可以直接使用,比如 printf、scanf 函数等;而用户自定义 函数是依照问题需要由用户自己编写的。
例 1-4 是由主函数 main 和用户自定义的函数 add 组成,main 函数是主调函数,add 函数是 被调函数。add 函数的作用是求两个变量的和,并返回求和结果,return 语句将 z 的值返回主调 函数 main 中调用 add 函数的位置并赋值给 c。程序第 4 行是对被调用函数 add 的声明,为了使 编译系统能够正确识别和调用 add 函数,必须在调用 add 函数之前对 add 函数进行声明。
有关函数声明将在后面课程进一步介绍。
C语言特点概括
(1) C 语言是一种函数式语言,其程序基本组成是函数。
(2) 每个C程序必须有一个也只能有一个主函数 main()。
(3) 不管主函数在程序中的位置如何,程序执行总是从主函数开始。
(4) 所有变量必须先定义后使用。
(5) 每个语句必须用分号(;)结束(注意是“每个语句”而不是“每行语句”)。
(6) 编译预处理命令不是语句(行末不能用分号结束)。
(7) C语言本身没有输入/输出语句,其功能须通过调用相关函数来实现。
(8) 使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用“文件包含” #include 。
版权声明:本文为原创文章,版权归donstudio所有,欢迎分享本文,转载请保留出处!