(好论文)计算机C语言_第1页
(好论文)计算机C语言_第2页
(好论文)计算机C语言_第3页
(好论文)计算机C语言_第4页
(好论文)计算机C语言_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 C语言概述C语言是国际上广泛流行的计算机高级语言,本章主要阐述C语言的发展过程及特点;C程序的基本结构、算法及其描述;C语言字符集、标识符与关键字以及C程序的上机步骤1.1 C语言的发展过程及特点1.1.1 C语言的发展过程C语言自流行以来一直兴盛不衰,也是目前应用最广泛的计算机语言之一。因为它既具有高级语言的优点,又具有低级语言的许多特点,因此特别适合于编写系统软件,当然也可用来编写应用软件。语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了语言。同时由B.W.Kernighan和D.M.Ritchit(合称D&R)合著了著名的The C Programming Language一书,在该书中并没有定义一个完整的标准C 语言,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表,通常称之为ANSI C。早期的C 语言主要是用于UNIX系统。由于语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。K&R在1988年修改了他们的经典著作The C Programming Language,按照ANSI C标准重写了该书。1987年,ANSI又公布了新标准87 ANSI C。1990年,国际标准化组织ISO(International Standard Organization)接受87 ANSI C为ISO C的标准(ISO 98991990)。目前流行的C编译系统都是以它为基础的。本书的叙述基本上以ANSI C为基础。目前广泛流行的各种版本C语言编译系统虽然基本部分是相同的,但也有一些不同。在微型机上使用的有Microsoft C、Turbo C、Quick C、Borland C等,它们的不同版本又略有差异。因此,读者应了解自己使用的计算机系统所配置的C编译系统的特点和规定。1.1.2 C语言的特点一种语言之所以能存在和发展,并具有生命力,总是有其不同于其他语言的特点。C语言的主要特点如下。(1)语言简洁、紧凑,使用方便、灵活。C语言共有32个关键字(见本章1.4节),9种控制语句,程序书写形式自由。(2)运算符丰富。C的运算符包含的范围很广泛,共有34种运算符(参见第附录III)。C把括号、赋值、强制类型转换等作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他语言中难以实现的运算。(3)数据结构丰富,具有现代计算机语言的各种数据结构。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算,尤其是指针类型数据,使用起来更为灵活、多样。(4)具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句)。用函数作为程序的模块单位,便于实现程序的模块化。C是理想的结构化语言,符合现代编程风格的要求。(5)语法限制不太严格,程序设计自由度大。例如对数组下标越界不做检查,由程序编写者自己保证程序的正确。对变量的类型使用比较灵活,例如整型数据、字符型数据、逻辑型数据可以通用。一般的高级语言语法检查比较严格,能检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度,因此放宽了语法检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C编译程序去查错。“限制”与“灵活”是一对矛盾。限制严格,就失去灵活性;而强调灵活,就必然放松限制。(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C既具有高级语言的功能,又具有低级语言的许多功能。C语言的这种双重性,使它既是成功的系统软件设计语言,又是应用软件设计语言。有人把C称为“中级语言”,意为兼有高级语言和低级语言的特点。(7)生成目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低10%-20%。(8)用C语言写的程序可移植性好(与汇编语言比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。上面只介绍了C语言的最容易理解的一般特点,至于C语言内部的其他特点将结合以后各章的内容作介绍。由于C语言的这些优点,使C语言应用非常广泛。C的以上特点,读者现在也许还不能深刻理解,待学完C以后再回顾一下,就会有比较深刻的体会。总之,C语言对程序员的要求较高。程序员使用C语言编写程序会感到限制少,灵活性大,功能强,可以编写出任何类型的程序。1.2 C语言程序的基本结构这一节的主要任务是通过简单的C程序介绍,了解C程序的基本结构和特性。【例1.1】编写显示字符串”Hello,World!”的程序 main ( ) printf (Hello,World!n); 本程序的作用是输出以下一行信息: Hello,World!其中 main 是“主函数”名,每一个C程序都必须有一个 main 函数。其后的一对圆括号是函数的标志,圆括号中间可以是空的,但这一对圆括号不能省略。函数体由大括弧括起来。本例中主函数内只有一个输出语句,printf是C语言中的输出函数(详见第3章)。双引号(双括号)内的字符串原样输出。“n”是换行符,即在输出“Hello,World!”后回车换行。语句最后有一分号。【例1.2】编写程序,实现求两整数之差。main ( ) /*求两数之和*/int a,b,result; /*定义变量*/ a=345; b=112; /* 以下3行为C语句 */ result =a-b; printf (result is %dn,result); 本程序的作用是求两个整数a和b之差result。/*/表示注释部分,为便于理解,可用汉字表示注释,当然也可以用英语或汉字拼音作注释。注释只是给人看的,对编译和运行不起作用。注释可以加在程序中任何位置。第2行是声明部分,定义变量a和b,指定 a和b为整型(int)变量。第3行是两个赋值语句,使a和b的值分别为345和112。第4行使result的值为a-b,第5行中“%d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式(详见第3章),“%d”表示“以十进制整数形式输出”。在执行输出时,此位置上代以一个十进制整数值。printf函数中括弧内最右端result是要输出的变量,现在它的值为133(即345-112之值)。因此输出一行信息为:result is 133【例1.3】main ( ) /* 主函数*/ int a,b,c; /*声明部分,定义变量*/ scanf (%d,%d,&a,&b); /*输入变量a和b的值*/c=sum (a,b); /*调用max函数,将得到的值赋给c*/printf (sum=%dn,c); /*输出c的值*/int sum(int x,int y) /*定义max函数,函数值为整型,形式参数x,y为整型*/ int z; z=x+y;return (z); /*将z的值返回,通过sum带回调用处*/本程序包括两个函数:主函数main和被调用的函数sum。sum函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。返回值是通过函数名sum带回到main函数的调用处。main函数中的scanf是“输入函数”的名字(scanf和printf都是C系统提供的标准输入输出函数)。程序中scanf函数的作用是输入a和b的值。&a和&b中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。&a和&b前面的“%d,%d”的含义与前相同,只是现在用于“输入”。它指定输入的两个数据按十进制整数形式输入。关于scanf函数详见第3章。main函数中第4行为调用sum函数,在调用时将实际参数a和b的值分别传送给sum函数中的形式参数x和y。经过执行sum函数得到一个返回值(即sum函数中变量z的值),把这个值赋给变量c。然后输出c的值。printf函数中双引号内的“sum=%d”,在输出时,其中“%d”将由c的值取代之,“sum =”原样输出。程序运行情况如下: 451,234 (输入451和234给a和b) sum=685 (输出c的值)通过以上几个例子,可以先了解一下C程序的基本结构和特性:(1) C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位。被调用的函数可以是系统提供的库函数(例如printf和scanf函数),也可以是用户根据需要自己编制设计的函数(例如,例1.3中的sum函数)。(2) 一个函数由两部分组成: 函数头或函数首部,即函数的第一行。包括函数名、函数类型、函数参数(形参)名、参数类型。如果函数没有参数,圆括号中 形式参数为空。例如,例1.3中的sum函数的首部为int sum (int x , int y ) 函数类型 函数名 函数参数类型 函数参数名 函数参数类型 函数参数名 函数体,即函数首部下面的大括弧内的部分。函数体一般包括:声明部分:定义该函数所用到的变量,如例1.3中main函数中的“int a,b,c;”和“int z;”。 在第6章中还将会看到,可在声明部分对所调用的函数进行声明。执行语句部分:为完成函数功能所需要的若干语句。(3) C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。C程序没有行号,(4) 每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。例如: c=a+b; 但是函数首部后面不能跟分号。(5) 可以用/*/对C程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。(6) 一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后)。1.3 算法及其描述1.3.1 算法的概念解决任何一个问题都需要有算法,所谓算法就是为解决一个问题二采取的方法和步骤。当然任何问题中都会有各种各样的数据,算法就是按一定的次序对这些数据进行处理。数据的类型和组织形式(即数据结构)不同,对应的算法也不同。数据是操作的对象,算法的目的是对数据进行加工处理以得到期望结果。打个比方,现在我们要请客吃饭,正确的做法是:先买菜,然后择菜洗菜,最后是炒菜。如果你是把菜买回来后,先炒后择再洗,那就是算法错了。还有一点也很重要,那就是我们在设计算法时一定要站在计算机这个角度来考虑,否则再好的算法也只能放弃。比如说,现在想在计算机上打印一张九九乘法表,如果我们对计算机说:打印一张九九乘法表。这个算法很好,但目前的计算机没办法实现,所以这个算法是无效的。从上面的分析可以看出,程序设计时必须认真考虑和设计数据结构以及算法。因此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式程序=数据结构+算法对初学程序设计的人来讲应该把主要精力放在算法上,等到我们具有一定的程序设计能力后那就要把主要精力放在数据结构设计上了。同一个问题可以有不同的算法。例如,求1+2+3+100。有人可能先进行1+2,再加3,再加4,一直加到100。而有的人采取这样的方法:100+(1+99)+(2+98)+(49+51)+50=100+49100+50=5050。还可以有其他的方法。当然,方法有优劣之分,有的方法只需进行很少的步骤,而有些方法则需要较多的步骤。一般说,希望采用简单的和运算步骤少的方法。因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。计算机算法可分为两大类别:数值运算算法和非数据运算算法。数值运算的目的是要求数值解,例如求方程的根,求一个函数的定积分等,都属于数值运算范围。非数值运算包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、信息查询、人事管理、行车调度管理等。1.3.2 算法的特性算法一般具有以下特点:1有穷性:一个算法只能包含有限步的操作,而不能是无限的。这里的“有限”是指“在合理的范围之内有限”。如果让计算机执行一个历时1000年才结束的算法,这虽然是有限的,但超过了合理的限度,人们不可能等那么长时间,所以这个算法不能算有效算法。究竟什么算“合理限度”,并无严格标准,由需要而定。2确定性:算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。算法中的每一个步骤应当不致被解释成不同的含义,而应是十分明确无误的。如“n被一个整数除,得余数r”这是“不确定”的,它没有说明n被哪一个整数除,因此无法执行。也就是说,算法的含义应当是唯一的,而不应当产生“歧义性”。所谓“歧义性”是指可以被理解为两种(或多种)的可能含义。3有零个或多个输入:所谓输入是指在执行算法时需要从外界取得必要的信息。例如,求两个整数m和n的最大者,则需要输入m和n的值。一个算法可以没有输入,但是没有输入的算法往往缺乏灵活性。4有一个或多个输出:算法的目的是为了求解,“解”就是输出。但算法的输出不一定就是计算机的显示或打印输出,一个算法得到的结果就是算法的输出。没有输出的算法是没有意义的。5有效性:算法中的每一个步骤都应当能有效地执行,并得到确定的结果。对于那些不熟悉计算机程序设计的人来说,他们可以只使用别人已设计好的现成算法,只需要根据算法的要求给以必要的输入,就能得到输出的结果。对他们来说,算法如同一个“黑箱子”一样,他们可以不了解“黑箱子”中的结构,只是从外部特性上了解算法的作用,即可方便地使用算法。例如,对一个“输入3个数,求其中最小值”的算法,可以用图1.1表示,只要输入a,b,c这3个数,执行算法后就能得到其中最小的数。但对于程序设计人员来说,必须会设计算法,并且根据算法编写程序。 a b 求3个数中最小的数 3个数中最小的数 c图 111.3. 简单算法举例【例1.4】求1+2+3+4+10。最原始方法:步骤1:先求1+2,得到结果3。步骤2:将步骤1得到的和3加上3,得到结果6。步骤3:将6再加上4,得10。利用这种算法经过多步以后可以求出结果,但太繁。可以利用计算机的特点,改进算法。设有两个变量s和i,s用于存放和,i存放需要加入 s的数据项。用循环算法求结果,将上面的算法改写为:S1: 使s=0S2: 使i=1S3: 使s+i, 和仍然放在在变量s中,可表示为s+isS4: 使i的值+1,即i+1iS5: 如果i10, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。如果计算1+2+3+4+1000只需将S5:若i10改成i1000即可。如果该求1210,算法也只需做很少的改动:S1: 1sS2: 1iS3: sisS4: i+1iS5:若i11, 返回S3,否则,结束。该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。类似问题还有如:1+3+(2n-1)1-2+3-4+n1+1/2+1/3+1/4+1/n1-1/3+1/5-1/7+1/(2n-1)等等,都只需要在上述算法的基础上稍作改动即可。1.3.4 算法的表示算法的表示方法有很多,常用的有:自然语言、传统流程图、结构化流程图、伪代码、PAD图等。1用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。自然语言表示的含义往往不太严格,要根据上下文才能判断其正确含义。此外,用自然语言描述包含分支结构和循环结构的算法不太方便。因此,除了很简单的问题以外,一般不用自然语言描述算法。2用流程图表示算法流程图是一些图框的组合。用图形表示算法,直观形象,易于理解。美国国家标准化协会(ANSI)规定了一些常用的流程图符号(见图1.2),现已被世界各国程序设计人员普遍采用。 起止框 输入输出框 判断框 处理框 或 - 流程线 连接点 注释框 图1在学习用流程图描述算法之前,先看一下算法的三种基本结构。这三种基本结构是:顺序结构、选择结构(又称分支结构)、循环结构。(1)顺序结构是指程序从上往下执行,因此我们在写程序时就要把先执行的语句写在上面,后执行的语句写在下面,就像我们平时读书看报从上往下阅读的道理是一样的。(2)选择结构(又称分支结构)是指从两个或多个情况里选择一个,就像走路走到叉路口时,下面选哪一条路,那要根据条件来确定,条件成立时怎么做,条件不成立时又该怎么做。(3)循环结构(又称重复结构)是指反复执行某一部分的操作。三种基本结构的流程图如下:(1)顺序结构的流程图如图1.3所示。执行时是按从上往下顺序进行的,即在执行完A框所指定的操作后,必然接着执行B框所指定的操作。顺序结构是最简单的一种基本结构。 A B 图1.3(2)选择结构(或分支结构)的流程图如图1.4所示。根据给定的条件p是否成立而选择执行A框或B框。条件成立执行A,条件不成立执行B。 p A B 图1.4请注意,无论p条件是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。无论走哪一条路径,在执行完A或B之后,然后脱离本选择结构。A或B两个框可以有一个没有。(3)循环结构(或重复结构)有两类情况。当型(while型)循环结构见图1.5(a)。它的功能是当给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框,而从b点脱离循环结构。aaAA不成立成立P2P1成立 (a) (b)图 1.5直到型(until)循环结构见图1.5(b)。它的功能是先执行A框,然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A如此反复执行A,直到给定的条件P2成立时为止,此时不再执行A,而从b点脱离本循环结构。图1.6是当型循环的应用例子,图1.7是直到型循环的应用例子。0x0xx+1x打印x打印xx+1xx5?x10?Y打印s结束 图 1.9【例1.6】求。见图1.10开始1sign2deno1sum(-1)signsignsing(1/deno)termsum+termsumdeno+1denoNdeno10080Y结束图 1.10通过以上几个例子,可以看出流程图是表示算法的较好工具。一个流程图包括以下几部分:表示相应操作的框;带箭头的流程线;框内外必要的文字说明。需要提醒的是流程线不要忘记画箭头,因为它是反映流程执行先后次序的,如不画出箭头就难以判定各框的执行次序了。用流程图表示算法直观形象,比较清楚地显示各个框之间的逻辑关系。前一时期国内外计算机书刊都广泛使用这种流程图表示算法。但是,这种流程图占用篇幅较多,尤其当算法比较复杂时,画流程图既费时又不方便。在结构化流程图推广之后,许多书刊已用N-S结构化流程图代替这种传统的流程图。但是每一个程序编制人员都应当熟练掌握传统流程图,会看会画。3用N-S流程图表示算法传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意地转来转去,使流程图变得毫无规律。这种流程图难以阅读,也难以修改,从而使其所对应算法的可靠性和可维护性难以保证。为了提高流程图的质量,使流程图的设计和阅读方便,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图。在这种流程图中,完全去掉了带箭头的流程线。全部流程写在一个矩形框内,在该框内还可以包含其他的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图称为N-S结构化流程图(N和S是两位美国学者的英文姓名的第一个字母)。这种流程图适于结构化程序设计,因而很受欢迎。N-S流程图用以下的流程图符号:(1)顺序结构:用图1.11形式表示。A和B两个框组成一个顺序结构。P成立不成立ABAB图 1.11 图 1.12(2)选择结构:用图1.12表示。当条件p成立时执行A操行,p不成立则执行B操作。请注意图1.12是一个整体,代表一个基本结构。(3)循环结构:当型循环结构用图1.13形式表示。当P1成立A直到P1成立A 图 1.13 图 1.14图1.13表示当p1条件成立时反复执行A操作,直到p1条件不成立为止。直到型循环结构用图1.14形式表示。需要指出的是,图1.11、图1.12、图1.13、图1.14中的A框和B框,可以是一个简单操作(如读入数据或打印输出等),也可以是3个基本结构之一。例如,图1.11所示的顺序结构,其中的A框又可以是一个选择结构,B框又可以是一个循环结构。如图1.15所示那样,由A和B这两个基本结构组成一个顺序结构。下面举几个用N-S流程图表示算法的例子。【例1.7】求1+2+3+10。见图1.16。1i0s成立不成立p100i+1is+isAr=0.06r=0.08Bp(1+r)p直到i10打印s当n10 图 1.16 图 1.15【例1.8】求。见图1.17。ddeno1sum(-1)signsign1signsigntermdeno+1denosum+termsum打印sum直到deno100图 1.17由上面几个例子可以看出,用N-S图表示算法的优点:它比文字描述直观、形象、易于理解;比传统流程图紧凑易画,尤其是它废除了流程线,整个流程图是由各个基本结构流程按顺序级成的。N-S图中的上下顺序就是执行时的顺序,即图中位置在上面的先执行,位置在下面的后执行。写算法和看算法只需从上到下进行就可以了,十分方便。用N-S图表示的算法都是结构化的算法(它不可能出现流程无规律的跳转,而只能自上而下地顺序执行)。4用伪代码表示算法用流程图和N-S图表示算法,直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的。因此,流程图适宜表示一个算法,但在设计算法过程中使用不是很理想(尤其是当算法比较复杂、需要反复修改时)。为了设计算法时方便,常用一种称为伪代码(pseudo code)的工具。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章,自上而下地写出来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。例如,“打印x的绝对值”的算法可以用伪代码表示如下:IF x is positive THEN print xELSE print x它像一个英语句子一样好懂,在国外用得比较普遍。也可以用汉字伪代码,如:若x为正 打印x否则 打印-x也可以中英文混用,如:IF x 为正 print xELSE print -x即计算机语言中具有的语句关键字用英文表示,其他的可用汉字表示。总之,以便于书写和阅读为原则。用伪代码写算法并无固定的、严格的语法规则,只要把意思表达清楚,并且书写的格式要写成清晰易读的形式。下面举几个用伪代码表示算法的例子。【例1.9】求1+2+3+10。开始 置s的初值为0 置i的初值为1 当i=10,执行下面操作: 使s=si 使i=i+1 (循环体到此结束) 打印s的值结束也可以写成以下形式: BEGIN(算法开始) 0s 1i while i=10 sis i+1i print sEND(算法结束)在本算法中采用当型循环(第3行到第5行是一当型循环),while意思为“当”,它表示当i=5时执行循环体(大括弧中的两行)的操作。【例1.10】求。BEGIN(算法开始)1sum 2deno1signwhile deno=100(-1)signsignsign1/denotermsum+termsumdeno+1denoprint sumEND(算法结束)从以上例子可以看到,伪代码书写格式比较自由,可以随手写下去,容易表达出设计者的思想。同时,用伪代码写的算法很容易修改,例如加一行、删一行或将后面某一部分调到前面某一位置,都是很容易做到的,而这些用流程图表示算法时却不便处理。用伪代码很容易写出结构化的算法。做如上面几个例子都是结构化的算法。但是用伪代码写算法不如流程图直观,可能会出现逻辑上的错误(例如循环或选择结构的范围搞错等)。以上介绍了常用的表示算法的几种方法,在程序设计中读者可以根据需要和习惯任意选用。5用计算机语言表示算法要完成一件工作,包括设计算法和实现算法两个部分,设计算法的目的是为了实现算法。因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。到现在为止,我们只是描述算法,即用不同的形式表示操作的步骤。而要得到运算结果,就必须实现算法。我们的任务是用计算机解题,也就是要用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言实现的算法(即程序)才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。用计算机语言表示算法必须严格遵循所用语言的语法规则,这是和伪代码不同的。下面将前面介绍过的算法用C语言表示。【例1.11】求1+2+3+10。main( )int i,s;s=0;i=1;while (i=10) s=s+i;i=i+1;printf(”%d”, s);【例1.12】求。main( )int sign=1;float deno=2.0, sum=1.0, term;while(denob都不是合法的标识符。值得注意的是,C语言区分大小写,因此大写字母和小写字母是两个不同的字符,例如sum和SUM是两个不同的标识符;标识符中所能包含的字符个数不同版本的C语言集成环境要求也不一样(请读者查阅一下自己所用版本的具体要求)。在定义标识符时应遵守“见名知意”的原则,即用有含意的英文单词或短语的缩写作为标识符,以增强程序的可读性。在C语言中,要求对所用到的标识符“先定义后使用”,这样做的目的是:凡未被事先定义的标识符不允许使用,这能保证程序中标识符正确使用;每一个标识符被指定为一确定类型,在编译时好为其分配相应的内存单元;每一个标识符属于一个类型,便于在编译时据此检查该标识符所参与的运算是否法。1.4.3 关键字所谓关键字是指C语言中有特定含义的标识符,它们是由C语言集成环境定义的,用户不能更改。因此程序中变量名、符号常量名、函数名等用户自己定义的标识符不能与关键字相同。C语言中的关键字有:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while。1.5 C程序的上机步骤为了使计算机能按照人们的意志进行工作,必须根据问题的要求,编写出相应的程序。所谓程序,就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。用高级语言编写的程序称为“源程序”(source program)。从根本上说,计算机只能识别和执行由0和1组成的二进制指令,而不能识别和执行用高级语言写的指令。为了使计算机能执行高级语言源程序,必须先用一种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”,然后将该目标程序与系统的函数库和其他目标程序连接起来,形成可执行的目标程序。在编好一个C语言源程序后,如何上机运行呢?在纸上写好一个程序后,要经过以下几个步骤:上机输入与编辑源程序对源程序进行编译与库函数连接运行可执行的目标程序这样几个步骤。以上过程如图1.18所示。 其中实线表示操作流程,虚线表示文件的输入输出。例如,编辑后得到一个源程序文件f1.c,然后在进行编译时再将源程序文件f1.c输入,经过编译得到目标程序文件f1.obj,再将目标程序文件f1.obj输入内存,与系统提供的库函数等连接,得到可执行的目标程序文件f1.exe,最后把f1.exe调入内存并使之运行。执行开始编辑编译有错?连接结果正确?结束有正确可执行目标程序f1.exe源程序f1.c目标程序f1.obj库函数和其他目标程序在了解了C语言的初步知识后,读者最好上机运行一个C语言程序,以建立对C语言程序的初步认识。下面简单介绍一下Turbo C环境下运行C语言程序的步骤。图1.18Turbo C是在微机上广泛使用的编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供一个集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。为了能使用Turbo C必须将Turbo C编译程序安装在磁盘的某一目录下,例如放在C:TC子目录下。(1)调用Turbo C程序,如果用户的当前目标是Turbo C编译程序所在的子目录(例如TC子目录),只需从键盘键入“tc”命令即可。C:TCtc屏幕上出现Turbo C集成环境

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论