目录 目录 第一章c程序基础 1.1C语言程序的基本结构 1.1.1认识C语言程序 1.1.2C语言程序的基本结构 1.1.3C语言的表达式和语句 12C程序运行过程 12.1源程序、目标程序和可执行程序的概念 11 122C程序上机步骤 12 3编写简单的C语言程序 14C语言基本语法成分 1.5C语言数据类型 1.5.1整型数据 1.52实型数据 1.5.3字符型数据 21 1.6数据的输入与输出 22 1.6.1pinf()函数 162 scanf()函数 1.7算法 1.7.1算法的概念及特性 1.7.2算法的表示方法 18C语言的产生、发展及特点 18.1C语言的产生及发展 182C语言的特点 习题 第二章程序基本结构 21分支结构 2.1.1单分支结构 2.1.2双分支结构 21.3多分支结构 2.14if语句的嵌套 2.1.5条件运算符 42 2.1.6 switch语句
1 目 录 目 录..................................................................................................1 第一章 C 程序基础...................................................................................6 1.1 C 语言程序的基本结构..............................................................6 1.1.1 认识 C 语言程序................................................................6 1.1.2 C 语言程序的基本结构.......................................................8 1.1.3 C 语言的表达式和语句.....................................................10 1.2 C 程序运行过程....................................................................... 11 1.2.1 源程序、目标程序和可执行程序的概念........................... 11 1.2.2 C 程序上机步骤................................................................12 1.3 编写简单的 C 语言程序...........................................................13 1.4 C 语言基本语法成分................................................................16 1.5 C 语言数据类型.......................................................................18 1.5.1 整型数据.........................................................................19 1.5.2 实型数据.........................................................................20 1.5.3 字符型数据.....................................................................21 1.6 数据的输入与输出...................................................................22 1.6.1 printf()函数..................................................................23 1.6.2 scanf()函数..................................................................25 1.7 算法........................................................................................27 1.7.1 算法的概念及特性...........................................................27 1.7.2 算法的表示方法..............................................................28 1.8 C 语言的产生、发展及特点.....................................................30 1.8.1 C 语言的产生及发展.........................................................30 1.8.2 C 语言的特点...................................................................31 习题 一...................................................................................33 第二章 程序基本结构 ............................................................................36 2.1 分支结构..................................................................................36 2.1.1 单分支结构.....................................................................36 2.1.2 双分支结构.....................................................................37 2.1.3 多分支结构.....................................................................38 2.1.4 if 语句的嵌套...................................................................40 2.1.5 条件运算符.....................................................................42 2.1.6 switch 语句.......................................................................43
2.2关系运算和逻辑运算 47 23循环结构 2.3.1概述 2.3.2当型循环 while 2.3.3直到型循环 do-while 2.3.4当型循环for 23.5几种循环的比较 24 break和 continue语句 24. I break语句 242 continue语句 25goo语句 2.6经典算法举例 习题二 第三章模块化程序设计 3.1模块化程序设计的方法与特点 .73 3.2函数的定义 3.3无返回值函数的定义与调用 3.4有返回值函数的定义与调用 3.5函数嵌套调用和函数声明 3.6函数的递归调用 3.7库函数的使用 3.8全局变量和局部变量 39指针和指针作为函数参数 3.10返回指针值的函数 3.l函数的指针 105 3.12典型例题 第四章简单构造数据类型 4.1一维数组的引出及使用 4.1.1一维数组的引出 4.1.2一维数组特点及其引用 42二维数组的引出及使用 4.2.1二维数组的引出 42.2二维数组特点及其引用 124 42.3数组程序举例 4.3字符数组 43.1字符数组的引出 43.2字符数组的定义和使用 132
2 2.2 关系运算和逻辑运算.................................................................47 2.3 循环结构..................................................................................49 2.3.1 概述................................................................................49 2.3.2 当型循环 while ................................................................51 2.3.3 直到型循环 do-while........................................................52 2.3.4 当型循环 for....................................................................55 2.3.5 几种循环的比较..............................................................57 2.4 break 和 continue 语句................................................................59 2.4.1 break 语句........................................................................59 2.4.2 continue 语句....................................................................61 2.5 goto 语句...................................................................................62 2.6 经典算法举例...........................................................................63 习题二............................................................................................70 第三章 模块化程序设计.......................................................................73 3.1 模块化程序设计的方法与特点...................................................73 3.2 函数的定义................................................................................74 3.3 无返回值函数的定义与调用.......................................................76 3.4 有返回值函数的定义与调用.......................................................80 3.5 函数嵌套调用和函数声明...........................................................86 3.6 函数的递归调用.........................................................................88 3.7 库函数的使用............................................................................89 3.8 全局变量和局部变量..................................................................93 3.9 指针和指针作为函数参数...........................................................98 3.10 返回指针值的函数.................................................................. 102 3.11 函数的指针............................................................................ 105 3.12 典型例题................................................................................ 108 习 题 三....................................................................................... 114 第四章 简单构造数据类型................................................................... 118 4.1 一维数组的引出及使用........................................................... 118 4.1.1 一维数组的引出............................................................. 118 4.1.2 一维数组特点及其引用................................................... 120 4.2 二维数组的引出及使用........................................................... 122 4.2.1 二维数组的引出............................................................. 122 4.2.2 二维数组特点及其引用.................................................. 124 4.2.3 数组程序举例................................................................. 125 4.3 字符数组................................................................................. 130 4.3.1 字符数组的引出............................................................. 130 4.3.2 字符数组的定义和使用.................................................. 132
4.3.3字符串的定义及使用 133 434字符数组程序举例 44数组与函数 140 44.1数组元素作为函数参数 442数组名作为函数参数 44.3多维数组作为函数参数 45数组与指针 145 4.5.1一维数组与指针 145 4.5.2多维数组与指针 453用数组名作函数参数 46字符串与指针 46.1字符串的指针和指针变量 462用字符串指针访问字符串 46.3字符指针和字符数组的区别 46.4字符串指针作函数参数 555 4.7典型例题 *48链表 4.8.1概述… 170 4.82简单链表 4.8.3动态链表 484输出链表链表结构的实现和使用 习题四 第5章复杂构造数据类型 5.1结构体 5.1.1结构体的引出及使用 191 51.2结构体数组的引出及使用 51.3结构体程序举例 514结构体与指针 52共用体 521共用体的引出 206 522共用体的定义及使用 53枚举类型 210 53.1枚举类型的引出 532枚举类型的定义及使用 习题五 213 第六章磁盘数据存储 218 61将数据写入文件 218 62文件读写分类函数 221
3 4.3.3 字符串的定义及使用..................................................... 133 4.3.4 字符数组程序举例.......................................................... 138 4.4 数组与函数............................................................................. 140 4.4.1 数组元素作为函数参数................................................... 141 4.4.2 数组名作为函数参数...................................................... 142 4.4.3 多维数组作为函数参数................................................... 144 4.5 数组与指针............................................................................. 145 4.5.1 一维数组与指针............................................................. 145 4.5.2 多维数组与指针............................................................. 148 4.5.3 用数组名作函数参数...................................................... 149 4.6 字符串与指针.......................................................................... 152 4.6.1 字符串的指针和指针变量............................................... 152 4.6.2 用字符串指针访问字符串............................................... 153 4.6.3 字符指针和字符数组的区别............................................ 154 4.6.4 字符串指针作函数参数................................................... 157 4.7 典型例题................................................................................. 159 *4.8 链表....................................................................................... 170 4.8.1 概述............................................................................... 170 4.8.2 简单链表........................................................................ 171 4.8.3 动态链表........................................................................ 171 4.8.4 输出链表链表结构的实现和使用..................................... 174 习题四.......................................................................................... 179 第 5 章 复杂构造数据类型................................................................... 190 5.1 结构体..................................................................................... 190 5.1.1 结构体的引出及使用...................................................... 191 5.1.2 结构体数组的引出及使用............................................... 195 5.1.3 结构体程序举例............................................................. 198 5.1.4 结构体与指针................................................................. 201 5.2 共用体..................................................................................... 205 5.2.1 共用体的引出................................................................. 206 5.2.2 共用体的定义及使用...................................................... 209 5.3 枚举类型................................................................................. 210 5.3.1 枚举类型的引出............................................................. 210 5.3.2 枚举类型的定义及使用................................................... 212 习题五.......................................................................................... 213 第六章 磁盘数据存储.......................................................................... 218 6.1 将数据写入文件...................................................................... 218 6.2 文件读写分类函数.................................................................. 221
63文件定位函数 227 习题五 第七章实用程序设计技巧 7.1程序的模块化结构 7.1.1软件工程的思想 7.1.2模块设计 236 7.1.3使用模块化方法开发程序的好处 237 7.2模块的组装 239 621文件包含与头文件的使用 239 622模块间的连接 242 623标识符的一致性 扁译 624条件编i 7.3模块设计风格简述 63.1数据风格 632标识符风格 63.3算法风格 247 634输入/输出风格. 247 635书写风格 248 74大型程序开发的项目管理 64.1项目管理器 249 642用项目管理器开发程序项目的步骤 64.3项目管理器的使用技巧 251 7.5几个应用程序设计实例 251 习题 262 C语言实验教程 263 实验一C语言运行环境和C程序初步 263 的和要求 263 实验内容 进入 Turbo c. 263 2熟悉 Turbo C程序运行过程 .266 3简单编程练习 实验二顺序结构程序设计 、目的和要求. 272 实验内容 实验三选择结构程序设计 275 目的和要求 275
4 6.3 文件定位函数.......................................................................... 227 习题五.......................................................................................... 230 第七章 实用程序设计技巧................................................................... 235 7.1 程序的模块化结构.................................................................. 235 7.1.1 软件工程的思想............................................................ 235 7.1.2 模块设计....................................................................... 236 7.1.3 使用模块化方法开发程序的好处.................................... 237 7.2 模块的组装............................................................................. 239 6.2.1 文件包含与头文件的使用......................................... 239 6.2.2 模块间的连接........................................................... 242 6.2.3 标识符的一致性....................................................... 243 6.2.4 条件编译.................................................................. 244 7.3 模块设计风格简述.................................................................. 246 6.3.1 数据风格.................................................................. 246 6.3.2 标识符风格................................................................... 246 6.3.3 算法风格....................................................................... 247 6.3.4 输入/输出风格............................................................... 247 6.3.5 书写风格....................................................................... 248 7.4 大型程序开发的项目管理........................................................ 249 6.4.1 项目管理器................................................................... 249 6.4.2 用项目管理器开发程序项目的步骤................................ 250 6.4.3 项目管理器的使用技巧.................................................. 251 7.5 几个应用程序设计实例........................................................... 251 习题.............................................................................................. 262 C 语言实验教程................................................ 263 实验一 C 语言运行环境和 C 程序初步........................................... 263 一、目的和要求..................................................................... 263 二、实验内容......................................................................... 263 1 进入 Turbo C....................................................................... 263 2 熟悉 Turbo C 程序运行过程................................................. 266 3 简单编程练习..................................................................... 271 实验二 顺序结构程序设计............................................................ 272 一、目的和要求..................................................................... 272 二、实验内容......................................................................... 273 实验三 选择结构程序设计........................................................... 275 一、目的和要求..................................................................... 275
实验内容 275 实验四循环结构程序设计 277 目的和要求 实验内容 实验五函数编程 、目的和要求 280 二、实验内容 281 实验六构造数据类型 284 、目的和要求 284 、实验内容. 实验七磁盘数据存储 目的和要求 实验内容 实验八项目开发与模块设计 、目的和要求 289 二、实验内容 289 附录 292 附录一 Turbo C20集成开发环境的使用 附录二常用功能键简表 附录三 Turbo c编译出错信息 298 严重错误 299 2.一般错误 299 3.警告 附录四常用C库函数 312 4.1数学函数 4.2输入输出函数… 315 43字符函数 321 44字符串函数 4.5动态存储分配函数 326 46时间函数 327 4.7其它函数 330 参考文献 335
5 二、实验内容......................................................................... 275 实验四 循环结构程序设计........................................................... 277 一、目的和要求..................................................................... 277 二、实验内容......................................................................... 277 实验五 函数编程......................................................................... 280 一、目的和要求..................................................................... 280 二、实验内容......................................................................... 281 实验六 构造数据类型.................................................................. 284 一、目的和要求..................................................................... 284 二、实验内容......................................................................... 284 实验七 磁盘数据存储.................................................................. 289 一、目的和要求..................................................................... 289 二、实验内容......................................................................... 289 实验八 项目开发与模块设计....................................................... 289 一、目的和要求..................................................................... 289 二、实验内容......................................................................... 289 附录..................................................................................................... 292 附录一 Turbo C 2.0 集成开发环境的使用..................................... 292 附录二 常用功能键简表.............................................................. 297 附录三 Turbo C 编译出错信息..................................................... 298 1. 严重错误........................................................................... 299 2. 一般错误........................................................................... 299 3. 警告.................................................................................. 309 附录四 常用 C 库函数................................................................. 312 4.1 数学函数......................................................................... 312 4.2 输入输出函数.................................................................. 315 4.3 字符函数......................................................................... 321 4.4 字符串函数...................................................................... 323 4.5 动态存储分配函数........................................................... 326 4.6 时间函数......................................................................... 327 4.7 其它函数......................................................................... 330 参考文献.............................................................................................. 335
第一章C程序基础 我们用计算机解决问题,都是利用某种软件。如我们使用Word编辑文 件,用 Excel处理电子表格,用IE浏览网络资源,用QQ上网聊天等。这 些软件都是按照一定算法编制的计算机程序。而算法是为解决一个问题而采 取的方法和步骤 从广义的角度说,算法早就融入我们的生活中。比如,早上上学,就 开始了上学的算法:走哪条路,坐什么车,如果堵车怎么办等等,一直到到 达学校,这个算法就完成了。用计算机解决问题也是按照相应的步骤(算法) 步一步完成的。这些步骤的实现用的是计算机语言,也就是编写计算机程 序的语言。C语言就是一种计算机语言。 现在我们要学习的就是如何用C语言编写计算机程序。 1.1c语言程序的基本结构 111认识C语言程序 首先来看两个简单的C语言程序。 【例1.1】在屏幕上输出一行信息: This is a C program. # include/预处理命令* void main() /定义主函数* printf(" This is aC program.n"),/*调用库函数,输出信息* 【例1.2】计算两数之和,并输出结果 # include/*预处理命令 void main() *定义主函数,计算两数之和* nta,b,sum;/*定义三个整型变量* a=123;b=456;为变量a,b赋初值* sum=a+b /*让sum等于a+b的值* printf("sum=%dn",sum),/*调用库函数,输出结果
6 第一章 C 程序基础 我们用计算机解决问题,都是利用某种软件。如我们使用 Word 编辑文 件,用 Excel 处理电子表格,用 IE 浏览网络资源,用 QQ 上网聊天等。这 些软件都是按照一定算法编制的计算机程序。而算法是为解决一个问题而采 取的方法和步骤。 从广义的角度说,算法早就融入我们的生活中。比如,早上上学,就 开始了上学的算法:走哪条路,坐什么车,如果堵车怎么办等等,一直到到 达学校,这个算法就完成了。用计算机解决问题也是按照相应的步骤(算法) 一步一步完成的。这些步骤的实现用的是计算机语言,也就是编写计算机程 序的语言。C 语言就是一种计算机语言。 现在我们要学习的就是如何用 C 语言编写计算机程序。 1.1 C 语言程序的基本结构 1.1.1 认识 C 语言程序 首先来看两个简单的 C 语言程序。 【例 1.1】 在屏幕上输出一行信息:This is a C program. #include /* 预处理命令 */ void main( ) /*定义主函数*/ { printf("This is a C program.\n"); /* 调用库函数,输出信息 */ } 【例 1.2】 计算两数之和,并输出结果。 #include /* 预处理命令 */ void main( ) /*定义主函数,计算两数之和 */ { int a,b,sum; /* 定义三个整型变量 */ a=123; b=456; /* 为变量 a,b 赋初值 */ sum=a+b; /* 让 sum 等于 a+b 的值 */ printf("sum=%d\n",sum); /* 调用库函数,输出结果 */ }
现在我们对这两个C语言程序作解析 (1)# include表示文件包含,其功能是将头文件 stdio h的内容 包含到用户源程序中。文件 stdio. h中声明了程序所需要的输入和输出操作 的有关信息,有了“# include”后,该程序就可以利用包含文件中 的内容了。 (2)main()表示“主函数”,main是函数名。每个C程序必须有man() 函数。函数名后的一对圆括号不能省略。一个C程序可以包含若干个函数, 但只能有一个主函数。C程序的执行从主函数开始,而不论主函数在什么位 置(所有函数之前、所有函数之后或一些函数之后另一些函数之前)。 main()前面的void是一种数据类型,这里说明本函数没有返回值。 (3)用{}括起来的是man的函数体。main函数中的所有操作(语句) 都在这一对{}之间。也就是说main函数的所有操作都在main函数体中。 (4)pin()是C语言的标准输出函数,其含义是将双引号内的内容输出 到显示器屏幕上。例11中的pint()用于将字符串“ This is a C program. n 输出。即在屏幕上显示: This is a C program.“n”是换行符,即使光标跳 到下一行行首(第一列)。例12中的%d为格式控制符,表示在此位置将代 以一个十进制整数,该整数由逗号后面的变量sum提供。程序运行后,将 在屏幕上输出:sum=579。 (5)分号“;”是C语句结束符,表示该语句结束 (6)/**/括起来的部分是一段注释,注释只是为了改善程序的可读性 在编译、运行时不起作用(事实上编译时会跳过注释,目标代码中不会包含 注释)。注释可以放在程序的任何位置,并允许占用多行,只是需要注意“/*”、 “*/”匹配,不能嵌套注释。 (7) int a b,sum;是变量声明。声明了三个具有整数类型的变量ab,sum。 C语言的变量必须先声明再使用 (8)a=123;b=456;,是两条赋值语句。将123赋给变量a,456赋给变量b 执行上述两条语句后,a、b两个变量的值分别为123和456 (⑨)sm=a+b是将a,b两变量的内容相加,然后将结果赋值给整型变量 此时sum的内容为579。 【例1.3】输入两个整数,计算并输出两者较大的数。 #include void main()/*主函数* /*main函数体开始* Int a, b,C, /*声明部分,定义变量* anf("%d%d"&a&b),/*调用库函数,输入变量a、b的值* c=max(a, b) /*调用max函数,将调用结果赋给c printf("max=%dn", c) }/*main函数体结束*
7 现在我们对这两个 C 语言程序作解析。 ⑴ #include 表示文件包含,其功能是将头文件 stdio.h 的内容 包含到用户源程序中。文件 stdio.h 中声明了程序所需要的输入和输出操作 的有关信息,有了“#include ”后,该程序就可以利用包含文件中 的内容了。 ⑵ main( )表示“主函数”,main 是函数名。每个 C 程序必须有 main( ) 函数。函数名后的一对圆括号不能省略。一个 C 程序可以包含若干个函数, 但只能有一个主函数。C 程序的执行从主函数开始,而不论主函数在什么位 置(所有函数之前、所有函数之后或一些函数之后另一些函数之前)。 main( )前面的 void 是一种数据类型,这里说明本函数没有返回值。 ⑶ 用{ }括起来的是 main 的函数体。main 函数中的所有操作(语句) 都在这一对{ }之间。也就是说 main 函数的所有操作都在 main 函数体中。 ⑷ printf( )是 C 语言的标准输出函数,其含义是将双引号内的内容输出 到显示器屏幕上。例 1.1 中的 printf( )用于将字符串“This is a C program.\n” 输出。即在屏幕上显示:This is a C program.。“\n”是换行符,即使光标跳 到下一行行首(第一列)。例 1.2 中的%d 为格式控制符,表示在此位置将代 以一个十进制整数,该整数由逗号后面的变量 sum 提供。程序运行后,将 在屏幕上输出:sum=579。 ⑸ 分号“;”是 C 语句结束符,表示该语句结束。 ⑹ /* */括起来的部分是一段注释,注释只是为了改善程序的可读性, 在编译、运行时不起作用(事实上编译时会跳过注释,目标代码中不会包含 注释)。注释可以放在程序的任何位置,并允许占用多行,只是需要注意“/*”、 “*/”匹配,不能嵌套注释。 ⑺ int a,b,sum;是变量声明。声明了三个具有整数类型的变量 a,b,sum。 C 语言的变量必须先声明再使用。 ⑻ a=123;b=456;是两条赋值语句。将 123 赋给变量 a,456 赋给变量 b。 执行上述两条语句后,a、b 两个变量的值分别为 123 和 456。 ⑼ sum=a+b;是将 a,b 两变量的内容相加,然后将结果赋值给整型变量 sum。此时 sum 的内容为 579。 【例 1.3】 输入两个整数,计算并输出两者较大的数。 #include void main( ) /* 主函数 */ { /* main 函数体开始 */ int a,b,c; /* 声明部分,定义变量 */ scanf("%d%d",&a,&b); /* 调用库函数,输入变量 a、b 的值 */ c=max(a,b); /* 调用 max 函数,将调用结果赋给 c */ printf("max=%d\n",c); } /* main 函数体结束 */
nt max(intx,inty)/*max函数,用于计算两数中较大的数* /*max函数体开始* Z /*声明部分,定义变量* if(x>y)Z=X return z. /*将z值返回,通过max带回调用处* /*max函数体结東* 说明: (1)本程序包括两个函数。其中主函数main仍然是整个程序执行的起 点。函数max的功能是计算两数中较大的数 (2) scanf()是C语言的标准输入函数,用于从键盘输入若干数据给指定 的变量。%d表示输入十进制整数。主函数main调用 scanf函数获得两个整 数,存入a、b两个变量,然后调用函数max获得两个数中较大的值,并赋 给变量c。最后输出变量c的值(结果)。 (3) int max(int x, int y)是函数max的函数头,函数max的函数头表明此 函数获得两个整数,返回一个整数 (4)用{}括起来的部分是max函数的函数体。max的函数体是函数max 的具体实现。它从参数表获得数据,处理后得到结果z,然后将z返回调用 函数main (5)本例表明除了可以调用库函数外,还可以调用用户自己定义、编写 的函数 112C语言程序的基本结构 综合上述三个例子,下面对C语言程序的基本组成和形式(程序结构) 加以说明 C程序的结构 预处理命令 void main()/*主函数 /*函数体开始* 声明部分 执行部分 /*函数体结束* 其他函数 声明部分 执行部分
8 int max(int x,int y) /* max 函数,用于计算两数中较大的数 */ { /* max 函数体开始 */ int z; /* 声明部分,定义变量 */ if (x>y) z=x; else z=y; return z; /* 将 z 值返回,通过 max 带回调用处 */ } /* max 函数体结束 */ 说明: ⑴ 本程序包括两个函数。其中主函数 main 仍然是整个程序执行的起 点。函数 max 的功能是计算两数中较大的数。 ⑵ scanf( )是 C 语言的标准输入函数,用于从键盘输入若干数据给指定 的变量。%d 表示输入十进制整数。主函数 main 调用 scanf 函数获得两个整 数,存入 a、b 两个变量,然后调用函数 max 获得两个数中较大的值,并赋 给变量 c。最后输出变量 c 的值(结果)。 ⑶ int max(int x,int y)是函数 max 的函数头,函数 max 的函数头表明此 函数获得两个整数,返回一个整数。 ⑷ 用{ }括起来的部分是 max 函数的函数体。max 的函数体是函数 max 的具体实现。它从参数表获得数据,处理后得到结果 z,然后将 z 返回调用 函数 main。 ⑸ 本例表明除了可以调用库函数外,还可以调用用户自己定义、编写 的函数。 1.1.2 C 语言程序的基本结构 综合上述三个例子,下面对 C 语言程序的基本组成和形式(程序结构) 加以说明。 C 程序的结构: 预处理命令 void main( ) /* 主函数 */ { /* 函数体开始 */ 声明部分 执行部分 } /* 函数体结束 */ 其他函数 { 声明部分 执行部分 }
下面对C程序的结构作简单说明: 1.函数是C程序的基本单位 ①一个C源程序必须包含一个main函数,也可以包含其它函数。函 数是C程序的基本单位 ②程序中的函数有些是C语言的标准库提供的,称为标准函数(或库 函数)。如 printf()函数和sean()函数。编写程序时,如果有标准函数,就 使用标准函数:如果没有标准函数,则用户需要自己编写。 被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编 写的函数。C是函数式的语言,程序的全部工作都是由各个函数完成的。编 写C程序就是编写一个个函数。 ③C函数库非常丰富, ANSI C提供100多个库函数, Turbo C提供300 多个库函数。 2main()函数 主函数是每个程序执行的起点。一个C程序总是从main函数开始执行 而不论man函数在程序中的位置。可以将main函数放在整个程序的最前面, 也可以放在整个程序的最后,或者放在一些函数之后另一些函数之前 3.函数的结构 个函数由函数首部和函数体两部分组成 ①函数首部:一个函数的第一行,格式如下: 返回值类型函数名(函数参数类型1函数参数名1…,函数参数类型 函数参数名n]) 如: Int max( Int x, Int y) 注意:一个函数可以没有参数,但是后面的一对()不能省略,这是格式 的规定,如main(。 ②函数体:函数首部下面用一对{}括起来的部分。如果函数体内有多 对{},则最外层是函数体的范围。函数体一般包括声明部分和执行部分 声明部分:定义本函数所使用的变量,并为变量分配相应大小的内存单 元。变量名是内存单元的符号地址。 执行部分:由若干条语句组成的命令序列(可以在其中调用其它函数) 4.书写风格 C程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行 上。每条语句的最后必须有一个分号“;”表示语句的结東。 5.输入输出 C语言本身不提供输入/输出语句,输入输出操作是通过调用库函数(如 scanf和 printf)完成的。 由于输入输出操作涉及具体的计算机硬件,因此把输入/输出操作放在 函数中处理可以简化C语言和C的编译系统,便于C语言在各种计算机上 实现
9 下面对 C 程序的结构作简单说明: 1. 函数是 C 程序的基本单位 ① 一个 C 源程序必须包含一个 main 函数,也可以包含其它函数。函 数是 C 程序的基本单位。 ② 程序中的函数有些是 C 语言的标准库提供的,称为标准函数(或库 函数)。如 printf( )函数和 scanf( )函数。编写程序时,如果有标准函数,就 使用标准函数;如果没有标准函数,则用户需要自己编写。 被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编 写的函数。C 是函数式的语言,程序的全部工作都是由各个函数完成的。编 写 C 程序就是编写一个个函数。 ③ C 函数库非常丰富,ANSI C 提供 100 多个库函数,Turbo C 提供 300 多个库函数。 2. main()函数 主函数是每个程序执行的起点。一个 C 程序总是从 main 函数开始执行, 而不论main函数在程序中的位置。可以将main函数放在整个程序的最前面, 也可以放在整个程序的最后,或者放在一些函数之后另一些函数之前。 3. 函数的结构 一个函数由函数首部和函数体两部分组成。 ① 函数首部:一个函数的第一行,格式如下: 返回值类型 函数名([函数参数类型 1 函数参数名 1][,…,函数参数类型 n,函数参数名 n]) 如:int max(int x,int y) 注意:一个函数可以没有参数,但是后面的一对( )不能省略,这是格式 的规定,如 main( )。 ② 函数体:函数首部下面用一对{ }括起来的部分。如果函数体内有多 对{ },则最外层是函数体的范围。函数体一般包括声明部分和执行部分。 声明部分:定义本函数所使用的变量,并为变量分配相应大小的内存单 元。变量名是内存单元的符号地址。 执行部分:由若干条语句组成的命令序列(可以在其中调用其它函数)。 4. 书写风格 C 程序书写格式自由,一行可以写几个语句,一个语句也可以写在多行 上。每条语句的最后必须有一个分号“;”表示语句的结束。 5. 输入/输出 C 语言本身不提供输入/输出语句,输入/输出操作是通过调用库函数(如 scanf 和 printf)完成的。 由于输入/输出操作涉及具体的计算机硬件,因此把输入/输出操作放在 函数中处理可以简化 C 语言和 C 的编译系统,便于 C 语言在各种计算机上 实现
不同的编译系统除了提供函数库中的标准函数外,还按照硬件的情况提 供一些专门的函数。因此不同编译系统提供的函数数量、功能会有一定差异。 6.注释 注释部分要放在符号“/”和“*”之间。为了便于阅读,程序中应适 当地加入注释。注释只起帮助阅读和理解程序的作用,不参加程序的编译, 也不影响程序的运行。使用注释是编程人员的良好习惯。 实践中,编写程序往往需要不断的修改、完善,事实上没有一个应用系 统是不需要修改、完善的。很多人会发现自己编写的程序在经历了一些时间 以后,由于缺乏必要的文档和必要的注释,最后连自己都很难再读懂。需要 花费大量时间重新思考、理解原来的程序,浪费了大量的时间。如果一开始 编程就对程序进行注释,刚开始麻烦一些,但日后可以节省大量的时间 7.预处理命令 预处理命令能够改进程序的设计环境,提高编程效率。C语言的预处理 功能主要包括:宏定义、文件包含、条件编译,分别用宏定义命令(# define)、 文件包含命令(# include)、条件编译命令(# indef.#lse.,# endif)实现,为 了与一般语句区别,这些命令以“#”开头 113C语言的表达式和语句 用表达式构成语句,表示一种运算或操作。表达式语句是在表达式的最 后加上一个“;”构成。一个表达式语句必须在最后出现分号,分号是语句 不可缺少的一部分。C程序中大多数语句是表达式语句(包括函数调用语 句) 表达式语句的一般形式 表达式 表1-1表达式与表达式语句举例 表达式语句 a=3(赋值表达式) a=3,(赋值语句)将3赋给变量a get()(函数调用表达式,gcth( gech(;合法且有意义,只关心 函数调用也属于表达式)|(函数调用语句)是否有击键,不关心具体的值 i++(自增表达式) 计+;(一般表达式语变量i的值加1 ch=ech()(函数调用表达ch= getch() 将函数的返回值赋给变量ch 式,赋值表达式) 一般表达式语句) x+y(算术表达式) x+y,(一般表达式x+y,是一个语句,其作用是完 语句) 成x+y操作,是合法的,但是 并不将结果赋给另外的变量,所
10 不同的编译系统除了提供函数库中的标准函数外,还按照硬件的情况提 供一些专门的函数。因此不同编译系统提供的函数数量、功能会有一定差异。 6. 注释 注释部分要放在符号“/*”和“*/”之间。为了便于阅读,程序中应适 当地加入注释。注释只起帮助阅读和理解程序的作用,不参加程序的编译, 也不影响程序的运行。使用注释是编程人员的良好习惯。 实践中,编写程序往往需要不断的修改、完善,事实上没有一个应用系 统是不需要修改、完善的。很多人会发现自己编写的程序在经历了一些时间 以后,由于缺乏必要的文档和必要的注释,最后连自己都很难再读懂。需要 花费大量时间重新思考、理解原来的程序,浪费了大量的时间。如果一开始 编程就对程序进行注释,刚开始麻烦一些,但日后可以节省大量的时间。 7. 预处理命令 预处理命令能够改进程序的设计环境,提高编程效率。C 语言的预处理 功能主要包括:宏定义、文件包含、条件编译,分别用宏定义命令(#define)、 文件包含命令(#include)、条件编译命令(#ifdef…#else…#endif)实现,为 了与一般语句区别,这些命令以“#”开头。 1.1.3 C 语言的表达式和语句 用表达式构成语句,表示一种运算或操作。表达式语句是在表达式的最 后加上一个“;”构成。一个表达式语句必须在最后出现分号,分号是语句 不可缺少的一部分。C 程序中大多数语句是表达式语句(包括函数调用语 句)。 表达式语句的一般形式: 表达式; 表 1-1 表达式与表达式语句举例 表 达 式 表达式语句 说 明 a=3(赋值表达式) a=3;(赋值语句) 将 3 赋给变量 a getch( )(函数调用表达式, 函数调用也属于表达式) getch( ); (函数调用语句) getch( ); 合法且有意义,只关心 是否有击键,不关心具体的值 i++ (自增表达式) i++;(一般表达式语 句) 变量 i 的值加 1 ch=getch( )(函数调用表达 式,赋值表达式) ch=getch( ); (一般表达式语句) 将函数的返回值赋给变量 ch x+y(算术表达式) x+y; (一般表达式 语句) x+y; 是一个语句,其作用是完 成 x+y 操作,是合法的,但是 并不将结果赋给另外的变量,所