新概念C语言案例教程.pdf
《新概念C语言案例教程.pdf》由会员分享,可在线阅读,更多相关《新概念C语言案例教程.pdf(200页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、新概念C程序设计教程上册第 一 章 C语言的基本概念1.1 c 语言程序的构成成分:例 题1.11)ftinclude /*编译预处理命令,将标准输入输出函数2)作为头文件包扩到用户源程序文件中*/3)8include /*编译预处理命令,将系统提供的数学函数4)作为头文件包扩到用户源文件中*/5)int main()/函数名为main的主函数的函数首部6)函数体开始7)float x,y;定义部分.定义变量及其类型8)x=45.2;语句部分.赋值语句9)y=sqrt(3*x+5.6);语句部分.赋值语句10)printf(“斌n”,y);语句部分.输出语句11)return 0;/语句部分.
2、返回语句12)函数体结束注意:最左边的行号是为了说明方便而加上的,实际C语言程序中是不能有的。1.C语言的源程序的主要构成成分是函数定义(从第5到 第12行)。一个C语言源程序文件一般由多个函数定义顺序组成(直到第5章才讨论由两个以上函数构成的C语言源程序),但是其中必须有一个main函数。程序的运行都是从系统调用main函数开始的。2.函数定义由函数首部(第5行)和函数体(第6到 第12行)组成。函数体必须用大括号“”和“”括住。3.C语言源程序的次要构成成分是:编译预处理命令(第1、3两行的左边部分)、注 释(每一行右半部以/开始的内容,或以/*开始,以*/结束的内容)和 声 明(见第5章
3、)。编译预处理命令和注释是不以分号结束的。4.C语言程序中,(任何函数的)函数体的主要构成成分是:定义序列(第7行的左半部)和语句序列(第8行到第11行的左半部)。这两种成分都要以分号结束(复合语句除外)。C语言函数体中,所有定义必须位于语句序列之前(*注)。*注:这是C89标准,其它高级编程语言不一定有此先后顺序要求。C99标准放宽了要求,可以在复合语句的前半部定义仅在复合语句中有效的局部变量,但目前不少编译器并不支持C99标准。所以,为了获得较好的程序可移植性,本书的论述以较老的C89标准为主。深入一步:定义序列被编译程序翻译成了内存中的数据序列(包括对存放数据的内存空间的事先安排),而语
4、句序列则被翻译成了指示如何加工这些数据序列的机器语言的指令序列。将要运行的程序的指令序列也是位于内存中的。所以在运行某个程序前,程序用户必须借助于操作系统将位于外存文件中的这两部分内容加载到内存中。*5.在正式进行编译之前,编译预处理程序将根据源程序中的编译预处理命令对源程序文件进行一些辅助性的文本插入(i n c l u d e 命令)、替 换(#d e f i n e 命令)和编辑工作。编译预处理命令都是以“#”开始,不以分号结束。每条编译预处理命令必须书写在同一行上。6.注 释 以“/*”开始,以“*/”结束。注释会被编译程序首先删除掉。但良好的注释使程序更易被人们读懂。不要忘记书写注释
5、的结束符号“*/”o注释有两种常用方式:一 种 是注释内容独自占据多行,对注释以下的一段程序或整个源程序文件进行说明;另一种是出现在一行的右边,对该行左边的内容进行说明。(注释部分在V C+6.0中是以绿色字体显示出来的。)单 行 注 释 以“”开始,它用起来比较方便,但它不是C语言标准规定的。1.2 C语言程序的语法要素1.1 X即争 除了格式控制串(见 1.4节 p r in t f O 和 scan f()函数)和注释部分以外的C语言源程序的其它部分,称为C语言的源程序的正文部分。(正文部分在V C 6.0中是以黑色字体显示出来的。)2.C语言的字符集,26 个大小写英文字母:A-Z,a
6、-z;阿拉伯数字字符:09;特殊字符:!#%,&*+=()?:空格字符(对应键盘上的最长键Sp ace)换 行 符(对应E n t er 键)制 表 符(对应T ab键)以上所有这些字符构成了 C语言的字符集。书写C语言的源程序的正文部分,只能使用 C语言字符集中的字符,其它任何字符不得使用。字符集中的任何字符,只能用英文半角方式来进行输入。3.标识符是以26 个大小写英文字母、阿拉伯数字0 到 9 和下划线构成的字符序列;其中从左边开始的第一个字符不能是数字。在 C 语言中,只能使用符合标识符规定的名字,来对变量、符号常量、函数、语句标号命名。C语言对标识符的大小写敏感,也就是说m ain
7、与M ain,p r in t f 与 P r in t f 都是不同的标识符(m ain 和 p r in t f 都是C语言中的已经规定的函数名,所以,我们不能用来作为自定义的标识符)。4.关键字是被编译程序保留下来的特殊标识符;主要分为两大类:用于定义(或声明)的关键字和用于构成语句的关键字。(C 8 9 标准中的)关键字都是由小写英文字母组成的。关键 字(还包括预处理明令)在 V C+6.0中是以蓝色字体显示出来的。所有关键字列表如下:在 AN SI C 8 9 标准中共有32个关键字au t o br eak case char co n st co n t in u e def a
8、u l t do do u bl e el se en u mex t x r n f l o at f o r go t o if in t l o n g r egist er r et u r n sho r t sign edsiz eo f st at ic st r u ct sw it ch t y p edef u n io n u n sign ed v o id v o l at il e w hil e在 AN SI C 9 9 标准中增加了 5 个关键字B o o l C o m p l ex I m agin ar y in l in e r est r ict5.C
9、语言源程序中可使用的分隔符有三个:空格、回车/换行、逗号。同类项之间要用逗号分隔,关键字和标识符之间要用空格或回车/换行来分隔,不能用逗号(比 如 i n t在 C语言中,合理地使用多余的空格和空行,可以使得程序更清晰、易懂、优美。6.C语言中常量分为数值常量(又称为字面常量)和符号常量两种。应当多使用符号常量,尽量少用数值常量。最常用的数值常量有以下儿种:1).整型常量 567,-425,0 等,是没有小数分量的数值。2).实 型(浮点型)常量:由正负号、数字、小数点构成。0.543、5 4 3.、543.0、0.0 都是十进制的小数形式。在数的左边还可以加上正负号。比 如-543.0。3)
10、.字符型常量 K ,*,8,,n,等,是用单引号括起来的ASCH码表中的字符,包括键盘上的可显示(或可打印)的字符和不可显示的一些控制字符(字符n 就是表示一个控制字符Enter键,详见附录ASCH码表)。深入一步:字符型量的本质字符常量在编写程序时,要用两个单引号括住它。它属于一种从表面上看来是非数值型的量。但其实在计算机的内存中,它就是以ASCII码的形式存储的,占用一个字节内存空间的一个二进制正整数(取值 在 0一127之间)。字符型量是用计算机进行文字处理的基础。符号常量一般由大写英文字母组成的标识符构成,用#define来进行定义,比如:#definc PI 3.1416。源程序中所
11、有出现的记号P I 都会被编译预处理程序用3.1416替代。修改常量的值变得非常方便,程序的可读性也更好。7.变量定义变量的作用:要求系统为存放(其数值可以变化的)数据事先分配内存单元,变量名作为内存单元的行号地址。定义变量的形式是:类型名 变量列表:定义变量只能使用标识符。多个变量之间用逗号隔开,构成变量列表。C 语言中各种常用的变量类型是int(整型)、float(单精度浮点型)、char(字符型)、double(双精度浮点型)、long(长整型)。通过变量名score,可以找到(即映射为)相应的内存单元地址。假设地址为2000,语句:score=38.0;的含义和作用是:将数值38.0存
12、放在地址为2000的内存单元中。变量的值是可以变化的。而变量名所对应的内存地址是不变的。8.变量一定要先进行定义,定义后一定要进行初始化(即存入一个初始值在变量对应的内存单元中,参 见 P页),然后才能在表达式中使用或进行输出。否则,变量所对应的内存单元中的垃圾掣般就会在程序中(的表达式或输出语句)被误用。9.运算符是用来告诉编译程序对运算量要做何种运算的抽象形式。由编译程序转化成具体的运算类指令。最常用的运算符分为三大类:算术运算符、关系运算符(见下一章)、逻辑运 算 符(见下一章)。各种算术运算符见下表表 2.x 各种算术运算符运算符运算举例结果+正号+88-负号-a(a 的值为3)-3+
13、加11+516-减11-56*乘法11*555/除法11/52(这是整数除法)/除法11.0/52.2(这是实数除法)乘法运算符最容易漏写(比如:将 2*x*y,误写为2xy),不要把实数除法运算符误用为整数除法(比如:错 把 1.0/3写 成 1/3 o 1/3的值是0)。%取模(取整除的余数)11%51 (11除以5 的余数)10.所谓表达式,是用运算符将运算量(常量、变量、函数调用)连接起来的有意义的式子。其中还可使用圆括号来改变运算符固有的先后运算顺序圆括号内的部分优先进行运算。单个常量、变量和函数调用是最简单的表达式。在初学编程时,表达式极易出现多种书写错误。在命令型高级语言中,实际
14、上只能用表达式和语句这种抽象的、形式化的方式,来命令计算机为你进行数据处理工作(由编译程序转化为一系列的取数指令和运算指令)。单个常量、单个变量和单个函数调用是最简单的表达式(比如x,可以看成是表达式x+0)深入一步:普 通 的(指没有副作用的,见本章提高部分)表达式中出现变量的含义表 达 式 x+y中,出现变量的含义是:根据变量名(这对应着一个内存单元的地址)到内存中去取该变量的值(取 到 CPU的某个寄存器中去),然 后(在运算器中)进行指定的运算。该变量的值依然不变。11.赋值语句的形式是:变量=&达 式 ;。赋值语句先计算出赋值号“=”右边表达式的值,然后将此值存放在赋值号左边的变量(
15、所对应的内存单元)之中。注意:赋值号的左边不能是表达式,只能是单个变量。赋值语句中变量值的变与不变:“左边改变,右边不变”赋值号右边表达式中的变量(如果有的话)仅仅是取出它的值来参与表达式规定的运算,变量的值仍然未变。而赋值号左边变量(所对应的内存单元中)的原来值,将被表达式算出的新值存入而“覆盖”掉。12.形 式 如 x=包 含 方 堡/x 的乂滋X、;(x 可以是任何简单类型的变量)的赋值语句,大量的出现在程序中。它表示的是一种琴代天春即指明了如何由变量x 的一个 老 值(取出来参与表达式所规定的运算),最终得到了变量x 的一个新值(最终存入到赋值号右边的变量X中)。专题讨论:库函数和库函
16、数调用库 函数:编译程序(又称为编译器)附带的,一批可以被任何别的C语 言 程 序“调用”的,通用的、命名了的子程序。所有这些库函数组成了一个标准函数库,与编译程序一道打包发行。安装了 C编译程序后,我们就能在编写程序时,咽为这些库函数。函数调用(function cal 1 ):在我们编写的C语言源程序中,可以调用库函数为我们的程序做一些复杂的(通常是辅助性的)运算和处理工作,函数的调用方式为:库函数名(参数列表)其中参数列表中的参数如果多于一个,参数之间就要用逗号隔开.比如要求出5.6 的 4次方是多少,就要调用库函数pow(5.6,4);将 2 开平方,就要调用库函数:sq rt(2)。
17、调用库函数时千万不要忘记包含相应的头文件。参数可以是常量、变量、表达式。参数必须要用圆括号括住。比如pow(x,3.7),sin(alfa*3.1416/180);C语言中的各种常用库函数的调用方法说明,请见附录。编程时调用了库函数,这些事先编译好的、命名了的子程序,就可以通过“编译”步骤之 后 的“链接”这一步骤,“键入”到你所编写的程序之中,共同组成一个可执行的机器语言程序(可执行程序文件的扩展名是.e x e )。这样就可以大大减少编写程序的工作量.以下仅列出常用的数学库函数(要 包 含 头 文 件m a t h,h):s i n (x)x为弧度,正铉函数c o s (x)X为弧度,余铉
18、函数e x p (x)Xe以e为底的指数函数l o g(x)l o gcx以e为底的对数函数l o gl O (x)l o gi o X以1 0为底的对数函数fa b s (x)X求X的绝对值函数fm o d (x,y)整除):/y的余数fl o o r (x)求不大于X的最大整数p o w(x,y)xy赛函数,s q r t (x)x1/2开平方函数1.3数据输出与输入:1.3.1数 据(变量或表达式的值)输出可调用格式化输出库函数:p rin tf()函数。调用的一般形式为p rin tf(参 数 1,参数2,参数3,参数n)其 中 参 数 1 是格式控制串。参数2,参数3,,参数n 是输
19、出项列表例 题 1.2#ncludemain()(int num;float x;num=123;x=34.678p rin tf(/z%d%f”,num,x);程序运行结果为:123 34.678000格式控制串是用双引号括起来的字符串。%d是第一个输出项num的格式说明,以有符号的卜进制形式输出整数(正数不输出符号)%f是第二个输出项x 的格式说明,以小数形式输出单、双精度实数,默认输出6 位小数显然,%d是控制整数num的,%f是控制实数x 的。为了清晰起见,格式控制串中除了格式说明之外,还可以有按照原样输出的普通字符例如:printf(num=%d x=%f”,num,x);输出结果为
20、:nu m=123 x=34.6 7 8 0 0 0如果n u m 是车牌号,而 x是车速的话,则以下的语句更为优秀:p r i n t f(车牌为d号,车速是%f 千米/小时 n”,n u m ,x );输出结果为:车牌为123号,车速是34.6 7 8 0 0 0 千米/小时在格式控制串中,还可以有换行符号 n (这是一种转义字符)例:p r i n t f(n u m=%d n x=%fw,n u m ,x );输出结果为:nu m-123x=34.6 7 8 0 0 0域宽和精度%m.n f:对于实数,要想改变默认的小数点后面显示6 位。可 改 为%,n f例如:p r i n t f
21、 例 x=%.2 fw,x);输出结果为:x=34.6 8 4 舍 5 入p r i n t f(x=%7.2f ,x);输出结果为:产 34.6 8说明:3 4.6 8 左边多出两个空格,整个变量x的输出域宽(包括小数点)占了 7 位。如果指定域宽小于输出项的实际宽度,则指定的域宽不起作用。1.4.2数 据(变量)输 入,可调用格式化输出库函数:scanf。函数格式化输入库函数sca n f 的调用,可以使得程序运行暂停下来,等待用户的输入,程序用户可以通过键盘输入一个数值到变量(所对应的内存单元)中。不过在函数调用时,第一个参数是相应的占位符%d,%f 或c,它们与要输入的变量类型的对应关
22、系如下表:占位符输入变量的类型%di n t%ff l oa t%cch a r库函数sca n f ()的调用通过键盘输入一个变量值的最简单形式是:sc a nf(占位符、&变量名);变量左边的 符 号 是 一 个 取 地 址 符 号。这个取地址符号,在 sca n f ()函数调用时,初学者最容易漏写。注意:占位符中的转携申明一定要与后面存储输入数据的变曩等犁相匹配。深 入 一 步:格式化库输入函数scanf()的工作原理简述等待程序用户从键盘上输入字符串,在用户按下回车键后,按照占位符中的转换说明,对输入字符串进行数值数制转换,变成二进制的整数、实数或ASCII码,然后将此二进制的整数、
23、实数或ASCH码,存入到由后一个参数(即“&变量”)指定了地址的变量所对应的内存单元中。不必感到吃惊,你 在PC机或笔记本电脑的键盘上的任何多次(或一次)击键产生的输入,系统其实都是当作一串(或一个)字符来对待的。功能强大、复杂而又容易用错的格式化输入库函数scanf()的比较详细的讲解请参见本章提高部分。1.5 用计算机求解问题的一般步骤:到目前为止,我们学了不少有关c语言的基础语法知识。但是在进行编程工作时,其实只有变量、表达式、赋值语句、输入数据到变量和输出变量或表达式的结果,这些要素才是我们需要重点考虑的。其中的变量,成为我们编程解决实际问题时的核心和主线。要考虑的关键问题是:需要定义
24、哪些变量;需要输入哪些L1知的变量;如何根据己知的变量构造出合适的表达式,从而用赋值语句来求出未知变量的值;最后将求出的变量(或表达式)的值输出。用计算机求解问题,解决问题的一般过程是:1.用普通语言简要并尽可能精确地叙述问题;2.问题中已知的量有几个,其中有几个量随求解的具体应用场合会发生变化?(这些量应当定义为变量)有哪几个不会发生变化(这些量可用数值常量或符号常量来表示)?其中会变化的已知量一般应当在程序中用到此数据前,用输入函数调用(有的高级语言用输入语句)进行数据输入。3.问题中要求出的有几个量?4.从已知的量如何得到要求出的量?有何公式可以利用?有何方程式可以利用?如果是公式,就可
25、以直接将其转换为赋值语句,只需把公式右边的数学表达式转换为高级语言的算术表达式即可。如果是方程式,则需你自己亲自将方程式求解得到最后的公式,然后将其转换为赋值语句,只有到了这一步,才可以将工作交给计算机做。5.如果从已知的到要求的最终结果需要一些中间变量,则需要在程序中说明这些中间变量,并且得到怎么从已知的量到中间变量的值的公式,最终山已知量,中间变量得到所要求的结果的公式,将所有这些公式转换为赋值语句。6.将结果输出。其中最为困难的往往是第4步和第5步。这两步通常又被称为寻找求解问题的算法。1.6逐步求精的伪代码表示算法:表示问题求解的算法有多种方法,其中最为常用的是伪代码和流程图。但由于流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新概念 语言 案例 教程
限制150内