1、知知 识识 回回 顾顾1.1.变量变量(1)(1)变量的定义变量的定义(2)(2)变量的初始化变量的初始化(3)(3)注意事项注意事项2.2.常量常量(1)(1)常量的表示常量的表示:整数常量整数常量,浮点型常量浮点型常量,字符常量和字符串字符常量和字符串(2)(2)常量的用法常量的用法:直接写直接写,定义宏定义宏,定义内存常量定义内存常量问问 题题 引引 出出1.1.数据是程序处理的对象数据是程序处理的对象2.2.很多情况都需要把要处理的数据输入到内存很多情况都需要把要处理的数据输入到内存3.3.往往需要把处理的结果输出到屏幕往往需要把处理的结果输出到屏幕程序程序键盘键盘屏幕屏幕格式化输出函
2、数格式化输出函数:printf:printf格式化输入函数格式化输入函数:scanf:scanf字符输入函数字符输入函数:getchar:getchar字符输出函数字符输出函数:putchar:putchar4.C4.C中没有专门的输入输出语句,输入输出由库函数实现中没有专门的输入输出语句,输入输出由库函数实现主主 要要 内内 容容 输入输入/输出输出1.7 目的要求目的要求 复习思考题复习思考题 上机与编程实践上机与编程实践 独立作业独立作业 小小 结结1.7.1 1.7.1 格式化输出格式化输出1.1.概述概述 (1)(1)由标准库函数由标准库函数printfprintf完成完成(2)(2
3、)包含在头文件包含在头文件stdio.hstdio.h中中(3)(3)功能是把数据按照指定格式输出到功能是把数据按照指定格式输出到屏幕屏幕上上 (4)(4)调用格式调用格式:printf(printf(格式串格式串,输出项列表输出项列表);格格 式式 串串:指定输出格式指定输出格式输出项列表输出项列表:用逗号隔开的多个项,指定输出的数据项用逗号隔开的多个项,指定输出的数据项举举例例若有定义:若有定义:int int a=22;a=22;int int b=-14;b=-14;要把要把a a和和b b中的数据分两行输出到屏幕上中的数据分两行输出到屏幕上 2.2.格式串格式串(重点掌握重点掌握)(
4、1)(1)格式转换说明域格式转换说明域:指定输出数据的格式指定输出数据的格式(2)(2)普通文本普通文本:显示的一般信息显示的一般信息一个格式转换说明域负责一个输出项的类型转换和格式的精确控制一个格式转换说明域负责一个输出项的类型转换和格式的精确控制 宽度宽度 精度精度 标志位标志位(1)(1)格式转换说明域格式转换说明域格式转换码是一个格式转换码是一个小写字母小写字母,用来指定要输出数据的,用来指定要输出数据的类型类型 格式转换码格式转换码一般形式的实数一般形式的实数(7(7位输出精度位输出精度)f f字符串字符串s s单个字符单个字符c c有符号十进制整数有符号十进制整数d d作 用转 换
5、 码%格式转换码格式转换码举举例例若有定义:若有定义:int int x=10;x=10;float float f=-134.56;f=-134.56;charchar c=A;c=A;printf(“%dprintf(“%d,%f%f,%c”,x,f,c);%c”,x,f,c);输出结果是:输出结果是:1010,-134.560000,A-134.560000,Aprintf(“%s”,“Today is fine.”);printf(“%s”,“Today is fine.”);输出结果是:输出结果是:Today is fine.Today is fine.下列语句执行的结果是下列语句执
6、行的结果是:宽度修饰符是用一个整数宽度修饰符是用一个整数m m来指定输出数据占的来指定输出数据占的列宽列宽宽度修饰符u若数字的位数若数字的位数大于大于指定列宽,指定列宽,按原样按原样输出数字输出数字u若数字的位数若数字的位数小于小于指定列宽,指定列宽,左补空格左补空格 举举例例若有定义:若有定义:int int x=123;x=123;语语 句句输出结果输出结果printf(“%2d”,x);123printf(“%6d”,x);123代表空格精度修饰符是以用一个小数精度修饰符是以用一个小数.n.n来指定输出数据的来指定输出数据的精度精度精度修饰符u可以用于可以用于浮点型数据浮点型数据和和字符
7、串字符串u浮点型浮点型:指定输出的指定输出的小数位数小数位数u字符串字符串:指定要输出串的指定要输出串的字符个数字符个数 举举例例若有定义:若有定义:floatfloat x=3.1415926;x=3.1415926;语语 句句输出结果输出结果printf(“%.2f”,x);3.14printf(“%.2s”,“MyBirthday”);Myprintf(“%6.1f”,x);3.1代表空格标志位修饰符有两个标志位修饰符有两个:标志位修饰符标志位修饰符u负号负号(-)(-)用来指定数据的对齐方式是用来指定数据的对齐方式是左对齐左对齐u数字数字0 0 用来对整数用来对整数左补左补0 0输出输
8、出举举例例若有定义:若有定义:floatfloat x=3.1415926;x=3.1415926;intint n=1234;n=1234;语语 句句输出结果输出结果printf(“%5.2f”,x);3.14printf(“%-5.2f”,x);3.14printf(“%6d”,n);1234printf(“%06d”,n);001234printf(“%-6d”,n);1234n文本字符串是格式转换域以外的内容文本字符串是格式转换域以外的内容n文本字符按原样输出文本字符按原样输出n一般用来显示数据外的其他信息一般用来显示数据外的其他信息(2)(2)文本字符串文本字符串举举例例若有定义:若
9、有定义:floatfloat x=3.1415926;x=3.1415926;intint n=1234;n=1234;语语 句句 printf(“x=%.2f,n=%dn”,x,n);输出结果输出结果x=3.14,n=1234(1)(1)输出项列表是要输出的输出项列表是要输出的0 0个或多个个或多个数据项数据项(2)(2)多个时要用多个时要用逗号逗号隔开隔开(3)(3)可以是可以是常量常量、变量变量或或表达式表达式 3.3.输出项列表输出项列表举举例例若有定义:若有定义:floatfloat x=3.1415926;x=3.1415926;intint n=1234;n=1234;print
10、f(“Happy new yearprintf(“Happy new year!”););/*没有输出项没有输出项 */printf(“%f,%d”printf(“%f,%d”,1.551.55,100100););/*两个输出项,它们是常量两个输出项,它们是常量 */printf(“%f,%d”printf(“%f,%d”,x x,n n););/*两个输出项,它们是变量两个输出项,它们是变量 */printf(“%f,%d”printf(“%f,%d”,x+2x+2,n n*3 3););/*两个输出项,它们是算式两个输出项,它们是算式 */(1)(1)格式转换说明符与输出项在顺序和数据类
11、型上必须一一格式转换说明符与输出项在顺序和数据类型上必须一一对应对应和和匹配匹配,否则输出,否则输出错误的值错误的值4.4.注意事项注意事项举举例例若有定义:若有定义:float float x=3.1415926;x=3.1415926;intint n=1234;n=1234;printf(“%d,%fn”,x,y);printf(“%d,%fn”,x,y);/*输出错误,类型不一致输出错误,类型不一致*/(2)(2)格式转换说明域的个数格式转换说明域的个数少于少于输出项时输出项时,多余的项多余的项不输出不输出,反之反之多余的格式转换说明域输出多余的格式转换说明域输出不确定的值不确定的值
12、举举例例若有定义:若有定义:float float x=3.1415926;x=3.1415926;intint n=1234;n=1234;printf(“%.1fprintf(“%.1f,%d”%d”,x x,n n,1000);1000);/*输出输出3.13.1,12341234 */printf(“%.1fprintf(“%.1f,%d%d,%d”%d”,x x,n);n);/*输出输出3.13.1,12341234,不确定的值不确定的值 */1.7.2 1.7.2 格式化输入格式化输入1.1.格式化输入概述格式化输入概述 (1)(1)由标准库函数由标准库函数scanfscanf完成
13、完成(2)(2)包含在头文件包含在头文件stdio.hstdio.h中中(3)(3)功能是把从键盘上输入的数据按照指定格式存储到内存功能是把从键盘上输入的数据按照指定格式存储到内存(4)(4)的调用格式是的调用格式是:scanf(scanf(格式串格式串,输入项列表输入项列表);(5)(5)两个参数两个参数格格 式式 串串:指定输入格式指定输入格式输入项列表输入项列表:用逗号隔开的多个变量的地址用逗号隔开的多个变量的地址举举例例若有定义:若有定义:int int a;a;int int b;b;若要把从键盘输入的若要把从键盘输入的12 2312 23分别存储到分别存储到a a和和b b中中(2
14、)(2)格式转换说明符与输入项在格式转换说明符与输入项在顺序顺序和和类型类型上必须对应一致上必须对应一致2.2.注意事项注意事项(重点掌握重点掌握)举举例例若有定义:若有定义:int int x;x;float float y;y;scanf(“%d%d”,&x,&y);scanf(“%d%d”,&x,&y);/*错误,错误,%d%d与与y y的类型不一致的类型不一致*/(1)(1)输入项必须是输入项必须是变量地址变量地址举举例例若有定义:若有定义:int int x;x;float float y;y;scanf(“%d”,x);scanf(“%d”,x);/*错误,输入项错误,输入项x x
15、不是地址不是地址*/(3)(3)当有几个输入项或连续使用几个当有几个输入项或连续使用几个scanfscanf函数输入多个函数输入多个数值型数值型数数据时据时,在输入数据时可以用在输入数据时可以用空白字符空白字符做数据间的分隔做数据间的分隔 举举例例若有定义:若有定义:int int x;x;int int y;y;要是想给要是想给x x录入录入1212,给,给y y录入录入1515scanf(“%d%d”,&x,&y);scanf(“%d%d”,&x,&y);/*转换符连着写转换符连着写 */scanf(“%d%d”,&x,&y);scanf(“%d%d”,&x,&y);/*转换符间用空白字符
16、分隔转换符间用空白字符分隔 */scanf(“%d”,&x);scanf(“%d”,&x);scanf(“%d”,&y);scanf(“%d”,&y);/*连续用两条独立的语句输入连续用两条独立的语句输入 */输入数据的正确格式是:输入数据的正确格式是:1212空白字符空白字符1515回车回车 强调:强调:空白字符包括空白字符包括空格字符空格字符,回车字符回车字符和和TabTab字符字符 (4)(4)输入输入intint型数据时必须输入整数,输入型数据时必须输入整数,输入floatfloat型的数据可以输入型的数据可以输入整数,也可以输入小数整数,也可以输入小数 举举例例若有语句:若有语句:i
17、nt x;int x;float y;float y;scanf(“%d%f”,&x,&y);scanf(“%d%f”,&x,&y);要给要给x x录入录入1212,给,给y y录入录入-15.0-15.01212-15-15 /*正确的输入,正确的输入,x x存存1212,y y存存-15.0-15.0*/1212-15.0-15.0 /*正确的输入,正确的输入,x x存存1212,y y存存-15.0-15.0*/12.512.5-15.0-15.0 /*错误的输入,错误的输入,x x存存1212,y y存存0.5 0.5*/(5)(5)输入字符型数据时输入字符型数据时,不需要加单引号不需
18、要加单引号,也也不能使用分隔符不能使用分隔符 举举例例若有语句:若有语句:charchar c1,c2;c1,c2;scanf(“%c%c”,&c1,&c2);scanf(“%c%c”,&c1,&c2);假若要分别给假若要分别给c1c1、c2c2录入字符录入字符a a、b b,则:,则:abab /*错误的输入,错误的输入,c1c1存了存了,c2c2存了存了a a*/a ab b /*错误的输入,错误的输入,c1c1存了存了a a,c2c2存了空格存了空格 */?思思考考?若有语句:若有语句:int x;int x;float y;float y;charchar c;c;scanf(“%d%
19、c%f”,&x,&c,&y);scanf(“%d%c%f”,&x,&c,&y);若要给若要给x x、c c、y y录入录入100100、a a、-1.22-1.22,正确的输入方式有哪些?,正确的输入方式有哪些?(6)(6)若格式控制串中使用了一般字符,输入时必须照原样输入若格式控制串中使用了一般字符,输入时必须照原样输入 举举例例若有语句:若有语句:int int x,y;x,y;scanf(“%d scanf(“%d,%d”,&x,&y);%d”,&x,&y);要是想给要是想给x x录入录入1212,给,给y y录入录入1515正确的输入格式是正确的输入格式是:12 12,1515(7)(
20、7)使用使用“%“%*字母字母”可以抑制输入对应类型的数据项可以抑制输入对应类型的数据项 举举例例若有语句:若有语句:int int x,y;x,y;scanf(“%d scanf(“%d%*c c%d”,&x,&y);%d”,&x,&y);要是想给要是想给x x录入录入1212,给,给y y录入录入1515正确的输入格式是正确的输入格式是:12 12任意一个非数字字符任意一个非数字字符1515(8)(8)使用使用%md%md或或%mf%mf控制读入数据的位数,控制读入数据的位数,m m是大于是大于0 0的整数的整数 举举例例若有语句:若有语句:int int x;x;floatfloat y
21、;y;charchar c;c;scanf(“%scanf(“%2d2d%c%c%4f4f”,&x,&c,&y);”,&x,&c,&y);执行时若输入执行时若输入12345.6712345.67回车,则回车,则x x存了存了1212,c c存了存了3 3,y y存了存了45.645.6 (9)(9)输入输入d doubleouble型型的数据必须使用的数据必须使用%lf%lf (10)(10)为了提示用户输入,往往和为了提示用户输入,往往和printfprintf配合使用配合使用 1.7.3 1.7.3 字符输入字符输入/输出输出1.1.概述概述 除了除了printfprintf和和scanf
22、scanf外还有两个函数实现字符输入外还有两个函数实现字符输入/输出输出getchargetchar函数函数:用于单个字符输入用于单个字符输入putcharputchar函数函数:用于单个字符输出用于单个字符输出两个函数的原型包含在两个函数的原型包含在stdio.hstdio.h中中(2)(2)调用格式调用格式2.putchar2.putchar函数函数举举例例若有定义:若有定义:int x=100;int x=100;char c=x61;char c=x61;则下列语句:则下列语句:putchar(A);putchar(A);/*参数为字符型常量,输出字符参数为字符型常量,输出字符A A*
23、/putchar(65);putchar(65);/*参数为整型常量,输出字符参数为整型常量,输出字符A A*/putchar(c);putchar(c);/*参数为字符型变量,输出字符参数为字符型变量,输出字符a a*/putchar(x);putchar(x);/*参数为整型变量,输出字符参数为整型变量,输出字符d d*/(1)(1)函数功能函数功能向屏幕输出一个字符向屏幕输出一个字符putchar(c);putchar(c);(3)(3)说明说明参数参数c c是一个字符型或范围不超过是一个字符型或范围不超过127127的整型量的整型量(2)(2)调用格式调用格式3.getchar3.ge
24、tchar函数函数举举例例若有语句:若有语句:charchar c;c;c=getchar();c=getchar();/*把输入字符的把输入字符的ASCIIASCII码值存到了码值存到了c c*/(1)(1)函数功能函数功能从键盘读入一个字符,成功时返回字符的从键盘读入一个字符,成功时返回字符的ASCIIASCII值值getchar();getchar();(3)(3)说明说明经常把函数的返回值存储到变量经常把函数的返回值存储到变量该函数该函数回车回车才执行,连续使用时要注意回车字符的影响才执行,连续使用时要注意回车字符的影响举举例例若有语句:若有语句:charchar c1 c1,c2;c
25、2;c1=getchar();c1=getchar();c2=getchar();c2=getchar();假如要给假如要给c1c1、c2c2分别录入字符分别录入字符a a、b b,则则:abcabc /*正确的输入正确的输入 */abab /*正确的输入正确的输入 */a a b b /*错误的输入错误的输入,做不到做不到,因为敲回车程序即结束因为敲回车程序即结束 */目目 的的 要要 求求1.1.掌握格式化输入函数掌握格式化输入函数scanfscanf的使用方法的使用方法2.2.掌握格式化输出函数掌握格式化输出函数printfprintf的使用方法的使用方法3.3.掌握字符输入函数掌握字符
26、输入函数getchargetchar的使用方法的使用方法4.4.掌握字符输出函数掌握字符输出函数putcharputchar的使用方法的使用方法复习思考题复习思考题*6.6.使用使用scanfscanf应该注意什么应该注意什么?*7.7.如何使用如何使用getchargetchar和和putcharputchar函数函数?说明:题目前面的说明:题目前面的*代表问题的重要程度代表问题的重要程度*1.1.格式化输出函数格式化输出函数printfprintf的调用格式是什么的调用格式是什么?*2.2.格式化输出函数的格式串中可以包含哪些内容格式化输出函数的格式串中可以包含哪些内容?*3.3.格式转换说明域可以包含什么格式转换说明域可以包含什么?各有什么作用各有什么作用?*4.4.使用使用printfprintf应该注意什么应该注意什么?*5.5.格式化输入函数格式化输入函数scanfscanf的调用格式是什么的调用格式是什么?上机与编程实践上机与编程实践内容内容1 1:独立完成在独立完成在VC+6.0VC+6.0环境下新建、编辑、编译、链接和环境下新建、编辑、编译、链接和运行教材运行教材P013P013【程序程序1-11-1】内容内容2 2:独立完成教材独立完成教材P039-P039-编程题编程题1 1