1、1C 语言程序设计教学辅导(一)-第 1 章 C 语言概述主要内容:一、C 语言特性二、C 语言字符集三、C 语言单词四、C 语句分类五、C 函数的概念六、C 程序的结构七、标准输出函数 printf()和标准输入函数 scanf()的使用八、VC+6.0 集成开发环境简介一、C 语言特性(为何学习 C 语言)(1)C 语言是最通用和流行的一种计算机高级程序设计语言。(2)C 语言是目前高校普遍开设的适应于计算机程序设计入门的语言。(3)C 语言具有丰富的语法规则,使用它能够很方便地编写出结构化和模块化的程序。(4)学习 C 语言之后,能够为以后学习 C+、JAVA 等面向对象的程序设计语言奠
2、定坚实的基础。(5)C 语言上机环境方便,在各种 C 和 C+集成开发环境中都可以上机输入、调试和运行 C 语言程序。本课程以微软(Microsoft)公司开发的、与 Windows操作系统完全兼容的 Visual C+6.0 集成开发工具为上机操作环境,介绍 C 语言知识和上机操作过程。二、C 语言字符集同汉语和英语等自然语言一样,C 语言也具有相应的语法结构和构成规则,具有字符、单词、语句、文章(程序)的基本成分和结构,由字符可以构成单词,由单词可以构成语句,由语句可以构成段落(函数模块) ,由函数模块可以构成程序。在 C 语言中使用的所有字符(符号) ,可归结为以下几种类别: 大、小写英
3、文字母(52 个): A-Z, a-z,大小写不等效,如 A 和 a 不同的字符。 十进制数字符号(10 个): 0-9。 标点符号:逗号(,)、分号(;)、单引号()、双引号(”)、冒号(:)、空格( )、左花括号()、右花括号()、回车(Enter)等。半角西文符号 单字符运算符号:左右圆括号( )、左右方括号 、加(+)、减(-)、乘(*)、2除(/)、取余数(%)、小数点(.)、大于()、叹号(!)、破折号()、和号( else cn=0;” ,就是一条条件语句,执行时首先判断 x 是否大于等于 60,若是则把 1 赋给变量 cn,否则把 0 赋给变量 cn。7. 循环类语句就是根据所
4、设定的循环条件控制一个程序段反复执行。它包括 for 语句、while 语句和 do 语句三种,分别称它们为 for 循环、while 循环和 do 循环。如“for(i=1; i#include “头文件名“当使用尖括号把头文件名括起来时,表示为系统头文件;当使用双引号把头文件名括起来时,表示为用户自己建立的头文件。在#include 命令的后面不仅可以包含头文件,也可以包含一般的程序文件,即扩展名为.c 的程序文件。当编译一个程序文件时,若遇到的是#include 包含命令,则就把该命令替换为所包含文件的全部内容。因此可以使用#include 命令在一个文件中包含另外的文件。一个#incl
5、ude 命令只包含一个文件,要使用另外多个文件必须同时使用多个#include 命令。带井字符开头的命令称做编译预处理命令。3C 语言中函数的定义格式( ) 一个函数通常都要返回一个值,值的类型就是函数定义中的函数类型,函数标识符就是给函数起的名字,函数声明语句和函数调用表达式中都需要使用它,参数表给出若干个用逗号分开的变量说明,是函数运算中的自变量,函数体是函数的执行部分,即对自变量进行运算的过程,它由一对花括号括起来的一条复合语句。例如:“int f1(int n) int p; p=n*n*n; return p;”就是一个函数定义,函数类型,又叫函数返回类型为整型 int,函数名为 f
6、1,函数参数为整型变量 n,函数体包含有 3 条语句,第 1 条定义 p 为整型变量,第 2 条把 n 的立方值赋给 p,第 3 条返回 p 的值并结束函数。若调用该函数时给自变量 n 传送的值为 5,则函数执行后的返回值为 125。4主函数在每个 C 语言程序中,不管包含有多少个程序文件,也不管总共包含有多少个函数,则用户必须在其中的一个程序文件中定义唯一的一个主函数,它不是系统函数,而是用户定义的函数,其函数名规定为 main。当执行一个程序时,将首先查找并自动调用执行这个主函数。在一个程序中有且仅有一个主函数,它是程序执行的唯一入口。5主函数定义的格式与一般函数相同,只是对函数名作了限制
7、,即必须使用标识符 main 作为函数名。另外,主函数的返回类型通常标识为空类型 void,表明不返回一个值,其参数表也标识为空 void,即不含有自变量。所以主函数的一般格式为:void main(void) 语句序列在一些教材中,也时常把主函数的返回类型定义为 int 类型,这时在主函数的函数体的最后一条语句必须使用“return 0;”结束。5使用主函数举例#include /编译预处理包含命令void main(void) /函数头 /向下是函数体printf(“C 语言程序的例子!n“); /标准输出函数,n表示一个换行该主函数的函数体中只包含有一条语句,它是一条函数调用语句,pri
8、ntf标识符是函数名,它是 C 语言系统内定义的标准输出函数,其函数声明包含在stdio.h 头文件中,括号内的字符串是进行函数调用的实际参数,该函数调用将把这个字符串的内容输出到一个屏幕窗口中。当在计算机上输入和运行这个程序时,将在一个屏幕输出窗口显示出如下内容:C 语言程序的例子! /输出内容Press any key to continue /运行结束提示其中第 1 行信息是主函数运行的结果,第 2 行信息是系统在结束主函数运行前给出的提示信息,当用户按下任一键后将关闭输出窗口,返回到 C 语言编辑屏幕中。六、C 程序的结构C 语言程序构成:一个 C 语言程序由一个或多个程序文件所构成,
9、每个程序文件的扩展名为.c,每个程序文件是一个独立的编译单位,每个程序是一个独立的执行单位。当然在每个程序文件中通过使用#include 包含命令可以包含一个或多个头文件,还可以包含一个或多个程序文件。在每个程序中,只能包含并且必须包含一个命名为 main 的主函数,该主函数所在的程序文件称为主文件,其他的程序文件称为次文件或一般文件。每个程序文件可以包含 0 个、一个或若干个用户定义的函数。当然若需要调用 C 语言系统内部的函数时,则必须通过#include 命令包含相应的系统头文件。总之一个 C 语言程序:一个主程序文件,0 个、1 个或多个一般程序文件。程序中的注释:在一个程序中的任何位
10、置都可以加注释内容,以便能够使他人很好的阅读程序。若加入的注释内容在一行的后面并且不需要换行,则注释内容应以双斜线“/”开始。若需要换行,或插入在程序行内部则注释内容应以斜线加星号“/*”开始,以星号加斜线“*/”结束。程序举例 1:6#include /包含命令int Add(int x, int y); /Add 函数原型声明int main(void) /主函数int a;a=Add(3,4);printf(“a=%dn“,a);return 0;int Add(int x, int y) /Add 函数定义int z=x+y; return z; /返回 x+y 的和该程序的主函数包含
11、 4 条语句,第 1 条说明整型变量 a,第 2 条调用 Add函数,把常数 3 和 4 分别传送给函数参数 x 和 y,计算出相加的和 7,返回后赋给变量 a,第 3 条输出 a 的值 7 和一个换行符,第 4 条语句返回 0,结束主函数的执行过程,回到 C 语言程序的开发界面。程序举例 2:#include /进行标准 I/O 操作需要包含头文件 stdio.h#include /调用数学函数需要包含头文件 math.h/*以下是主函数定义*/void main() /主函数头 /向下为函数体double x,y,z; /定义三个实数变量x=5.0; /给变量 x 赋值为常数 5.0y=p
12、ow(x,3); /计算 x3,其值赋给 y,求 x3z=sqrt(x); /计算 x 的平方根,其值赋给 z,求 xprintf(“%5.2Lf %5.2Lf %5.2Lfn“,x,y,z); /输出 x,y,z 的值输出结果:5.00 125.00 2.24Press any key to continue程序举例 3:#include /*进行标准 I/O 操作需要包含头文件stdio.h*/*以下是主函数定义*/void main() /*主函数头*/ /向下为函数体int x,y,z,w; /*定义四个整型变量*/scanf(“%d %d %d“, /从键盘上为 x,y,z 输入数据
13、w=x+y+z; /把 x+y+z 的值赋给变量 wprintf(“%d %d %d %dn“,x,y,z,w); /输出 x,y,z,w 的值7程序运行结果如下:2 3 4 /键盘输入2 3 4 9Press any key to continue七、标准输出函数 printf()和标准输入函数 scanf()的使用在 C 语言系统中,利用标准输入和输出设备即键盘和显示器进行输入和输出数据的系统函数有许多,必要时应当查找相应的 C 语言函数库手册。这里只介绍两个最常用的函数,即 printf()和 scanf()函数。这两个函数的原型声明已经被放置在系统头文件 stdio.h 中,若在程序中
14、需要调用它们,只要在程序开始使用#include 命令包含此头文件即可。1. printf()函数函数原型:int printf(,);函数调用格式:printf(,);函数功能:将实际参数表中每个数据项的值按照格式字符串所指定的类型和格式输出到显示器屏幕窗口上显示出来。实际参数表:可以含有一个或多个数据项,每两个数据项之间必须用逗号分开,每个数据项可以是简单的常量或变量,也可以是函数调用或表达式。格式字符串:格式字符串是用双引号括起来的具有特定含义的字符序列。在格式字符串中可以包含需要原样输出的普通字符,也可以包含具有特定含义的格式符。每个格式符都以一个百分号字符%开始,以一个表示参数类型的
15、说明字符结束,在这两个字符之间还可以使用表示数据输出对齐方式、占用宽度、小数位数等格式信息。格式字符串举例:如“%d*%d=%dn“就是一个格式字符串,其中包含有 3 个格式符,每个格式符同为%d,字符 d 为表示整数类型的说明符,即指定格式字符串后面的实际参数表中对应的实际参数值为一个整数类型的值。当在 printf()函数调用的实际参数表中需要输出什么类型的值时,就在前面使用的格式字符串中对应相同类型的格式符信息。常用的类型说明符:d,i,f,e,c,s,p,o,u,x,%。d 和 i 相同,都是整数类型说明符。f 和 e 基本相同,都是单精度类型说明符,只是 f 采用的是定点表示法,而
16、e 采用的是带指数部分的、规范化的科学(浮点)表示法。如 23.05 是定点表示法,而 2.305e+002 则是对应的科学表示法(浮点数) ,对应的常数是2.305102。科学表示法由尾数部分、指数符号 e(代表乘幂的底数 10)和指数8部分所组成,当尾数部分的小数点前只保留一位整数位时则是规范化的科学表示法。c 是单个字符类型说明符。s 是字符指针类型说明符,对应的实际参数表中的参数通常是字符指针变量或一个字符串,输出的将是相应字符串中的内容。printf 函数调用举例:假定 a 是字符型(char),值为,,x 是整型(int),值为 32,wg 是单精度型,其值 2.56,则 prin
17、tf()函数调用表达式语句:printf(“%c %d %f n“,a,x,wg);执行时将依次输出字符变量 a 的值逗号、整型变量 x 的值 32 和单精度变量wg 的值 2.560000,其中输出单精度数时,小数部分默认为 6 位,后面不足的部分自动补 0。数据项的输出宽度:每个格式符的开始字符%和类型说明符之间可以增加一个正整数,用来规定对应值的输出宽度,即在屏幕上显示时所占有的字符位数。若实际值的位数超过此规定宽度则实际值全部显示出来,若输出值不足此宽度则空出的字符位置用空格填补。printf(“%5dn“,36);执行时将使输出 36 占用 5 个字符位置,其中前 3 个位置为空格,
18、后 2 个位置为 36。即数据(包括数值和字符或字符串)按右对齐输出,左边多余的位置用空格填补。数据项为单精度数时的情况:当需要输出一个单精度数时,通过在开始字符%和类型说明符之间增加用小数点分开的两个正整数,分别对应规定整个数据所占用的字符位数和纯小数部分所占用的字符位数。如执行 printf(“%6.2fn“,36.2)时,将使 36.2 的输出占用 6 个字符位置,其中小数部分占用 2 个字符位置,输出结果为“ 36.20” 。在单精度类型说明符前使用字母 l 或 L 的情况:在格式字符串的一个单精度类型说明符 f 或 e 前增加小写字母 l 或大写字母 L,则指定将对应输出一个双精度类
19、型的值。如假定 x 是一个双精度类型的变量,则 printf(“%lf“,x)或 printf(“%Lf“,x)执行时将输出 x 中保存的一个双精度数。若在整数类型说明符 d 或 i 前增加小写字母 h 则表示输出一个短整型数。若在整数类型说明符 d 或 i 前增加小写字母 l 或大写字母 L 则表示输出一个长整型数。如假定 a、b 和 c 分别是短整型、整型和长整型变量,则 printf(“%hd %d %ldn“,a,b,c)执行时将依次输出相应变量的值,并且它们之间用空格分开,因为格式字符串中每个格式符之间使用了一个空格。2. scanf()函数函数原型:int scanf(,);函数调
20、用格式:scanf(,);函数功能:按照格式字符串所指定的类型从键盘缓冲区中读取数据到实际参数表的每9个参数中。实际参数表:可以含有一个或多个参数,每两个参数之间必须用逗号分开,每个参数只能是指针变量,或者是一般类型变量的地址。如 x 为一个 int 型的整数变量,若要利用此函数调用从键盘缓冲区为 x 输入一个整数,则应书写为(2) scanf(“%d %lf“,(3) scanf(“%d %c %d“,第 1 条语句从键盘上输入两个整数到整数变量 x 和 y 中,当执行到该语句时,系统就等待用户输入,当输入两个用空格分开的整数并按下回车键后,系统就自动按序把第 1 个数赋给 x,把第 2 个
21、数赋给 y。执行第 2 条语句时,从键盘上输入得到一个整数和一个双精度数,并分别赋给整数变量 n1 和双精度变量 x1。执行第 3 条语句时,从键盘上输入得到一个整数、一个字符和另一个整数,并分别赋给整数变量 a、字符变量 p 和另一个整数变量 b。带有 scanf 函数调用的程序举例:#includevoid main()int x,y;y=0;while(1) scanf(“%d“, /输入一个整数到 xif(x=0) break; /若 x 小于或等于 0 则退出循环y=y+x; /把 x 的值累加到 y 上printf(“y=%dn“,y); /输出 y 的值输出结果:3 5 8 12
22、 15 -1 /键盘输入y=43 /执行 printf 语句的输出八、VC+6.0 集成开发环境简介10VC+6.0 集成开发环境是集程序文件的输入、编辑、编译、连接、运行等各种操作功能为一体的、具有 Windows 窗口界面特色的环境。利用 VC+6.0 集成开发环境开发 C 语言程序的步骤大致为:1. 针对问题建立程序结构根据实际应用问题分析出编程思路和程序结构,即整个程序应该由哪几个文件所组成,每个文件包含哪几个函数,函数之间应用如何调用。在最简单的程序中,只包含有一个程序文件,即程序主文件,该文件中只包含有一个函数,就是名称为 main 的主函数。2按照 C 语言的程序构成规则编写出每
23、个 C 程序文件以及必要的头文件当然,最简单的情况是:只需要编写出一个文件,即程序主文件。3分别输入、编辑每个程序文件(.c)在 VC+6.0 集成开发环境下,分别输入、编辑和保存每个程序文件(.c),以及必要的头文件。4通过开发界面所提供的编译菜单编译每个程序文件通常是首先编译程序主文件,然后再编译一般程序文件,编译每个程序文件时将产生相应的目标文件(.obj)。当编译过程出现错误时,应根据显示的错误信息对程序文件或头文件进行修改。注意:用户定义的头文件不能被单独编译,它只能通过#include 命令被包含在其他程序文件中,同其他程序文件一起被编译。5通过开发界面所提供的连接菜单把所有目标文件连接起来通过连接所有目标文件将生成一个可执行文件(.exe)。6通过开发界面所提供的运行程序菜单运行程序可执行文件通过运行后将从屏幕窗口得到数据输出结果。教材上具有详细的上机操作过程和操作界面的画面显示,请同学们详细阅读。