材料机电11级C语言第三章_第1页
材料机电11级C语言第三章_第2页
材料机电11级C语言第三章_第3页
材料机电11级C语言第三章_第4页
材料机电11级C语言第三章_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

1、3.1 3.2 3.3 3.4 C语言语句概述语言语句概述 字符数据的输入输出字符数据的输入输出 格式化输入输出函数格式化输入输出函数 顺序结构程序设计举例顺序结构程序设计举例 本章主要内容本章主要内容 第三章第三章 顺序结构程序设计顺序结构程序设计 问题:一年有春夏秋冬四季,按序执行,做事亦问题:一年有春夏秋冬四季,按序执行,做事亦 有先后顺序,那么有先后顺序,那么C C语言在编写程序时可以采语言在编写程序时可以采 用这样的顺序结构吗?用这样的顺序结构吗? 按程序书写的前后顺序依次按序执行按程序书写的前后顺序依次按序执行。 C C语言同样提供了这种最简单的语言同样提供了这种最简单的 程序设计

2、结构:顺序结构。程序设计结构:顺序结构。 本章要点本章要点 本章难点本章难点 n C语言的基本语句语言的基本语句 n 字符输入输出函数字符输入输出函数 n 格式化输入输出函数格式化输入输出函数 3-1 C语言语句语言语句 概述概述 C语言语句的概述语言语句的概述 通过前两二章的学习可以看出,一个通过前两二章的学习可以看出,一个C语言语言 程序可以由若干个源程序文件组成,这些源程序程序可以由若干个源程序文件组成,这些源程序 文件可以单独编译,经连接而形成可执行文件。文件可以单独编译,经连接而形成可执行文件。 一个源文件可以由若干个函数和编译命令组成。一个源文件可以由若干个函数和编译命令组成。 而

3、一个函数则由数据定义和执行语句组成。而一个函数则由数据定义和执行语句组成。 从上述两章的示例中可知,程序应该包括数从上述两章的示例中可知,程序应该包括数 据描述(由数据定义部分来实现)和数据操作据描述(由数据定义部分来实现)和数据操作 (由语句来实现)。数据描述主要定义数据结构(由语句来实现)。数据描述主要定义数据结构 (用数据类型表示)和数据初值。数据操作的任(用数据类型表示)和数据初值。数据操作的任 务是对已提供的数据进行加工,它是通过使用各务是对已提供的数据进行加工,它是通过使用各 种语句来实现。种语句来实现。 C语言的语句分类语言的语句分类 根据功能,根据功能,C语言的语句可以分为以下

4、语言的语句可以分为以下 几类。几类。 简单语句简单语句 包括表达式语句、函数调用语句。包括表达式语句、函数调用语句。 空语句空语句 复合语句复合语句 流程控制语句流程控制语句 包括结构化语句(条件语句、循环语句)、包括结构化语句(条件语句、循环语句)、 非结构化造句和非限定转向语句。非结构化造句和非限定转向语句。 一、简单语句一、简单语句 1. 表达式语句表达式语句 由一个表达式加上一个分号构成表达式语由一个表达式加上一个分号构成表达式语 句。最典型的是赋值表达式构成赋值语句。句。最典型的是赋值表达式构成赋值语句。 例如:例如: a=3 是一个赋值表达式是一个赋值表达式 而而 a=3; 则是一

5、条赋值语句则是一条赋值语句 可以看到一个表达式的最后加上一个分号可以看到一个表达式的最后加上一个分号 就成了一个语句。一个语句必须在最后出现分就成了一个语句。一个语句必须在最后出现分 号,它是号,它是C语句的结束标志,是语句中不可缺语句的结束标志,是语句中不可缺 少的一部分。少的一部分。 表达式语句可分为运算符表达式语句、赋值表达式语句可分为运算符表达式语句、赋值 语句,其作用是计算表达式或改变变量的值。语句,其作用是计算表达式或改变变量的值。 例:例: 表达式表达式 语句语句 i=i+1 i=i+1; i+ i+; x+y x+y; 2. 函数调用语句函数调用语句 由一次函数调用加上一个分号

6、构成一个语句。由一次函数调用加上一个分号构成一个语句。 其作用主要是完成特定的任务。其作用主要是完成特定的任务。 函数调用语句的一般格式:函数调用语句的一般格式: 函数名函数名( (参数列表参数列表);); 例:例: printf(“Hello!n”); getchar(); clrscr( ); 3. 空语句空语句 其形式为:其形式为: ; 目的:不做任何操作,常用于循环结构中目的:不做任何操作,常用于循环结构中 某种满足条件的需要。如延时的作用或用来某种满足条件的需要。如延时的作用或用来 作被转向点,或者构成空循环。作被转向点,或者构成空循环。 二、复合语句二、复合语句 用一对花括号用一对

7、花括号 把多个语句括起来的语把多个语句括起来的语 句序列就构成一个复合语句。在语法上相当句序列就构成一个复合语句。在语法上相当 于一条语句。于一条语句。 例:例: i+; j+=i; printf(“%dn”,j); 在在C语言中,一对花括号语言中,一对花括号“ ”不仅可用作函不仅可用作函 数体的开头和结尾的标志,也可用作复合语句的开数体的开头和结尾的标志,也可用作复合语句的开 头和结尾的标志。程序中,在出现单语句的地方可头和结尾的标志。程序中,在出现单语句的地方可 以出现复合语句。用一对花括号把若干语句括起来以出现复合语句。用一对花括号把若干语句括起来 构成一个语句组,一个复合语句在语法上等

8、同于一构成一个语句组,一个复合语句在语法上等同于一 个单语句,在一对花括号内的语句数量不限。并且个单语句,在一对花括号内的语句数量不限。并且 在复合语句内,不仅可以有执行语句,还可以有定在复合语句内,不仅可以有执行语句,还可以有定 义部分,但定义部分应该出现在可执行语句的前面。义部分,但定义部分应该出现在可执行语句的前面。 应当特别注意的是,在复合语句的花括号应当特别注意的是,在复合语句的花括号“”“” 后不能加分号。后不能加分号。 复合语句在书写时采用向右缩进的方式,复合语句在书写时采用向右缩进的方式, 其中的多个语句相对于花括号向右缩进一个制其中的多个语句相对于花括号向右缩进一个制 表位。

9、表位。 n说明语句说明语句 变量定义或说明变量定义或说明 数据类型定义数据类型定义 函数声明等语句函数声明等语句 n可执行语句:用来向计算机发出操作指令。可执行语句:用来向计算机发出操作指令。 简单语句简单语句 表达式语句:表达式语句:表达式;表达式;例:例: i+; 函数调用语句函数调用语句 控制语句控制语句 空语句:只有分号空语句:只有分号“;”组成的语句,程序执组成的语句,程序执 行时不产生任何动作。行时不产生任何动作。 复合语句:把多个语句用括号复合语句:把多个语句用括号“”括起来组成括起来组成 的一个语句的一个语句 1 1)条件判断语句:)条件判断语句:ifif语句、语句、switc

10、hswitch语句等语句等 ; 2) 2) 循环执行语句:循环执行语句:do-whiledo-while语句、语句、whilewhile语语 句、句、forfor语句;语句; 3) 3) 转向语句:转向语句:breakbreak语句、语句、gotogoto语句、语句、 continuecontinue语句、语句、returnreturn语句。语句。 C语言中各种语句有:语言中各种语句有: 三、字符输入输出函数三、字符输入输出函数 C语言无语言无I/O(输入输入/输出输出)语句,语句,I/O操作由函数实现操作由函数实现, 因此应通过预处理命令因此应通过预处理命令 #include ,将输入,将输

11、入/输输 出的库函数包含进来,才可以调用此类函数。出的库函数包含进来,才可以调用此类函数。 C语言中输入输出字符时,除在语言中输入输出字符时,除在scanf()函数中指定函数中指定 %c格式输入字符和在格式输入字符和在printf()函数中指定函数中指定%c格式输出格式输出 字符外,还可以采用字符外,还可以采用C语言提供的专门的字符输入输出语言提供的专门的字符输入输出 函数。函数。 1. 单个字符的输出函数单个字符的输出函数putchar()函数函数 putchar()函数的格式:函数的格式: putchar(ch); 其中其中ch可以是一个字符变量或常量,也可以是一可以是一个字符变量或常量,

12、也可以是一 个转义字符。个转义字符。 putchar()函数的作用:向终端输出一个字符。函数的作用:向终端输出一个字符。 说明说明 putchar()函数只能用于单个字符的输出,且一函数只能用于单个字符的输出,且一 次只能输出一个字符。另外,从功能角度来看,次只能输出一个字符。另外,从功能角度来看, printf()函数可以完全代替函数可以完全代替putchar()函数。函数。 在程序中使用在程序中使用putchar()函数,务必牢记:在程函数,务必牢记:在程 序(或文件)的开头加上编译预处理命令(也称包含序(或文件)的开头加上编译预处理命令(也称包含 命令),即:命令),即: #includ

13、e stdio.h 或或 #include 表示要使用的函数,包含在标准输入输出(表示要使用的函数,包含在标准输入输出(stdio) 头文件(头文件(.h)中。中。(注意注意#号与号与include之间不要留空格)之间不要留空格) 举例:举例: 例例3-1 putchar() 函数的格式和使用方法。函数的格式和使用方法。 #include stdio.h /*编译预处理命令:文件包含编译预处理命令:文件包含*/ void main() char ch1=N, ch2=E, ch3=W; putchar(ch1); putchar(ch2); putchar(ch3);/*输出输出*/ putc

14、har(n); putchar(ch1); putchar(n); /*输出输出ch1的值,并换行的值,并换行*/ putchar(E); putchar(n);/*输出字符输出字符E,并换行并换行*/ putchar(ch3); putchar(n); 程序运行结果如下:程序运行结果如下: NEW N E W 2. 单个字符的输入函数单个字符的输入函数getchar()函数函数 getchar()函数的格式:函数的格式: getchar(); getchar()函数的作用:从系统隐含的输入设备函数的作用:从系统隐含的输入设备 (如键盘)输入一个字符。另外,从功能角度来看,(如键盘)输入一个字

15、符。另外,从功能角度来看, scanf()函数可以完全代替函数可以完全代替getchar()函数。函数。 说明说明: getchar()函数只能用于函数只能用于单个字符的输入单个字符的输入,一次输,一次输 入一个字符。入一个字符。 程序中要使用程序中要使用getchar()函数,必须在程序(或文函数,必须在程序(或文 件)的开头加上编译预处理命令,即:件)的开头加上编译预处理命令,即: #include stdio.h 或或 #include 举例举例: 例例3-2 说明说明getchar()函数的格式和作用。函数的格式和作用。 #include stdio.h/*文件包含文件包含*/ voi

16、d main() char ch; printf(Please input two character: ); ch=getchar();/*输入输入1个字符并赋给个字符并赋给ch */ putchar(ch);putchar(n); putchar(getchar(); /*输入一个字符并输出输入一个字符并输出*/ putchar(n); 程序运行情况如下:程序运行情况如下: Please input two characters: ab a b 格式格式: : putcharputchar( ( chch ) ) 参数参数: : chch为一个字符常量、变量或一个转义字符为一个字符常量、变

17、量或一个转义字符 功能:把字符功能:把字符chch输出到显示器上输出到显示器上 返返回回值:正常,为显示的代码值;出错,为值:正常,为显示的代码值;出错,为EOF(-1)EOF(-1) 字符输出函数字符输出函数 3.2 3.2 字符数据的输入输出字符数据的输入输出 #include #include main()main() char char chch=B;=B; putchar(chputchar(ch); /); /* *输出变量的值字符输出变量的值字符B B* */ / putchar(nputchar(n); /); /* *输出一个换行符输出一个换行符* */ / putchar(

18、Bputchar(B); /); /* *直接输出字符直接输出字符B B* */ / putchar(nputchar(n); /); /* *输出一个换行符输出一个换行符* */ / putchar(0 x42); / putchar(0 x42); /* *使用使用ASCIIASCII值输出字符值输出字符B B* */ / putchar(nputchar(n); /); /* *输出一个换行符输出一个换行符* */ / 运行结果:运行结果:B B B B B B 例3-3 格式格式: :getchargetchar( )( ) 功能:从键盘读一字符功能:从键盘读一字符 返返回回值:正常,

19、返回读取的代码值;出错值:正常,返回读取的代码值;出错, ,返回返回EOF(-1)EOF(-1) #include #include main()main() char c; char c; c= c=getchargetchar(); (); putchar(cputchar(c);); 运行结果:运行结果: 字符输入函数 例3-4 3-3 格式化输入格式化输入/输出函数输出函数 为了让计算机处理各种数据,首先就应该把源为了让计算机处理各种数据,首先就应该把源 数据输入到计算机中;计算机处理结束后,再将数据输入到计算机中;计算机处理结束后,再将 目标数据信息以人能够识别的方式输出。目标数据信

20、息以人能够识别的方式输出。C语言中语言中 的输入输出操作,是由的输入输出操作,是由C语言编译系统提供的库函语言编译系统提供的库函 数来实现。数来实现。 一、格式化输出函数一、格式化输出函数printf printf函数是函数是C语言提供的标准输出函数,语言提供的标准输出函数, printf()函数的作用是向计算机系统默认的输出设函数的作用是向计算机系统默认的输出设 备(一般指终端或显示器)输出一个或多个任意备(一般指终端或显示器)输出一个或多个任意 类型的数据。类型的数据。 1. printf()函数的一般格式函数的一般格式 printf()函数的一般格式如下:函数的一般格式如下: print

21、fprintf(“(“格式字符串格式字符串” ” ,输出项表,输出项表); 例例3-5 已知圆半径已知圆半径radius=1.5,求圆周长和圆面积。求圆周长和圆面积。 #include void main() float radius,length,area,pi=3.1415926; radius=1.5; length=2*pi*radius;/*求圆周长求圆周长*/ area=pi*radius*radius; /*求圆面积求圆面积*/ printf(“radius=%f n”,radius);/*输出圆半径输出圆半径*/ /*输出圆周长、面积输出圆周长、面积*/ printf(“len

22、gth=%7.2f ,area=%7.2f n”,length,area); 程序运行结果如下:程序运行结果如下: radius=1.500000 length= 9.42,area= 7.07 通过上例可以看出,调用通过上例可以看出,调用printf( )函数输出数据时,函数输出数据时, 其输出的格式是由其输出的格式是由printf()函数中双号内的格式字符串来说函数中双号内的格式字符串来说 明的,每个格式说明都必须用明的,每个格式说明都必须用“%”开头,以一个格式字开头,以一个格式字 符作为结束,在此之间可以根据需要插入符作为结束,在此之间可以根据需要插入“宽度说明宽度说明”、 左对齐符号

23、左对齐符号“-”、前导零号、前导零号“0”等。等。 格式:格式:printfprintf(“(“格式控制串格式控制串”,输出表,输出表列列) ) 功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据 返返回回值:正常,返回输出字节数;出错,返回值:正常,返回输出字节数;出错,返回EOF(-1)EOF(-1) 输出表输出表列列:要输出的数据(可以没有,多:要输出的数据(可以没有,多 个时以个时以“,”分隔)分隔) 格式控制串:包含两种信息格式控制串:包含两种信息 格式说明:格式说明: %修饰符修饰符格式字符格式字符,用于指,用于指 定输出格式定输出格式 普通字符或转义序列:原样输出普

24、通字符或转义序列:原样输出 格式字符格式字符 格式输出函数格式输出函数 d,i x,X o u c s e,E f g % 十六进制无符号整数十六进制无符号整数 不带符号十进制整数不带符号十进制整数 十进制整数十进制整数 指数形式浮点小数指数形式浮点小数 单一字符单一字符 字符串字符串 八进制无符号整数八进制无符号整数 小数形式浮点小数小数形式浮点小数 e e和和f f中较短一种中较短一种 百分号本身百分号本身 int a=567;printf ( “%d”,a); int a=255;printf(“%x”,a); int a=65;printf(“%o”,a); int a=567;pri

25、ntf(“%u”,a); char a=65;printf(“%c”,a); printf(“%s”,“ABC”); float a=567.789;printf(“%e”,a); float a=567.789;printf(“%f”,a); float a=567.789;printf(“%g”,a); printf(“%”); 567 ff 101 567 A ABC 5.677890e+02 567.789000 567.789 % 说明说明 格式字符要用小写格式字符要用小写 格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项个数应相同,按先后顺序一一对应 输出转换输出转换

26、:格式字符与输出项类型不一致格式字符与输出项类型不一致,自动按指定格自动按指定格 式输出式输出 例例 main()main() unsigned unsigned intint u=65535; u=65535; printf(”uprintf(”u=%dn,u);=%dn,u); 输出结果:输出结果: u=65535 /u=65535 /* *VCVC环境下环境下* */ / u=-1 u=-1 / /* *TCTC环境下环境下* */ / 例例 intint a=3,b=4; a=3,b=4; printf(“%dprintf(“%d %dn”,a,b); %dn”,a,b); print

27、f(“aprintf(“a=%d , b=%=%d , b=%dn”,a,bdn”,a,b);); 例例 intint a=3,b=4; a=3,b=4; printf(“%dprintf(“%d %dn”,a,b); %dn”,a,b); printf(“aprintf(“a=%d , b=%dn”,a,b);=%d , b=%dn”,a,b); 输出结果输出结果: 3 4: 3 4 a=3, b=4 a=3, b=4 11 11 11 11 11 11 11 1165535 格式字符格式字符 附加格式说明符(修饰符)附加格式说明符(修饰符) .n 对实数对实数,指定小数点后位数指定小数点后

28、位数(四舍五入四舍五入) 对字符串对字符串,指定实际输出位数指定实际输出位数 修饰符修饰符功功 能能 m 输出数据域宽输出数据域宽,数据长度数据长度m,左补空格左补空格;否则按实际输出否则按实际输出 输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐) )- 指定在有符号数指定在有符号数的正数前显示正号的正数前显示正号(+)(+) + 输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填0 0 0 在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导0 0,0 0 x x# 在在d,o,x,ud,o,x,u前,指定输出精度为前,指定输出精度为lon

29、glong型型 在在e,f,ge,f,g前,指定输出精度为前,指定输出精度为doubledouble型型 l 例例 int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f); printf(“%3cn”,ch); 运行运行 1234,1234 结果:结果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a 例例 #include void main() static char a=Hello,w

30、orld!; printf(%sn%15sn%10.5sn%2.5sn%.3sn,a,a,a,a,a); 运行结果:运行结果:Hello,world! Hello,world! Hello Hello Hel 格式修饰符 m和n的应 用举例 例例 int a=1234; float f=123.456; static char c=“Hello,world!”; printf(“%8d,%-8dn”,a,a); printf(“%10.2f,%-10.1fn”,f,f); printf(“%10.5s,%-10.3sn”,c,c); 运行结果:运行结果: 1234,1234 123.46,12

31、3.5 Hello,Hel 格式修饰符格式修饰符“-”的应用举例的应用举例 例例 int a=1234; float f=123.456; printf(“%08dn”,a); printf(“%010.2fn”,f); printf(“%0+8dn”,a); printf(“0+10.2fn”,f); 例例 int a=123; printf(“%o,%#o,%X,%#Xn”,a,a,a,a); 例例 long a=65536; printf(“%d,%8ldn”,a, a); 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 /00001234

32、 /0000123.46 /000+1234 /000+123.56 /173,0173,7B,0X7B /65536, 65536 格式修饰符格式修饰符“0、+”的应用举例的应用举例 格式修饰符格式修饰符“#”的应用举例的应用举例 格式修饰符格式修饰符“l”的应用举例的应用举例 2. 格式字符串的作用格式字符串的作用 “格式字符串格式字符串”也称也称“转换控制字符串转换控制字符串”, 可以包含三种字符:可以包含三种字符: (1)格式指示符。格式指示符的一般形式如下:)格式指示符。格式指示符的一般形式如下: %标志标志宽度宽度.精度精度F|N|h|l类型类型 常用的类型字符如教材常用的类型字符

33、如教材P39P39页表页表3-13-1所示。所示。 表表3-1 3-1 printfprintf( )( )的基本格式码的基本格式码 格式码格式码输出说明输出说明举举 例例输出结果输出结果 d/i带符号十进制定点格式带符号十进制定点格式int a=975311;printf(“%d”,a);975310 u无符号十进制定点格式无符号十进制定点格式int a=975311;printf(“%u”,a);975310 o无符号八进制定点格式无符号八进制定点格式int a=975311;printf(“%o”,a);3560717 x/X无符号十六进制定点格式无符号十六进制定点格式int a=975

34、311;printf(“%x”,a);ee1cf c字符字符int a=68;printf(“%c”,a);D s字符串字符串char s=”abcde”; printf(“%s”,s);abcde f小数形式十进制小数形式十进制double a=123.456;printf(%f,a);123.456000 e/E科学记数法科学记数法double a=123.456;printf(%E,a);1.234560E+002 g/Gf和和e中短者,不印无效中短者,不印无效0double a=123.456;printf(%G,a);123.456 p输出地址,格式由实现定义输出地址,格式由实现定义

35、double a=123.456;printf(%p,0012FF74(a的地址)的地址) %printf(%);% 输出不同类型的数据,要使用不同的类型转换输出不同类型的数据,要使用不同的类型转换 字符。字符。 类型转换字符类型转换字符d以带符号的十进制整数形以带符号的十进制整数形 式输出。式输出。 d 以带符号的十进制形式输出整数(正数不输出符号)以带符号的十进制形式输出整数(正数不输出符号) o 以以8进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符O) x(X) 以以16进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符Ox) u 以无符号

36、以无符号10进制形式输出整数进制形式输出整数 c 以字符形式输出一个字符以字符形式输出一个字符 s 输出字符串输出字符串 f 以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出6位小数位小数 e(E) 以标准指数形式输出单、双精度数,小数位数为以标准指数形式输出单、双精度数,小数位数为6位位 g(G) 选用选用%f或或%e格式中输出宽度较短的一种格式格式中输出宽度较短的一种格式 % 百分号百分号 printfprintf格式字符格式字符 例例3-6 类型转换字符类型转换字符 d 的使用。的使用。 #include void main() int n1=123; long

37、n2=123456; /*用用4种不同格式,输出种不同格式,输出int型变量型变量n1的值的值*/ printf(n1=%d,n1=%5d,n1=%-5d,n1=%2dn,n1,n1,n1,n1); /*用用3种不同格式,输出种不同格式,输出long型变量型变量n2的值的值*/ printf(n2=%ld,n2=%8ld,n2=%5ldn,n2,n2,n2); printf(n1=%ldn,n1); 程序运行结果如下:程序运行结果如下: n1=123,n1=123,n1=123,n1=123 n2=123456,n2=123456,n2=123456 n1=16908411 对于整数,还可用八

38、进制无符号形式(对于整数,还可用八进制无符号形式(%o) (注意注意:这里的这里的%o是小写字母是小写字母o)输出或以十六)输出或以十六 进制无符号形式(进制无符号形式(%x)输出。对于输出。对于unsigned型数型数 据,也可用据,也可用%u格式符以无符号十进制形式输出。格式符以无符号十进制形式输出。 所谓无符号形式是指,不论正数还是负数,所谓无符号形式是指,不论正数还是负数, 系统一律当作无符号整数来输出。系统一律当作无符号整数来输出。 例如:例如: printfprintf( (%d,%o,%x,%un%d,%o,%x,%un,-1,-1,-1,-1);,-1,-1,-1,-1); 显

39、示结果为:显示结果为: -1,37777777777,ffffffff,4294967295-1,37777777777,ffffffff,4294967295 注意注意: 在在TCTC下其结果为:下其结果为:-1,177777,ffff,65535-1,177777,ffff,65535 类型转换字符类型转换字符ff以小数形式、按系统默认的以小数形式、按系统默认的 宽度,输出单精度和双精度实数。宽度,输出单精度和双精度实数。 例例3-7 类型转换字符类型转换字符 f 的使用。的使用。 #include void main( ) float f=123.456; double d1,d2; d

40、1=1111111111111.111111111; d2=2222222222222.222222222; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf(d1+d2=%fn,d1+d2); 程序运行结果如下:程序运行结果如下: 123.456001,123.456001,123.46,123.46 ,123.46 d1+d2=3333333333333.333010 本 例 程 序 的 输 出 结 果 中 , 数 据本 例 程 序 的 输 出 结 果 中 , 数 据 1 2 3 . 4 5 6 0 0 1 和和 33333333

41、33333.333010中的中的001和和010都是无意义的,因为都是无意义的,因为 它们超出了有效数字的范围。它们超出了有效数字的范围。 对于实数,也可使用格式符对于实数,也可使用格式符%e,以标准指数形式输出:以标准指数形式输出: 尾数中的整数部分大于等于尾数中的整数部分大于等于1、小于、小于10,小数点占一位,尾,小数点占一位,尾 数中的小数部分占数中的小数部分占5位;指数部分占位;指数部分占4位(如位(如e-03),),其中其中e 占一位,指数符号占一位,指数占占一位,指数符号占一位,指数占2位,共计位,共计11位。位。 也可使用格式符也可使用格式符%g,让系统根据数值的大小,自动选择

42、让系统根据数值的大小,自动选择 %f或或%e格式、且不输出无意义的零。格式、且不输出无意义的零。 类型转换字符类型转换字符cc输出一个字符(只占一列宽输出一个字符(只占一列宽 度)。度)。 例例3-8 类型转换字符类型转换字符 c 的使用。的使用。 #include void main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); 程序运行结果如下:程序运行结果如下: c=A,A,65 i=65,A 需要强调的是:在需要强调的是:在C语言中,整数可以用字符形式输出,语言中,整数可以用字符形式输出,

43、字符数据也可以用整数形式输出。字符数据也可以用整数形式输出。将整数用字符形式输出将整数用字符形式输出 时,系统首先求该数与时,系统首先求该数与256的余数,然后将余数作为的余数,然后将余数作为ASCII 码,转换成相应的字符输出。码,转换成相应的字符输出。 类型转换字符类型转换字符ss输出一个字符串。输出一个字符串。 例例3-9 类型转换字符类型转换字符 s 的使用。的使用。 #include void main() printf(%s,%5s,%10s,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5sn,Internet,Int

44、ernet,Internet); 程序运行结果如下:程序运行结果如下: Internet,Internet,InternetInter,Inter ,Inter 注意:注意:系统输出字符和字符串时,不输出单引号和双引号。系统输出字符和字符串时,不输出单引号和双引号。 使用说明使用说明 printf()可以输出常量、变量和表达式的值。但格可以输出常量、变量和表达式的值。但格 式控制中的格式说明符,必须按从左到右的顺序,与式控制中的格式说明符,必须按从左到右的顺序,与 输出项表中的每个数据一一对应,否则出错。输出项表中的每个数据一一对应,否则出错。 例如,例如,printf(str=%s, f=%

45、d, i=%fn, Internet, 1.0 / 2.0, 3 + 5, CHINA);是错误的。是错误的。 格式字符格式字符x、e、g可以用小写字母,也可以用大写可以用小写字母,也可以用大写 字母。使用大写字母时,输出数据中包含的字母也大字母。使用大写字母时,输出数据中包含的字母也大 写。除了写。除了x、e、g格式字符外,其它格式字符必须用小格式字符外,其它格式字符必须用小 写字母。写字母。 例如,例如,%f不能写成不能写成%F。 )格式字符紧跟在格式字符紧跟在“%”后面就作为格式字符,后面就作为格式字符, 否则将作为普通字符使用(原样输出)。否则将作为普通字符使用(原样输出)。 例如,例

46、如,“printf(”c=%c, f=%fn“, c, f);”中的第一个中的第一个c 和和f,都是普通字符。都是普通字符。 (2)转义字符转义字符 printf()函数中的函数中的n就是转义字符,输出时产生一个就是转义字符,输出时产生一个 “换行换行”操作。操作。 (3)普通字符普通字符除格式指示符和转义字符之外的其它字除格式指示符和转义字符之外的其它字 符。格式字符串中的普通字符,原样输出。符。格式字符串中的普通字符,原样输出。 例如:例如: printf(radius=%fn, radius);语句中的语句中的radius=, printf(length=%7.2f,area=%7.2f

47、n, length,area);语句中的语句中的 length=、area=等都是普通字符。等都是普通字符。 (4)宽度(长度修饰符)宽度(长度修饰符) 长度修饰符加在长度修饰符加在%和格式字符之间,对于长整型数一定和格式字符之间,对于长整型数一定 要加要加l(long);h可用于短整型可用于短整型(short)或无符号短整型数的输或无符号短整型数的输 出。出。 (5)精度(输出数据所占的宽度)精度(输出数据所占的宽度) 当使用当使用%d、%c、%f、%e、格式说明时,输出数据格式说明时,输出数据 所占的宽度由系统决定(通常取数据本身的宽度,不加空所占的宽度由系统决定(通常取数据本身的宽度,不

48、加空 格),并采用右对齐的形式。也可以用以下的方法来控制格),并采用右对齐的形式。也可以用以下的方法来控制 输出数据所占的宽度。输出数据所占的宽度。 在在%与格式字符之间插入一个整数来指定输出的宽度,与格式字符之间插入一个整数来指定输出的宽度, 但注意不能用变量。如果指定的输出宽度不够,并不影响但注意不能用变量。如果指定的输出宽度不够,并不影响 数据的完整输出,系统会代之以隐含的输出宽度;如果指数据的完整输出,系统会代之以隐含的输出宽度;如果指 定的宽度多于数据实际所需宽度,数据右对齐,左边补以定的宽度多于数据实际所需宽度,数据右对齐,左边补以 空格。空格。 例如:例如: 输出语句输出语句 输

49、出结果输出结果 printf(“%dn”,42); 42 printf(“%5dn”,42); 42 printf(“%fn”,123.45); 123.450000 printf(“%12fn”,123.45); 123.450000 printf(“%5fn”,123.45); 123.450000 对于对于float或或double类型的实型数可以用类型的实型数可以用“%m.nf”的形式的形式 在指定宽度的同时来指定小数位的位数,其中,在指定宽度的同时来指定小数位的位数,其中,m和和n均均 为整数,为整数,m用以指定输出数据总的所占宽度,用以指定输出数据总的所占宽度,n用以指定用以指定

50、小数的位数,即精度。小数的位数,即精度。 也可以用也可以用“%.mf”的形式来指定小数位的位数,这时输的形式来指定小数位的位数,这时输 出数据的宽度由系统决定。若指定出数据的宽度由系统决定。若指定“%.0f”,则不输出小则不输出小 数点和小数部分。数点和小数部分。 例如:例如: 输出语句输出语句 输出结果输出结果 printf(“%7.2fn”,123.5678); 123.57 printf(“%.2fn”,123.5678); 123.57 printf(“%.0fn”,123.5678); 124 (6)标志标志: 用以指定输出数据的对齐方式。用以指定输出数据的对齐方式。 (7)处理其他

51、类型的修饰说明符处理其他类型的修饰说明符 3.输出项表输出项表 输出项表是可选的。如果要输出的数据不止输出项表是可选的。如果要输出的数据不止1个,相邻个,相邻 2个数据之间用逗号分开。下面的个数据之间用逗号分开。下面的printf()函数都是合法的:函数都是合法的: (1)printf(I am a student.n); (2)printf(%d,3+2); (3)printf(a=%f b=%5dn, a, a+3); 必须强调:必须强调:“格式字符串格式字符串”中的格式指示符,必须与中的格式指示符,必须与“输输 出项表出项表”中、输出项的数据类型一致,否则会引起输出错中、输出项的数据类型

52、一致,否则会引起输出错 误。误。 二、格式化输入二、格式化输入scanf()函数函数 在程序中给计算机提供数据,可以用赋在程序中给计算机提供数据,可以用赋 值语句,也可以用输入函数。在值语句,也可以用输入函数。在C语言中,语言中, 可使用可使用scanf()函数,通过键盘输入,给计算函数,通过键盘输入,给计算 机同时提供一个或多个任意的数据。机同时提供一个或多个任意的数据。 1. scanf()函数的一般格式函数的一般格式 scanfscanf(“(“格式字符串格式字符串”, ”, 输入项首地址输入项首地址 表表);); 函数功能:用来从外部输入设备向计算机主函数功能:用来从外部输入设备向计算

53、机主 机输入数据。机输入数据。 举例:举例: 例例3-10 已知圆柱体的底半径已知圆柱体的底半径radius=1.5,高高high=2.0, 求其体积。求其体积。 #include void main() float radius=1.5, high=2.0, pi=3.14159, vol; vol=pi*radius*radius*high; /*求体积求体积*/ printf(“vol=%7.2fn”,vol); /*输出求出的体积输出求出的体积*/ 上例中圆柱体的底半径上例中圆柱体的底半径radius和高和高high均在编均在编 辑程序时就已经固定,若需计算底半径和高为其辑程序时就已经

54、固定,若需计算底半径和高为其 他值的圆柱体的体积时,则需要重新修改程序,他值的圆柱体的体积时,则需要重新修改程序, 所以这种数据的输入方式使得程序不通用。如果所以这种数据的输入方式使得程序不通用。如果 程序改用格式输入函数,则可以改变这种不足。程序改用格式输入函数,则可以改变这种不足。 格式输入函数格式输入函数 格式格式: : scanfscanf(“(“格式控制串格式控制串”,地址,地址列列表)表) 功能:按指定格式从键盘读入数据,存入地址功能:按指定格式从键盘读入数据,存入地址列列表指定的表指定的 存储单元中存储单元中, ,并按回车键结束并按回车键结束 返返回回值:正常,返回输入数据个数值

55、:正常,返回输入数据个数 地址表:变量的地址,常用取地址运算符地址表:变量的地址,常用取地址运算符); 输入:输入:10 10 则则 a=10a=10 例例 scanf(“%x”,); 输入:输入:11 11 则则 a=17a=17 附加格式说明符(修饰符)附加格式说明符(修饰符) l l 修饰符修饰符 功功 能能 h h m m * * 用于用于d,o,xd,o,x前,指定输入为前,指定输入为shortshort型整数型整数 用于用于d,o,xd,o,x前,指定输入为前,指定输入为longlong型整数型整数 用于用于e,fe,f前,指定输入为前,指定输入为doubledouble型实数型实

56、数 指定输入数据宽度,遇空格或不可转换字符则结束指定输入数据宽度,遇空格或不可转换字符则结束 抑制符,指定输入项读入后不赋给变量抑制符,指定输入项读入后不赋给变量 例例 scanf(“%4d%2d%2d”,scanf(“%4d%2d%2d”, 输入输入 19991015 19991015 则则19991999yyyy, 10 , 10 mm, 15 mm, 15 dddd 例例 scanf(“%3d%scanf(“%3d%* *4d%f”,4d%f”, 输入输入 12345678765.43 12345678765.43 则则123123k, 8765.43k, 8765.43f f 例例 s

57、canf(“%2dscanf(“%2d % %* *3d3d %2d”,%2d”, 输入输入 12 12 345345 6767 则则1212a, 67a, 67b b 例例 scanf(“%3c%2c”,scanf(“%3c%2c”, 输入输入 abcdeabcde 则则aac1, d c1, d c2c2 输入分隔符的指定输入分隔符的指定 一般以空格、一般以空格、TAB或回车键作为分隔符或回车键作为分隔符 其它字符做分隔符:格式串中两个格式符间其它字符做分隔符:格式串中两个格式符间 字符字符 例例 scanf(“%d%o%x”,); printf(“aprintf(“a=%d,b=%d,c

58、=%dn”,a,b,c);=%d,b=%d,c=%dn”,a,b,c); 输入输入 123 123 123 123 123 123 输出输出 a=123,b=83,c=291a=123,b=83,c=291 例例 scanf(“%d:%d:%d”,); 输入输入 12:30:45 12:30:45 则则12 12 h, 30 h, 30 m, 45 m, 45 s s 例例 scanf(“%d,%d”, ; 输入输入 a=12,b=24,c=36 a=12,b=24,c=36 说明:说明: 用用“%c”格式符时,空格和转义字符作为有效字符输格式符时,空格和转义字符作为有效字符输 入入 如如 s

59、canf(“%c%c%c”,scanf(“%c%c%c”, 若输入若输入a a b b c c 则则a ac1, c1, c2, b c2, b c3c3 输入数据时,遇以下情况认为该数据结束:输入数据时,遇以下情况认为该数据结束: 遇空格、遇空格、TAB、或回车或回车 遇宽度结束遇宽度结束 遇非法输入遇非法输入 如如 scanf(“%d%c%f”,); 若输入若输入12341234a123o.26 a123o.26 则则 1234 1234 a, a a, a b, 123 b, 123 c c 输入函数留下的输入函数留下的“垃圾垃圾”: 例例 intint x; x; char char

60、chch; ; scanf(“%d”,); chch= =getchargetchar();(); printf(“xprintf(“x=%=%d,chd,ch=%=%dn”,x,chdn”,x,ch);); 执行:执行:123123 输出:输出:x=123,ch=10 x=123,ch=10 例例 intint x; x; char char chch; ; scanf(“%d”,); scanf(“%c”,); printf(“xprintf(“x=%=%d,chd,ch=%=%dn”,x,chdn”,x,ch);); 执行:执行:123123 输出:输出:x=123,ch=10 x=12

温馨提示

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

评论

0/150

提交评论