编程语言C语言学习.docx

上传人:无*** 文档编号:87073137 上传时间:2023-04-16 格式:DOCX 页数:201 大小:159.95KB
返回 下载 相关 举报
编程语言C语言学习.docx_第1页
第1页 / 共201页
编程语言C语言学习.docx_第2页
第2页 / 共201页
点击查看更多>>
资源描述

《编程语言C语言学习.docx》由会员分享,可在线阅读,更多相关《编程语言C语言学习.docx(201页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、编程高手之路一C语言(一)概述一、c语言的产生与发展C语言是1972年由美国的Dennis Ritchie设计发明的,并首次 在UNIX操作系统的DEC PDP-11计算机上使用。它由早期 的编程语言 BCPL (Basic Combind Programming Language)发 展演变而来。在1970年,AT&T贝尔实验室的Ken hompson 根据BCPL语言设计出较先进的并取名为B的语言,最后导致 了 C语言的问世。随着微型计算机的日益普及,出现了许多C语言版本。由于没 有统的标准,使得这些C语言之间出现了一些不一致的地 方。为了改变这种情况,美国国家标准研究所(ANSI)为C语

2、言 制定了一套ANSI标准,成为现行的C语言标准。二、C语言的特点C语言发展如此迅速,而且成为最受欢迎的语言之一,主要因 为它具有强大的功能。许多著名的系统软件,如PC-DOS,DBASE W都是由C语言编写的。用C语言加上 些汇编语言子程序,就更能显示C语言的优势了。归纳起来 C语言具有下列特点:1. C是中级语言它把高级语言的基本结构和语句与低级语言的实用性结合 起来。C语言可以象汇编语言样对位、字节和地址进行操 作,而这三者是计算机最基本的工作单元。2. C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各 个部分除了必要的信息交流外彼此独立。这种结构化方式可 使程序层次清

3、晰,便于使用、维护以及调试。C语言是以函数 形式提供给用户的,这些函数可方便的调用,并具有多种循 环、条件语句控制程序流向,从而使程序完全结构化。3. C语言功能齐全C语言具有各种各样的数据类型,并引入了指针概念,可使程 序效率更高。另外C语言也具有强大的图形功能,支持多种显 示器和驱动器。而且计算功能、逻辑判断功能也比较强大, 可以实现决策目的。4. C语言适用范围大C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。三、Turbo C的产生与发展我们平常用的大部分都是Turbo Co Turbo C是美国Borland 公司的产品,Borland公司是一家

4、专门从事软件开发、研制的 公司。该公司相继推出了一套Turbo系列软件,如Turbo BASIC,Turbo Pascal,Turbo Prolog,这些软件很受用户欢迎。该 公司在1987年首次推出Turbo C 1.0产品,其中使用了全然 新的集成开发环境,即使用了一系列下拉式菜单,将文本编 辑、程序编译、连接以及程序运行一体化,大大方便了程序 的开发。1988年,Borland公司又推出Turbo C 1.5版本,增加 了图形库和文本窗口函数库等,而Turbo C 2.0则是该公司 1989年出版的。Turbo C2.0在原来集成开发环境的基础上增 加了查错功能,并可以在Tiny模式下直

5、接生成.COM (数据、 代码、堆栈处在同一 64K中)文件。还可对数学协处理器(支 持8087/80287/80387等)进行仿真。我们目前经常使用的集成 环境就是Turbo C 2.0。Borland公司后来又推出了面向对象的程序软件包Turbo C+,它继承发展Turbo C 2.0的集成开发环境,并包含了面向 对象的基本思想和设计方法。习惯上我们也叫它Turbo C 3.0o1991 年为了适用 Microsoft 公司的 Windows 3.0 版本,Borland 公司又将Turbo C+作了更新,即Turbo C的新一代产品 Borlandc C+也已经问世了。编程高手之路C语言

6、(二)变量和常量编译环境设置好以后,就可以正式学习c语言了。、变量(一)、变量类型和表示方法1.什么是变量? 一句话,变量是存储数据的值的空间。由于 数值的类型有多种,有整数、小数(浮点数)、字符等等, 那么对应的变量就有整型变量、浮点型变量、字符型变量。 变量还有其他的具体分类。整型变量还可具体分为无符号 型、长整型和短整型。浮点型也可分为单精度型、双精度型 和长双精度型。此外还可以分为静态变量、外部变量、寄存 器变量和自动存储变量。这些数据类型我们在本节和后面的 章节中都会陆陆续续介绍。那么变量我们总要给它取个名字吧,这个名字我们叫做标识 符。标识符的命名有一定的规则:(1) .标识符只能

7、由字母、数字和下划线三类字符组成(2) .第一个字符必须是字母(第一个字符也可以是下划线,但 被视作系统自定义的标识符)(3) .大写字母和小写字母被认为是两个不同的字符,如A和a 是两个不同的标识符(4) .标识符可以任意长,但只有前32位有效。有些旧的C版 本对外部标识符的限制为6位。这是由于链接程序的限制所 总成的,而不是C语言本身的局限性(5) .标识符不能是C的关键字2 .从上面的规则中,有个关键字的概念。那么什么叫关键字 呢?从表面字意上也可以看出,关键字是C语言本身某些特性的 个表示,是唯一的代表某个意思的。下面列出ANSI标准定义的32个C语言的关键字,这些关 键字在以后的学习

8、中基本上都会用到,到时再说它们的各自 用法。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 whileC语言还包括一些不能用做标识符的扩展关键字。asm cdecl _cs _ds _es farhuge interrupt near pascal _ss所以在以

9、后的学习中,在给变量命名时要避开这些关键字。3 . Turbo C2.0规定所有变量在使用前都必须加以说明。一条 变量说明语句由数据类型和其后的个或多个变量名组成。 变量说明的形式如下:类型变量表;这里类型是指Turbo C2.0的有效数据类型。变量表是个或 多个标识符名,每个标识符之间用,分隔。(二)、整型变量整型变量是用来存储整数的。整型变量又可具体分为好几种,最基本的整型变量是用类型 说明符int声明的符号整型,形式如下:int Counter;这里int是类型说明符,Counter是变量的名字。整型变量可以是有符号型、无符号型、长型、短型或象上面 定义的普通符号整型。整型是16位的,长

10、整型是32位,短整型等价于整型。 以下是几种整型变量的声明示例:long int Amount; /*长整型*/long Amount;/长整型,等价于上面/signed int Total; /*有符号整型/signed Total; /*有符号整型,等价于上面/unsigned int Offset; /无符号整型/unsigned Offset;/*无符号整型,等价于上面/short int SmallAmt; /短整型/short SmallAmt; /短整型,等价于上面/unsigned short int Month; /无符号短整型/unsigned short Month; /

11、无符号短整型,等价于上面/从上面的示例可以看出,当定义长整型、短整型、符号整型 或无符号整型时,可以省略关键字int。注明:1 .用signed对整型变量进行有符号指定是多余的,因为除非 用unsigned指定为无符号型,否则整型都是有符号的。2 .当一个变量有几重特性时,声明关键字的顺序可以任意。以下几种声明是等价的:unsigned long Tl;long unsigned T2;unsigned long int T3;unsigned int long T4;long unsigned int T5;long int unsigned T6;int unsigned long T7;

12、int long unsigned T8;(三)、浮点类型变量顾名思义,浮点类型变量是用来存储带有小数的实数的。C语言中有三种不同的浮点类型,以下是对这三种不同类型 的声明示例:float Amount; /单精度型/double BigAmount; /双精度型/long double ReallyBigAmount; /长双精度型/这里 Amount,BigAmount,ReallyBigAmount 都是变量名。浮点型都是有符号的。(四)、字符型变量字符型变量中所存放的字符是计算机字符集中的字符。对于 PC机上运行的C系统,字符型数据用8位单字节的ASCH 码表示。程序用类型说明符eha

13、r来声明字符型变量: char ch;这条声明语句声明了一个字符型变量,标识符为eh。当以这 种形式声明变量之后,程序可以在表达式中引用这个变量, 关于语句和表达式的知识在后面将会介绍。字符数据类型事实上是8位的整型数据类型,可以用于数值 表达式中,与其他的整型数据同样使用。在这种情况下,字符型变量可以是有符号的,也可以是无符号的。对于无符号 的字符型变量可以声明为:unsigned char ch;除非声明为无符号型,否则在算术运算和比较运算中,字符 型变量一般作为8位有符号整型变量处理。还有其他的如指针型变量,void型变量,以后再介绍。二、常量常量的意思就是不可改变的量,是个常数。同变量

14、一样, 常量也分为整型常量、浮点型常量、字符型常量,还有字符 串常量、转义字符常量和地址常量。(一)、整型常量整型常量可以是长整型、短整型、有符号型、无符号型。在 Tubbo C 2.0里有符号整型常量的范围从32768到32767,无 符号整型的为0到65535;有符号长整型的范围为 -2147483648到21474836470无符号长整型的范围为到 4294967295o短整型同字符型。可以指定一个整型常量为二进制、进制或十六进制,如以 下语句:-129, 0x12色,0177常量的前面有符号Ox,这个符号表示该常量是十六进制表 示。如果前面的符号只有一个字母,那么表示该常量是八 进制。

15、有时我们在常量的后面加上符号L或者U,来表示该常量是 长整型或者无符号整型:22388L, 0x4efb2L, 40000U后缀可以是大写,也可以是小写。(二)、浮点型常量个浮点型常量由整数和小数两部分构成,中间用十进制的 小数点隔开。有些浮点树非常大或者非常小,用普通方法不 容易表示,可以用科学计数法或者指数方法表示。下面是 个实例:3.1416, 1.234E-30, 2.47E201注意在C语言中,数的大小也有一定的限制。对于float型 浮点数,数的表示范围为3402823E38到3.402823E38,其 中一1.401298E-45 到 1.401298E-45 不可见。doubl

16、e 型浮点型常 数的表示范围为1.79E308到1.79E308,其中一4.94E-324到 4.94E-324 不可见。在浮点型常量里我们也可以加上后缀。FloatNumber= 1.6E1 OF; /*有符号浮点型/ LongDoubleNumber=3.45L; /长双精度型/ 后缀可大写也可小写。说明:1 .浮点常数只有一种进制(十进制)。2 .所有浮点常数都被默认为double。3 .绝对值小于1的浮点数,其小数点前面的零可以省略。如:0.22 可写为.22, -0为015E-3 可写为.0015E-3。4 . Turbo C默认格式输出浮点数时,最多只保留小数点后六 位(三)、字符

17、型常量字符型常量所表示的值是字符型变量所能包含的值。我们可 以用ASCII表达式来表示一个字符型常量,或者用单引号内 加反斜杠表示转义字符。A,x2f,013;其中:x表示后面的字符是十六进制数,0表示后面的字符 是进制数。注意:在Turbo C 2.0中,字符型常量表示数的范围是128 到127,除非你把它声明为unsigned,这样就是到255。 (四)、字符串常量字符串常量就是串字符,用双引号括起来表示。Hello,World!nEnter selection:aError!(五)、转义字符上面我们见到的x,n,a等等都是叫转义字符,它告诉编译器 需要用特殊的方式进行处理。下面给出所有的

18、转义字符和所 对应的意义:转义字符描述V单引号双引号反斜杠0空字符Onnn进制数a声音符b退格符f换页符n换行符r回车符t水平制表符v垂直制表符x十六进制符它们的具体用法我们到讲输出语句时再介绍。(六)、地址常量我们前面说的变量是存储数据的空间,它们在内存里都有对 应的地址。在C语言里可以用地址常量来引用这些地址,如 下:&Counter, ∑&是取地址符,作用是取出变量(或者函数)的地址。在后面的 输入语句和指针里还会说明。这节所讲到的变量和常量知识可以说是在一切程序中都 要用到,特别是变量的声明和命名规则。编程高手之路C语言(三)运算符无论是加减乘除还是大于小于,都需要用到运算符,

19、在C语 言中的运算符和我们平时用的基本上都差不多。运算符包括赋值运算符、算术运算符、逻辑运算符、位逻辑 运算符、位移运算符、关系运算符、自增自减运算符。大多 数运算符都是二目运算符,即运算符位于两个表达式之间。 单目运算符的意思是运算符作用于单个表达式。(具体什么是 表达式下一节再说)、赋值运算符赋值语句的作用是把某个常量或变量或表达式的值赋值给 另个变量。符号为。这里并不是等于的意思,只是赋值, 等于用=表示。注意:赋值语句左边的变量在程序的其他地方必须要声明。 得已赋值的变量我们称为左值,因为它们出现在赋值语句的 左边;产生值的表达式我们称为右值,因为她它们出现在赋 值语句的右边。常数只能

20、作为右值。例如:count=5;total l=total2=0;第一个赋值语句大家都能理解。第二个赋值语句的意思是把同时赋值给两个变量。这是因 为赋值语句是从右向左运算的,也就是说从右端开始计算。 这样它先total2=0;然后totall=total2;那么我们这样行不行 呢?(total l=total2 )=0;这样是不可以的,因为先要算括号里面的,这时totall=tota12 是个表达式,而赋值语句的左边是不允许表达式存在的。二、算术运算符在C语言中有两个单目和五个双目运算符。符号功能+单目正-单目负乘法/除法%取模+加法减法下面是些赋值语句的例子,在赋值运算符右侧的表达式 中就使

21、用了上面的算术运算符:Area=Height*Width;num=numl +num2/num3-num4;运算符也有个运算顺序问题,先算乘除再算加减。单目正和 单目负最先运算。取模运算符()用于计算两个整数相除所得的余数。例如: a=7%4;最终a的结果是3,因为%4的余数是3。那么有人要问了,我要想求它们的商怎么办呢?b=7/4;这样b就是它们的商了,应该是1。也许有人就不明白了,7/4应该是1.75,怎么会是1呢?这 里需要说明的是,当两个整数相除时,所得到的结果仍然是 整数,没有小数部分。要想也得到小数部分,可以这样写7.0/4 或者7/4.0,也即把其中一个数变为非整数。那么怎样由一

22、个实数得到它的整数部分呢?这就需要用强 制类型转换了。例如:a=(int) (7.0/4);因为7.0/4的值为1.75,如果在前面加上(int)就表示把结果强 制转换成整型,这就得到了 1。那么思考一下a=(float)(7/4);最终a的结果是多少?单目减运算符相当于取相反值,若是正值就变为负值,若是 负数就变为正值。单目加运算符没有意义,纯粹是和单目减构成一对用的。三、逻辑运算符逻辑运算符是根据表达式的值来返回真值或是假值。其实在 C语言中没有所谓的真值和假值,只是认为非为真值, 为假值。符号功能 &逻辑与 I!逻辑或 !逻辑非 例如: 5!3;0H-2&5; !4;当表达式进行&运算时

23、,只要有一个为假,总的表达式就 为假,只有当所有都为真时,总的式子才为真。当表达式进 行|运算时,只要有一个为真,总的值就为真,只有当所有的 都为假时,总的式子为假。逻辑非。)运算是把相应的变量 数据转换为相应的真/假值。若原先为假,则逻辑非以后为真, 若原先为真,则逻辑非以后为假。还有一点很重要,当个逻辑表达式的后一部分的取值不会 影响整个表达式的值时,后一部分就不会进行运算了。例如: a=2,b=l;a|b-l;因为a=2,为真值,所以不管b-1是不是真值,总的表达式 一定为真值,这时后面的表达式就不会再计算了。四、关系运算符关系运算符是对两个表达式进行比较,返回一个真/假值。符号功能 大

24、于 小于 =大于等于 =小于等于=等于!=不等于这些运算符大家都能明白,主要问题就是等于=和赋值=的 区别了。些刚开始学习C语言的人总是对这两个运算符弄不明白, 经常在些简单问题上出错,自己检查时还找不出来。看下面的代码:if(Amount=123)很多新人都理解为如果Amount等于!23,就怎么样。其实 这行代码的意思是先赋值Amount=123,然后判断这个表达 式是不是真值,因为结果为123,是真值,那么就做后面的。 如果想让当Amount等于123运行时,应该 if(Amount=123)五、自增自减运算符这是类特殊的运算符,自增运算符+和自减运算符对变 量的操作结果是增加1和减少l

25、o例如:Couter;Couter;+Amount;Amount+;看这些例子里,运算符在前面还是在后面对本身的影响都是 样的,都是加1或者减!,但是当把他们作为其他表达式 的一部分,两者就有区别了。运算符放在变量前面,那么在 运算之前,变量先完成自增或自减运算;如果运算符放在后 面,那么自增自减运算是在变量参加表达式的运算后再运 算。这样讲可能不太清楚,看下面的例子:num 1=4;num2=8;a=+num 1;b=num2+;a=+numl;这总的来看是一个赋值,把+numl的值赋给a, 因为自增运算符在变量的前面,所以numl先自增加1变为 5,然后赋值给a,最终a也为5。b=num2

26、+;这是把num2+ 的值赋给b,因为自增运算符在变量的后面,所以先把num2 赋值给b, b应该为8,然后num2自增加1变为9。那么如果出现这样的情况我们怎么处理呢?c=num 1 +num2;到底是 c=(numl+)+num2;还是 c=numl+(+num2);这要根据 编译器来决定,不同的编译器可能有不同的结果。所以我们 在以后的编程当中,应该尽量避免出现上面复杂的情况。六、复合赋值运算符在赋值运算符当中,还有一类C/C+独有的复合赋值运算符。 它们实际上是种缩写形式,使得对变量的改变更为简洁。 Total=Total+3;乍看这行代码,似乎有问题,这是不可能成立的。其实还 是老样

27、子,是赋值不是等于。它的意思是本身的值加3, 然后在赋值给本身。为了简化,上面的代码也可以写成: Total+=3;复合赋值运算符有下列这些:符号功能+=加法赋值-=减法赋值*=乘法赋值/=除法赋值%=模运算赋值=左移赋值=右移赋值&=位逻辑与赋值|=位逻辑或赋值人=位逻辑异或赋值上面的十个复合赋值运算符中,后面五个我们到以后位运算 时再说明。那么看了上面的复合赋值运算符,有人就会问,到底 Total=Total+3;与Total+=3;有没有区别?答案是有的,对于 A=A+1,表达式A被计算了两次,对于复合运算符A+=l, 表达式A仅计算了一次。一般的来说,这种区别对于程序的 运行没有多大影

28、响,但是当表达式作为函数的返回值时,函 数就被调用了两次(以后再说明),而且如果使用普通的赋值 运算符,也会加大程序的开销,使效率降低。七、条件运算符条件运算符。:)是C语言中唯一的个三目运算符,它是对 第一个表达式作真/假检测,然后根据结果返回两外两个表达 式中的一个。表达式1?表达式2:表达式3在运算中,首先对第一个表达式进行检验,如果为真,则返 回表达式2的值;如果为假,则返回表达式3的值。例如:a=(bO)?b:-b;当b0时,a=b;当b不大于0时,a=-b;这就是条件表达式。 其实上面的意思就是把b的绝对值赋值给ao、逗号运算符在C语言中,多个表达式可以用逗号分开,其中用逗号分开

29、的表达式的值分别结算,但整个表达式的值是最后个表达 式的值。假设 b=2,c=7,d=5,al=(+b,c,d+3);a2=+b,c,d+3;对于第一行代码,有三个表达式,用逗号分开,所以最终的 值应该是最后个表达式的值,也就是d+3,为8,所以a=8o 对于第二行代码,那么也是有三个表达式,这时的三个表达 式为a2=+b、c-、d+3,(这是因为赋值运算符比逗号运算符 优先级高)所以最终表达式的值虽然也为8,但a2=3。还有其他的如位逻辑运算符,位移运算符等等,我们等到讲 位运算时再说明。九、优先级和结合性从上面的逗号运算符那个例子可以看出,这些运算符计算时 都有一定的顺序,就好象先要算乘除

30、后算加减样。优先级 和结合性是运算符两个重要的特性,结合性又称为计算顺 序,它决定组成表达式的各个部分是否参与计算以及什么时 候计算。下面是C语言中所使用的运算符的优先级和结合性: 优先级运算符结合性(最高)()-.自左向右! +- + -* & sizeof 自右向左*/%自左向右+ 自左向右 自左向右=自左向右=!=自左向右&自左向右A自左向右|自左向右&自左向右|(自左向右?:自右向左=+= -= *= /= %= &= A= |= = = 自 右 向左(最低),自左向右在该表中,还有一些运算符我们没有介绍,如指针运算符、 sizeof运算符、数组运算符口等等,这些在以后的学习中会陆 续

31、说明的。编程高手之路C语言(四)表达式和语句、表达式前面已经提到过表达式,相信大家对表达式也有了一个初步 的认识,它是由常量、变量、运算符组合(到以后讲函数时, 函数也可以是组成表达式的元素),计算以后返回一个结果 值。表达式的结束标志是分号(;),C语言中所有的语句和声 明都是用分号结束,在分号出现之前,语句是不完整的。例如:1+2;Counter/3+5;Height*Width;表达式本身什么事情都不做,只是返回结果值。在程序不对 返回的结果值做任何操作的情况下,返回的结果值不起任何 作用,表达式的作用有两点,个是放在赋值语句的右边, 另个是作为函数的参数(以后再介绍)。表达式返回的结果

32、值是有类型的。表达式隐含的数据类型取 决于组成表达式的变量和常量的类型。因此,表达式的返回 值有可能是某种大小的整型,或者是某精度的浮点型,或者 是某种指针类型。这里面就有类型转化的问题了,在前面说整型运算的时候也 提到过。类型转化的原则是从低级向高级自动转化(除非人为 的加以控制)。计算的转换顺序基本是这样的:字符型整型-长整型浮点型-单精度型-双精度型 就是当字符型和整型在起运算时,结果为整型,如果整型 和浮点型在起运算,所得的结果就是浮点型,如果有双精 度型参与运算,那么答案就是双精度型了。强制转换是这样的,在类型说明符的两边加上括号,就把后面的变量转换成所要的类型了。如:(int) a

33、;(float) b;第一个式子是把a转换成整型,如果原先有小数部分,则舍 去。第二个式子是把b转换成浮点型,如果原先是整数,则在后 面补每个表达式的返回值都具有逻辑特性。如果返回值为非0, 则该表达式返回值为真,否则为假。这种逻辑特性可以用在 程序流程控制语句中。有时表达式也不参加运算,如:if(a|b)53?a+:b+;当a为真时,b就不参加运算了,因为不管b如何,条件总 是真。二、语句(一)、赋值语句其实这个问题,在讲赋值运算符的时候已经讲了一些了。Amount=l+2;Total=Counter/3+5;Area=Height* Width;也许你会发现,这些赋值语句很象代数方程,在某

34、些情况下, 我们的确可以这样理解,但有时它们是不样的。看下面: Num=Num+l;这显然不是一个等式。(二)、用逗号分隔开的声明语句C语言可大多数语言样,允许用逗号分隔声明语句中的标 识符列表,说明这些运算符是同一变量类型。例如: float Area,Height,Width;但有些程序员喜欢把标识符写在不同的行上。如:float Area,Height, Width;这样写至少有一个好处,就是可以在每个标识符后边加上注 释。在声明变量的时候,也可以直接给变量赋值,这叫做变量的 初始化。如:int a;a=3;等价于:int a=3;我们也让某些变量初始化,某些不初始化,如:int a=3

35、,b,c=5;在进行初始化时,初始化表达式可以是任意的(对全局变量和 静态变量有区别),由于逗号运算符是从左到右运算的,那么 看看这样行不行?int a=3,b=a,c=5;(三)、标准输入输出语句Turbo C2.0标准库提供了两个控制台格式化输入、输出函数 scanf();和printf();这两个函数可以在标准输入输出设备上以 各种不同的格式读写数据。scanf()函数用来从标准输入设备 (键盘)上读数据,printf()函数用来向标准输出设备(屏幕)写数 据。下面详细介绍这两个函数的用法。1 .标准输入语句scanf()函数是格式化输入函数,它从标准输入设备(键盘)读 取输入的信息。其

36、调用格式为:scanf(格式化字符串,地址表); 格式化字符串包括以下三类不同的字符;(1) .空白字符:空白字符会使scanf()函数在读操作中略去输入 中的个或多个空白字符。(2) .非空白字符:一个非空白字符会使scanf()函数在读入时剔 除掉与这个非空白字符相同的字符。(3) .格式化说明符:以开始,后跟一个或几个规定字符,用来 确定输出内容格式。Turbo C 2.0提供的输入格式化规定符如下:符号作用%d十进制有符号整数%u十进制无符号整数%f浮点数%s字符串%c单个字符%p指针的值%x,%X无符号以十六进制表示的整数%无符号以八进制表示的整数地址表是需要读入的所有变量的地址,而

37、不是变量本身,取地 址符为各个变量的地址之间同,分开。例如:scanf(%d,%d,&i,&j);上例中的scanf()函数先读个整型数,然后把接着输入的逗 号剔除掉,最后读入另一个整型数。如果,这特定字符没有 找到,scanf()函数就终止。若参数之间的分隔符为空格,则参数 之间必须输入个或多个空格。说明:(a) .对于各个变量,类型说明符是什么,输入格式化说明符就 应该用对应的类型。否则会出现程序错误或输入数据和理想 的不一样。(b) .对于字符串数组或字符串指针变量,由于数组名和指针变 量名本身就是地址,因此使用scanf()函数时,不需要在它们前 面加上&操作符。char *p,str

38、20;scanf(%s, p);scan鶴s, str);具体字符串,指针的知识以后再介绍。(c) .可以在格式化字符串中的各格式化规定符之间加入 个整数,表示任何读操作中的最大位数。如上例中若规定只能输入10字符给字符串指针p,则第一条 scanf()函数语句变为:scanf(%10s, p);程序运行时一旦输入字符个数大于10, p就不再继续读入。 实际使用scanf()函数时存在个问题,下面举例进行说明: 当使用多个scanf()函数连续给多个字符变量输入时,例如: char c 1, c2;scanf(%c, &cl);scanf(%c, &c2);运行该程序,输入一个字符A后回车(要

39、完成输入必须回车), 在执行scanf(%c,&cl)时,给变量cl赋值A,但回车符仍然留在 缓冲区内,执行输入语句scanf(%c,&c2)时,变量c2输出的是 空行,如果输入AB后回车,那么实际存入变量里的结果为cl 为A, c2为B。要解决以上问题,可以在输入函数前加入清除函数 fflush();(这个函数的使用方法将在本节最后讲述)。(d) .当在格式说明符之间加入困时,表示跳过输入,例如: scanf(%3*d,&a);当输入12345的时候,前面三个字符跳过去不考虑,最终变 量a的值为45。2.标准输出语句printf()函数是格式化输出函数,一般用于向标准输出设备按 规定格式输出

40、信息、。在编写程序时经常会用到此函数。printf() 函数的调用格式为:printf(格式化字符串,参量表);其中格式化字符串包括两部分内容:一部分是正常字符, 这些字符将按原样输出;另一部分是格式化规定字符,以开 始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的系列参数,其个数必须与格式化字符 串所说明的输出参数个数一样多,各参数之间用,分开,且顺序对应,否则将会出现意想不到的错误。对于输出语句,还有两个格式化说明符符号作用%e指数形式的浮点数%g自动选择合适的表示法说明:(1) .可以在和字母之间插进数字表示最大场宽。例如:%3d表示输出3位整型数,不够3位右对齐。%

41、9.2f表示输出场宽为9的浮点数,其中小数位为2,整数位为 6,小数点占一位,不够9位右对齐。%8s表示输出8个字符的字符串,不够8个字符右对齐。如果字符串的长度、或整型数位数超过说明的场宽,将按其实 际长度输出。但对浮点数,若整数部分位数超过了说明的整数 位宽度,将按实际整数位输出;若小数部分位数超过了说明的 小数位宽度,则按说明的宽度以四舍五入输出。另外,若想在输出值前加一些。,就应在场宽项前加个0。例如:%04d表示在输出个小于4位的数值时,将在前面补 使其总宽度为4位。如果用浮点数表示字符或整型量的输出格式,小数点后的数 字代表最大宽度,小数点前的数字代表最小宽度。例如:%6.9s表示

42、显示个长度不小于6且不大于9的字符 串。若大于9,则第9个字符以后的内容将被删除。(2) .可以在和字母之间加小写字母1,表示输出的是长型数。例如:%ld表示输出!ong整数%lf表示输出double浮点数(3),可以控制输出左对齐或右对齐,即在和字母之间加入 个-号可说明输出为左对齐,否则为右对齐。例如:%-7d表示输出7位整数左对齐%-10s表示输出10个字符左对齐些特殊规定字符(可以参照前面说的转义字符)字符作用n换行f清屏并换页r回车t Tab 符xhh表示一个ASCI!码用16进表示由本节所学的printf()函数,并结合上一节学习的数据类型, 看下面的语句,加深对Turbo C 2

43、.0数据类型的了解。char c;int a=1234;float 43.141592653589;double x=0.12345678987654321;c-x41;printf(a=%dn, a); /*结果输出十进制整数a=1234*/ printf(a=%6dn, a); /结果输出 6 位十进制数 a= 1234*/ printf(a=%06dn, a); /*结果输出 6 位十进制数 a=001234*/ printf(a=%2dn, a); /*a 超过 2 位,按实际值输出 a=1234*/ printf(f%fn, f); /输出浮点数 43.141593printf(f=

44、6.4fn, f); /输出6位其中小数点后4位的浮点数 43.1416*/printf(x=%lfn, x); /输出长浮点数 x=0.123457*/printf(x=% 18.161fn,x); /输出18位其中小数点后16位的长 浮点数 x=0.1234567898765432*/printf(c=%cn, c); /输出字符 c=A*/printf(c=%xn, c); /输出字符的 ASCII 码值 c=41 */ 上面结果中的地址值在不同计算机上可能不同。 当然还有一些输入输出函数,这个以后用到时慢慢再介绍。编程高手之路C语言(五)编写第一个C语言程序 前面几节介绍了常量和变量、

45、运算符、表达式和语句的概念, 对它们的使用有了一个大概的了解。也许刚学程序的人会觉 得有些枯燥,下面我们就来编写第一个C语言程序。#define PI 3.1416main()float Radius,Area;scanf(%&Radius); /输入半径的值/ Area=PI*Radius*Radius;printf(%fn,Area); /输出圆的面积/ )1 .个C语言程序,通常由带有#号的编译预处理语句开始。 关于预处理我们在以后介绍,这里的#define PI 3.1415926相 当于PI代表3.1416,下面在程序中遇到PI,我们就用3.1416 替代一下。在以后的程序中,在学习

46、预处理之前,我们都将 不使用预处理语句。2 .main()任何个完整的程序都需要main(),这是个函数, 具体什么是函数,以后再讲,这儿你就要记住就行。后面有 对把所有的语句都括在里面,表明那些语句都属于main() 里面。程序运行时从这个左大括号开始。3 .仆里面的4行语句大家应该都能明白,先定义两个变量, 个代表半径,个代表面积,然后输入半径的值,然后求 面积,最后在屏幕上输出面积。程序到main。的那对的右 大括号结束。求面积的语句Area=PI*Radius*Radius湘当于 Area=3.1416*Radius*Radius;(完全用 3.1416 替代 PI)。具体程序从编写到运行得到结果的步骤为:1 .双击tc.exe,进入Turbo C 2.0编译界面2 .ALT+E进入编辑模式3 .书写程序4 .F2存储程序(也可进入File菜单,选择save),第一次存储需 要写上程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁