中学生C语言入门演练100例.pdf

所需积分/C币:9 2013-06-22 00:19:31 1.61MB PDF
39
收藏 收藏
举报

中学生C语言入门演练100例.pdf 例程详实,丰富,学习C语言的必备,能提高C编程能力。
第章起步 3 软件,一般都是由一些专业水平很高的人员开发的。因此,在你们的计算机里,必须事先 安装某一种C语言编译系统 在你们使用的微机中已经安装了两套C语言开发环境: Turbo c2.0(其界面如图1-1 所示)和GCC(在 Rhide环境下运行)。注意我说的是“开发环境”,而不是“编译系统”,因 为 Turbo c和GCC( Rhide)都是具有多种功能的集成开发环境(通常简称为IDE),其核 心部分是C语言编译系统(GCC还包含其他一些语言的编译系统)。 Turbo c2.0是 个很小的软件,压缩后可放在一张软盘上,能够满足一般的教学要求,由于开发得较早,存 在一些缺陷。 Turbo C2.0后来升级为3.0,但 Turbo c3.0主要是为C++开发的。C++是 一种面向对象的计算机语言,与C有许多本质的不同。我觉得,如果只是学习C语言,使 用 Turbo c3.0不如直接使用GCC( Rhide),后者是目前国际上广泛流行的免费软件,许 多全球性的程序设计竞赛都指定为GCC环境。多年来,GCC不断更新,因此它可以更充 分地利用当前的计算机系统资源。 (作者):这两个软件都很容易在因特网上搜索到。本书附录1和附录2介绍了 Turbo c和GCC( Rhide)的主要功能和具体操作方法,读者在上机之前务必要认真阅读 附录1和附录2。 o命令提示守tc File Edit Run Compile Pro ject Opt ions Debug Break/watch Fill Unindent D: LXo1 c stdio. h> C printf ("Hello, My Computer! sn") -Last help Fg-Pick F6-Swap F77Fa-Prev/Next error F9-Compile 图1-1 Turbo的集成开发环境 诚:杨老师,您能把程序001详细地讲讲吗? 师:当然可以。每一个C程序,不论大小,都是由若干个函数和变量组成的。函数 是一个相对独立的程序模块,其中包含若干语句,这些语句指定了让计算机进行的某 和操作。而变量则用于在计算过程中存储有关的值。在程序001中,只有一个名字为 main的函数(一般称为主函数),main是一个特殊的函数,每一个程序都从名为main的 函数的第一条可执行语句开始执行。在main()之后,用一对花括号括起来的部分称为 函数体 程序001的第1行 include<stdio. h> OO十宇生C言入厅痴练】00 是固定的用法,建议你们在今后写的每个程序都以它作为第1行。它的作用是告诉编译 程序在本程序中要用到标准输入输出库的有关信息。 程序001的第3行 printf("llello, My Computer! \n) 是一条函数表达式语句。其中 printf(是个标准库函数,f是 format(格式)的缩写,故 printf()也称为格式打印函数,其功能是在输出设备(例如屏幕)上显示一系列字符,本 例中显示的是Hell, My Computer!,这些字符要放在一对双引号之间,但在屏幕上并 不显示两端的双引号。“\n”在C语言中表示一个字符,即换行符,在打印时它用于指 示从下一行的左边继续打印。 printf(函数加上分号“;”便构成了函数表达式语句,但 通常我们不把它说成是 print语句或打卬语句,因为从语法上讲,C语言没有专门的打 印语句 下面你们两人把这个程序运行一下,先打开 Turbo c或 Rhide的IDE界面,它们相 差不多。然后再按照下刎步骤操作 (1)在IDE的编辑区(Ediυ)输入程序001的4行程序,书写格式不要随意改动。 (2)将刚输入的程序进行编译(执行 Compile如OBJ命令),如果报错,要认真核对修 改程序,直到编译通过为止。 (3)将程序文件存盘(执行Save命令),并指定程序文件名,例如lx01.C,C诘言程序 文件的扩展名规定一律为.C。 (4)运行该程序(执行Run命令),然后进入用户屏幕(执行 User screen命令),你就 会看到预期的结果 诚:杨老师,您看,IDE在编译程序时报告了这样一个错误 Error: Statement missing: in function main 这是什么错误? 师:它的意思是“在主函数main中语句丢失了分号”。 诚:可是,我的程序中有分号啊,这个程序总共不就一个分号吗?……,嗨,把分号敲 成冒号了! 师:在编译时报告的标记为Eror的错误都属于语法错误,必须要纠正,否则你的程 序无法转换成正确的机器指令,也就无法运行。错误提示信息大多是准确的,只要看懂, 就能改正,但有些属于连带性错误,显示信息不一定准确,这时,你要认真检査错误所在行 和前面的一些行,一定要把错误准确地找出来 为了提高查找错误的能力,你们要把与程序设计有关的英文单词记熟,常用的词汇也 就几十个,越早记熟越好。 (作者)本书附录1给出了常见的出错信息的中英文对照,可供参考。 师:好,第1个演练你们都很好地完成了,下面我们开始第2个演练,后面的每一个 新的演练,都要增加一些新的语法元素或程序设计的技巧。 第1章起步 5 随像2) 沿第圆的面视写周 本演练难度等级:★ 主要语法及算法知识点:变量说明,数据翰入,标识符 程序0021 main() float Pi=3.14159265,r,c, area; printf( Enter radius: n") scanf("号f,r); c=2*Pl*r: area=PI兴r关r printf("r=%.2f,c=%. 2f,area =. 2f\nr,c, area 师:这个演练的功能是从键盘输入一个数作为一个圆的半径,然后计算这个圆的周 长和面积。 辉:杨老师,圆的半径为什么要从键盘输入,而不直接写在程序里? 师:小辉,你提出了一个很好的问题。我们写程序,总希望它有更广泛的应用,当半 径等于2时可以用,等于5时也可以用。当然你可以先在程序中指定半径r=2,当圆的半 径为5时,冉改为r=5,但这样做就要修改程序。如果以后你为某个用户设计」一个复 杂的程序,里面用的数据都是程序中指定的,用户一般都不懂程序设计,他想换个数再算 就无能为力了。 诚:这个用户也够笨的,那么简单的修改都不会 师:非也。不是用户笨,是你笨,因为用户永远是上帝。程序设计的一个原则是:在 不修改程序的前提下,使程序的功能更强大,应用更广泛。对于那些允许改动的数据,应 该让用户根据屏幕的提示输人自己所需要的数据,而不是在程序中指定。在这个程序中, 我们用PI表示圆周率π,它的值是不变的,就可以在程序中指定 诚:杨老师,程序002_1中有许多程序001中没见过的内容,您给讲一下吧 师:好。从结构上看,这个程序已经具有了一般的实用程序的框架 ①变量说明,②输入数据,③计算,④输出结果。 程序的第2行 float PI=3.14159265,r,c,area; 是类型说明部分。其功能是说明PI、r、c、area是4个变量,它们用于存放浮点型数据 那么什么是“浮点型数据”呢?“浮点型”也可以叫做“实型”,现在暂时理解为可以使用小 数点的数,以后再给出较严格的定义。在C程序执行过程中用到的所有的数据都要存放 O字生C语言入厅练00 在內存单元中,有些数据在程序运行期间是始终不变的,我们称之为常量;有些数据可能 会改变(本例中的r、c、area在每次运行时可以有不同的值),这样的数据我们称之为变 量。这里,r、c、area的实际含义分别是半径、周长和面积。在C语言中,所有的变量都必 须先说明后使用,说明通常放在函数开始处的可执行语句之前。类型标识符 float后面所 列出的变量为浮点型变量。关于类型说明的日的和有关细节,我们以后再讲。 诚:杨老师,您刚才提到了“标识符”这个词,您能不能详细地讲讲这个词的含义? 师:好。在C语言中,标识符是用来标记变量、符号常量、数据类型、函数等语法对 象,也就是在程序中为这些对象起的名字。不论标识什么,都要遵守下列的语法规则。 (1)标识符的第一个字符必须是字母或下划线。 (2)在第一个字符之后,可以是任意的字母、下划线和数字组成的字符序列,也可以 只用第一个字符作为标识符。 (3)在标识符中,大写字母与小写字母被看做是不同的字符。 例如,下列字符序列都是合法的标识符 STUDENT, NAME01, Name0l, suml, a 1, abc, 1234 其中NAME1与 Namec1是两个不同的标识符。 而以下字符序列不是合法的标识符: STUDENT NAME(中间留有空格,它不是字母数字串),n$2(中间有S,为非法字 符),12345a(以数字开头)。 程序中使用的大多数标识符都是由设计人员自己指定的,你们要注意,在给各个对象 起名字时,仅仅符合语法规定并不够,还要考虑如何使程序更容易阅读,容易修改,最好能 做到“见名知义”。以下的一些建议可以供你们参考。 (1)除了最简单的练习性的程序,一般不要用a、b、a1、b2之类的标识符;除了循环控 制变量,一般不要只用一个字符作为标识符。 (2)标识符取3~7个字符较好,也不宜太长。虽然C语言语法中没有规定标识符中 宇符个数的最大值,标识符取得太长,会引发一些新的问题。 (3)由于C语言的标识符中的字母区分大小写,为避免重复使用同一个变量时在大 小写上弄错,建议一般变量名均采用小写字母,后面即将介绍的符号常量名采用大写字 母,这也是许多人提倡的一种编程风格。 (4)由于0(数字0)、O(字母O)、I(字母Ⅰ)、l(字母1)、1(数宇1)等字符容易混淆,应 尽量避免在标识符中使用这些字符 (作者)某些特定的标识符称为关键字(又称作保留字),它是具有特定含义、专门用作 语言的特定成分的一类标识符,不能作为其他标识符使用。C语言的最后一个标准 (ANSⅠC89)中规定了32个关键字,其中常用的有: b case crar continue default double else exte float for int 1 register return chort signed sizeof struct switch typedef unIon unsigned void while 第1章起步 辉:杨老师,在程序002_1中,PI是个常量吧? 师:不,PI仍然是个变量。凡是在 float后面说明的量都是变量。而3.14159265是 个常量。我们在说明变量PI的同时,就给它一个确定的值,这叫做赋初值 程序的第4行 与“ printf();”类似,也是一条函数表达式语句。其中 scanf()是个标准库函数,一般称为 格式输入函数,其功能是从输入设备(例如键盘)上读入一些数据,并有放到指定的变量之 中。其中“%邝”称为格式说明符,它指定数据要按浮点型格式输入。而“8r”表示要用变 量r存放输入的数据,前缀“8.”是必须的,表示变量r的地址,不能省略。通常我们把第 4行称为函数表达式语句,而不是输入语句 当程序执行到相应的指令时,屏幕上将出现一个光标,等待你按既定要求输人数据。 为了明确输的內容和格式,一般应在 scanf()之前加一条“输λ提示”,即第3行 printf(" Enter radius: \n") 虽然从语法上讲,程序第3、4行可以合并为一行 scanf( Enter radius: \n%f, &r) 但这样做,输入具体数据时很容易出错,最后往往导致数据不能正确地读到变量r中。因 此,我建议你们尽量采用输入提示与实际输入分开书写的方式。 程序的第5、6行是两条赋值表达式语句 C=2米P工兴r; area=P⊥关r兴r; 其中符号“=”不是数学上的等号,而是将“=”右边的表达式的值赋值给左边的变量,我们 称它为赋值号。在C语言中,赋值号是个运算符,就像加号、减号一样完成某种特定的 运算。 作为高级语言,C语言采用了许多数学上习惯的表述方式,但C语言程序并不是一段 数学公式的推导。在C语言程序中,C=2兴PI兴r表示先将变量PIr的值取出来,然后计 算2*PI*r,最后将结果放入变量c中,这个过程我们称为赋值。你们可以把c=2兴Pl*r 想象成c←2*PI*r,但千万不要在程序中也这样写,程序设计语言中的语法规定是十分 严格的,往往一个符号的失误就要导致满盘皆输。 程序的第7行 printf( r=%. 2f,c=%. 2f,area=% An,r,c,area); 其中¨%.2疒”称为格式控制说明,“f”表示按浮点格式输出,2表示保留两位小数。3个 “%.2「”格式控制说明分别指定了后面3个表达式的输出格式 辉:杨老师,我可以只用a表示面积吗 师:可以。不仅变量名可以有不同的表示,程序本身也可以做很大的改动。用高级 语言编写的计算机程序,一方面有许多严格的语法限制,错一个字符也不行。另一方面程 8 OO十宇生C言入厅痴练】00 序设计又有很大的随意性,对于同一个问题,10个人可能会写出10个不同的程序,而且 都是正确的。例如,程序0022可以得到与程序002_1完全相同的结果 程序0022 f- oat pl=3.14159265,r; printf("Enter radius: n") ("号f", printf("x=号,2f,c=号.2f,area=告,2f\n",r,2米PI米r,卫工米工兴r); 诚:杨老师,这两个程序哪个更好一些? 师:把你提的问题换个说法,就是如何衡量一个程序的质量?这个问题也放到以后 再讲,因为我们现在见到的程序太少。如果没有其他方面的要求,我更喜欢第2个程序, 因为它更紧凑更直接。小诚,把你的运行结果告诉我 诚:在屏幕显示 Enter radius:后,我输入了3,计算结果是 00,c=18.85,area=28.27 师:很好。下面我们做第3个演练 写题。說吕角蹈的面 本演练难度等级:★ 主要语法及算法知识点:数学库函数,程序的健壮性 师:小辉,如果已知一个三角形的三条边,你怎样求三角形的面积? 辉:我觉得最直接的方法就是用海伦公式,如果三角形三边分别为a、b、c,则面积 arca=s(-a)(5-b)(-c),其中半周长S=2(a+b+c)。 可是,杨老帅,在程序中,开方怎么表示? 师:大多数C编译系统都提供了常用的数学函数供我们在程序设计中直接使用,在 程序中使用这些函数时,应在程序开始处加上一行语句:# include<math.h>。通常, 由系统提供的函数称为库函数。表1-1所示为11个数学库函数 表1-1库函数 库函数 参数定义域 说明 可取为任何 double型数 的正弦 cOS(x) x可取为任何 e型数 x的余弦cOsx tan(x) x可取为任何 double删数 x的正切tanx asin(x) x∈[-1,1] 的反正弦sin(x) 第1章起步 9 续表 库函数 参数定义域 说明 acos(x ∈[-1,1] 的反余弦cos atan(x) x可取为任何 double型数 x的反正切tan-1(x) x可取为任何 double型数 幂函数ex log(x) >0 自然对数ln(x) pow(X,y t (x) x≥0 的平方根√x fabs(x) 可取为任何 double型数 的绝对值|x 注意:在三角函数中,x用弧度表示。利用求平方根的函数sqrt()。另外, double为 双精度型数,在演练4中,再做具体的介绍 演练3对应的程序可写为 程序003 t include <math. h> I double a, b,C, S, area; (a,b,c):\n") scanf("S1f号1f号1f",&a,b,&C); S-0.5兴(a+b+c) area=sqrt(S兴(s-a)兴(S一b)关(S-c)) printf("a=号,21f,b=号.21f,c=,2f\ narea=号.21f\n",a,b,c,area); 这里的格式控制符“%.2l”是专用于双精度数( double)的输入输出的,其中1是字母 L的小写,不是数字1。当然格式控制符改用浮点数( float)也可以。还要注意,与语句 scanf("告1f各1f号1f",a,&b, 匹配的键盘输入应该是用空格隔开的3个数,不要使用逗号分隔。如果将本语句改写为 scanf("号1f,号1f,%1f",&a,Sb,S 则输入3个数时,一定要使用逗号分隔。这两种不同的输入要求在屏幕上都没有提示,因 此,为避免混乱,我喜欢一律用空格进行分隔,即采用程序0031中书写的格式。另外,你 们不觉得程序031有什么欠缺吗? 诚、辉:没发现什么不妥。 师:那你们输人10、3、4。这3个数试试: 辉:杨老师,程序输出了这些信息 sart: DOMAIN error a=10.00,b=3.00,c=4.00 0.00 10 0O中字生C语言入厅练0例 师:第1行表示函数sqrt(的定义域出现了错误,被开方数小于0了。这个错误又 是怎么造成的呢? 辉:我知道。由于s=0.5×(10+3+4)=8.5,s-a=8.5-10<0,这就导致了负数 的开方。事实上,是我们的数据有问题,10、3、4不能构成一个三角形的三边,因为不能保 证任何两边之和都大于第三边 师:很好!大多数程序对输人的数据都有严格的规定,如果你的程序没有对不符合 规定的数据做任何处理,那么,一旦输入了不合要求的数据,就不能得到预期的结果,有时 还会造成程序意外中断甚至死机,我们说这样的程序是不健壮的。任何一个实用的程序, 都应该是健壮的。因此,应将程序0031进行改写。 程序0032 t include <stdio.h> t include <math. he> main( double a, b,c, s, area; pr-ntf( Enter 3 numbers(a, b,c):\n) scanf("号1f号1f号1f",a,Sb,&c); s=0.5兴(a+b+c); if(s 0&& s-a0 &&s-b0&& s-C0) area= sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%. 2lf,b=8. 21f,c=%. 2lf\narea=. 2lf\n,a,b,C,area); else printf(" Data error! \n") 这里,我们添加了一条“条件语句”,只有当条件(s>08.8.s 08.8.s-c>0)成立时才计算三角形的面积,否则报告数据有错误。符号“8.8.”是个逻 辑运算符,可读做and,只有当4个判断是否大于零的表达式都成立,即整体的条件表达 式成立时,才计算面积,否则报错。条件语句是C语言中非常重要的一种语句,后面还要 进行深入的讨论 诚:杨老师,如果每个数据都要做合理性的判断,是不是有点麻烦? 师:原则上是都要做判断的,尤其是具有重要应用价值的程序。但由于我们的演练 只用于教学,且有不同的侧重点,有时可以忽略这种判断。好,今天我们就讲到这里,你们 回去后要认真做一下习题。 习题 编程分4行打印以下一段文字 C is a general-purpose programming language. It has been closely associated with the uniX system where it was developed, since both the system and most of the

...展开详情
试读 10P 中学生C语言入门演练100例.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
luoyanghero 是全面的,谢谢分享
2016-11-29
回复
Javaman007 上当了,只有十页,为此还专门寻找材料,十分的无奈,只有10页,只有10页
2015-11-24
回复
solidsnake777 上当了,只有十页,为此还专门寻找材料,十分的无奈,只有10页,只有10页
2015-09-22
回复
sdwhgqx2 只有前10页,不全!
2014-11-26
回复
ainidaoyy 只有前10页啊,根本不是100例,不全!!!
2014-03-05
回复
辛福的支撑 只有前几页。。。
2013-10-22
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚积分or赚钱
最新推荐
中学生C语言入门演练100例.pdf 9积分/C币 立即下载
1/10
中学生C语言入门演练100例.pdf第1页
中学生C语言入门演练100例.pdf第2页

试读结束, 可继续读1页

9积分/C币 立即下载 >