《c语言输入输出函数.ppt》由会员分享,可在线阅读,更多相关《c语言输入输出函数.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 第第3 3章章 输入输出函数输入输出函数 3.1 求整数的各位数字和求整数的各位数字和3.2 温度转换温度转换3.3 字母大小写转换字母大小写转换3.4 综合应用实例综合应用实例 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 3.1 求整数的各位数字和求整数的各位数字和3.1.1 3.1.1 3.1.1 3.1.1 程序解析程序解析程序解析程序解析 例例 3-1 3-1 给出一个三位数的整数,求出该整数的给出一个三位数的整数,求出该整数的3 3个数字之和。个数字之和。程序代码程序代码#include#include void
2、main()void main()int x,a,b,c,s;int x,a,b,c,s;printf(“printf(“请输入一个三位数:请输入一个三位数:”);”);scanf(“%3d”,&x);scanf(“%3d”,&x);a=x/100;b=x/10%10;c=x%10;a=x/100;b=x/10%10;c=x%10;s=a+b+c;s=a+b+c;printf(“%d printf(“%d的各位数字之和是的各位数字之和是%dn”,x,s);%dn”,x,s);安 庆 师 范 学 院 计 算 机 与 信 息 学 院 3.1 求整数的各位数字和求整数的各位数字和 printf()函
3、数的功能是向系统显示器输出若干函数的功能是向系统显示器输出若干个任意类型的数据。个任意类型的数据。1.printf()函数调用形式函数调用形式 printf(格式控制字符串,输出列表格式控制字符串,输出列表)调用输入输出函数加头文件调用输入输出函数加头文件#include 注意:对于注意:对于printf()和和scanf(),在,在.C文件文件中可省略中可省略,在在.cpp文件文件中要加上。中要加上。3.1.2 格式化输出函数格式化输出函数 printf()安 庆 师 范 学 院 计 算 机 与 信 息 学 院 格式说明格式说明 一般字符一般字符按原样输出按原样输出转义字符转义字符作用:换行
4、作用:换行输出列表输出列表printf(a=%d n,a);printf函数简例函数简例3.1 求整数的各位数字和求整数的各位数字和 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 格式控制字符串和输出列表都是函数的参数,其中:格式控制字符串和输出列表都是函数的参数,其中:(1)格式控制字符串包括两个信息)格式控制字符串包括两个信息 格式说明符。由格式说明符。由“%”开头,以格式字符结束的一串开头,以格式字符结束的一串字符,如字符,如%d,%c,%f等。作用是将要输出的数据转化等。作用是将要输出的数据转化成指定的格式输出。成指定的格式输出。原样输出字符,含一般字符和转义字符。一般起提原
5、样输出字符,含一般字符和转义字符。一般起提示、分隔数据和换行等作用。如例示、分隔数据和换行等作用。如例3-1中中双引号内的双引号内的nn和和c=c=(printf(“nc=%dn”,c);)(2)输出列表是要输出的)输出列表是要输出的常量、变量、函数、表达式常量、变量、函数、表达式。3.1 求整数的各位数字和求整数的各位数字和 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 格式说明符的一般形式:格式说明符的一般形式:%-+0#整数整数m.整数整数nl或或h 格式字符格式字符 .n修饰符m-+0#l/h对实数对实数,指定小数点后位数指定小数点后位数(四舍五入四舍五入)默认默认6 6位小
6、数位小数对字符串对字符串,指定实际输出位数指定实际输出位数功功 能能 输出数据域宽输出数据域宽,数据长度数据长度m,m,左补空格左补空格;否则按实际输出否则按实际输出输出数据在域内左对齐(缺省右对齐输出数据在域内左对齐(缺省右对齐)指定在有符号数指定在有符号数的正数前显示正号的正数前显示正号(+)(+)输出数值时指定左面不使用的空位置自动填输出数值时指定左面不使用的空位置自动填0 0在八进制和十六进制数前显示前导在八进制和十六进制数前显示前导0 0,0 x0 x在在d,o,x,ud,o,x,u前,指定输出精度为前,指定输出精度为longlong型在型在e,f,ge,f,g前,指定输出精前,指定
7、输出精度为度为doubledouble型;型;h h指定输出短整型数据指定输出短整型数据 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 格式字符表格式字符表格式字符格式字符格式字符含义格式字符含义d或或i表示以十进制形式输出一个带符号的整数表示以十进制形式输出一个带符号的整数o表示以八进制形式输出一个无符号的整数表示以八进制形式输出一个无符号的整数X,x表示以十六进制形式输出一个无符号的整数表示以十六进制形式输出一个无符号的整数u表示以十进制形式输出一个无符号的整数表示以十进制形式输出一个无符号的整数f表示以小数形式输出带符号的实数(包括单、双精度)表示以小数形式输出带符号的实数(包
8、括单、双精度)E,e表示以指数形式输出带符号的实数表示以指数形式输出带符号的实数G,g表表示示选选择择%f或或%e格格式式输输出出实实数数(选选择择占占宽宽度度较较小小的的一一种种格格式式输输出)出)c表示输出一个单字符表示输出一个单字符s表示输出一个字符串表示输出一个字符串注:注:大写字母表示大写字母表示输输出中的字母出中的字母为为大写大写 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()int a,b,c;a=1234;b=5678;c=a+b;printf(a+b=%d+%d=%dn,a,b,c);printf(“a+b=%hd+%hd=%hdn”,a
9、,b,c);printf(a+b=%2d+%2d=%5dn,a,b,c);printf(a+b=%02d+%02d=%05dn,a,b,c);【例【例3-2】分析下面程序运行结果分析下面程序运行结果 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()unsigned short a=65535;short int b=-2;printf(a=%hd,%ho,%hx,%hun,a,a,a,a);printf(b=%hd,%ho,%hx,%hun,b,b,b,b);【例【例3-3】无符号数据的输出】无符号数据的输出 注意:去掉注意:去掉注意:去掉注意:去掉h h
10、h h后的运行结果后的运行结果后的运行结果后的运行结果 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()double x,y,z;x=123.234;y=-0.000345;z=-98.567;printf(“x=%lf,x=%.4lf,x=%2lf,x=%+e n”,x,x,x,x);printf(y=%lf,y=%+lf,y=%len,y,y,y);printf(z=%fn,z);【例【例3-4】分析下面程序运行结果分析下面程序运行结果 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()printf(n%c,a);/*输
11、出单个字符输出单个字符*/printf(n%s,abc);/*输出一个字符串输出一个字符串*/【例【例3-5】分析下面程序运行结果分析下面程序运行结果 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 程序代码程序代码#include int main(void)float F,C;printf(“请输入一华氏温度:请输入一华氏温度:”););scanf(“%f”,&F);C=5.0/9*(F-32);printf(“对应的摄氏温度是对应的摄氏温度是%fn”,C);3.2.1 3.2.1 3.2.1 3.2.1 程序解析程序解析程序解析程序解析 例例 3-6 3-6 输入一个华氏温度,要
12、求输出转换后的摄氏温度。输入一个华氏温度,要求输出转换后的摄氏温度。3.2 求华氏温度对应的摄氏温度求华氏温度对应的摄氏温度 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 3.2.2 格式化输入函数格式化输入函数scanfscanfscanf()scanf()函数是从键盘上将数据按用户指定的格式输入函数是从键盘上将数据按用户指定的格式输入并赋给指定变量。并赋给指定变量。1.1.函数调用形式函数调用形式 scanf scanf(格式控制字符串,地址列表);(格式控制字符串,地址列表);格式控制字符串的定义与使用方法和格式控制字符串的定义与使用方法和printfprintf函数相似,函数
13、相似,但不能显示非格式字符串,即不能显示提示字符串。但不能显示非格式字符串,即不能显示提示字符串。地址列表是要赋值的各变量地址,地址是由地址运算符地址列表是要赋值的各变量地址,地址是由地址运算符“&”“&”后跟变量名组成,如后跟变量名组成,如&x&x表示变量表示变量x x的地址。的地址。安 庆 师 范 学 院 计 算 机 与 信 息 学 院 格式说明符以格式说明符以%开始,后面跟一个格式符,中间可以有若干个附开始,后面跟一个格式符,中间可以有若干个附加字符,一般形式为:加字符,一般形式为:%输入数据宽度输入数据宽度m长度长度 类型类型:表示输入的数值不赋给相应的变量,即跳过该数据不读。:表示输
14、入的数值不赋给相应的变量,即跳过该数据不读。输入数据宽度输入数据宽度m:表示按十进制正整数:表示按十进制正整数m的宽度输入数据。的宽度输入数据。长度长度:长度格式符为:长度格式符为l和和h,l表示输入长整型数据或双精度实型表示输入长整型数据或双精度实型数据;数据;h表示输入短整型数据。表示输入短整型数据。类型:是格式说明符中必须要有的,其格式符的意义与类型:是格式说明符中必须要有的,其格式符的意义与printf函函数基本相同,具体如表数基本相同,具体如表3-3所示。所示。2.格式说明符格式说明符 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 scanf 函数常用类型格式符函数常用类型
15、格式符格式字符格式字符格式字符含义格式字符含义d(i)d(i)表示以十进制形式输入一个整数表示以十进制形式输入一个整数o o表示以八进制形式输入一个整数表示以八进制形式输入一个整数x(X)x(X)表示以十六进制形式输入一个整数表示以十六进制形式输入一个整数u u表示以十进制形式输入一个无符号的整数表示以十进制形式输入一个无符号的整数f f或或e(E)e(E)表表示示输输入入一一个个实实数数,可可以以是是小小数数形形式式或或指指数形式数形式g(G)g(G)与与f f或或e e的作用相同的作用相同c c表示输入一个字符表示输入一个字符s s表示输入一个字符串表示输入一个字符串 安 庆 师 范 学
16、院 计 算 机 与 信 息 学 院 例例3-7 按指定宽度输入整数按指定宽度输入整数#include main()int a,b,c;printf(“请输入请输入10位数:位数:”););/*按长度按长度m进行输入进行输入*/scanf(%3d%3d%4d,&a,&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()double a,b,c;printf(请输入两个双精度数:请输入两个双精度数:);scanf(%lf,%lf,&a,&b);/*按双精度进行输按双精度进行输入入*/c=a*b;
17、printf(na*b=%lf*%lf=%len,a,b,c);例例3-8 double 型数据的输入输出型数据的输入输出 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include void main()char c1,c2;printf(“请输入两个字符数:请输入两个字符数:)scanf(%c%c,&c1,&c2);printf(“c1=%c,c2=%cn,c1,c2);例例3-9 字符型数据的输入输出字符型数据的输入输出 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()int x,y;scanf(%2d%*3d%4d,&x,&y);/*注意
18、注意%*3d的作用的作用*/printf(nx=%d,y=%d n,x,y);例例3-10 格式符格式符*的作用的作用表示跳过表示跳过表示跳过表示跳过它指定的数据它指定的数据它指定的数据它指定的数据 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 注意注意(1)scanf函数中的函数中的“格式控制字符串格式控制字符串”后面应该是后面应该是变量地址变量地址,而,而不应是变量名。如不应是变量名。如scanf(“%d,%d”,a,b);是错误的,是错误的,&不能少不能少。(2)输入数据时)输入数据时不能规定数据的精度不能规定数据的精度。如。如scanf(%8.2f,&a);是不合法的。是不合
19、法的。(3)在)在“格式控制字符串格式控制字符串”中除格式说明符外,若有其他字符,中除格式说明符外,若有其他字符,则在输入数据时在对应位置上应输入这些字符。则在输入数据时在对应位置上应输入这些字符。例如例如:scanf(a=%d,b=%d,&a,&b);则键盘输入:则键盘输入:a=12,b=-2 其他任何输入形式都不正确。其他任何输入形式都不正确。安 庆 师 范 学 院 计 算 机 与 信 息 学 院 (4)输入数据时,遇以下情况认为该数据输入结束:)输入数据时,遇以下情况认为该数据输入结束:按指定的宽度结束;按指定的宽度结束;遇空格,或遇空格,或“回车回车”键,或键,或“Tab”键;键;遇非
20、法输入。遇非法输入。(5)在用)在用“%c”“%c”格式输入字符时,所有输入的字符格式输入字符时,所有输入的字符(包括空格字符和(包括空格字符和“转义字符转义字符”)都作为有效字符。)都作为有效字符。(6)当输入的数据与输出的类型不一样时,虽然编译)当输入的数据与输出的类型不一样时,虽然编译没有提示出错,但结果将不正确。没有提示出错,但结果将不正确。安 庆 师 范 学 院 计 算 机 与 信 息 学 院 /*输入输出类型不一致输入输出类型不一致*/#include main()int a;scanf(%hd,&a);printf(a=%dn,a);例例3-11 分析下面程序分析下面程序 安 庆
21、 师 范 学 院 计 算 机 与 信 息 学 院 C C语言为字符定义了输入函数语言为字符定义了输入函数getchar()getchar()和输出函数和输出函数putcharputchar()()。在使用这两个函数时,程序的头部。在使用这两个函数时,程序的头部一定要一定要加上文件加上文件包含命令:包含命令:#include 1.字符输入函数字符输入函数getchar()getchar()的功能是从标准设备(键盘)上读入一个字的功能是从标准设备(键盘)上读入一个字符。其一般调用形式符。其一般调用形式 getchar();语句语句ch=getchar()ch=getchar()和和 scanf(“
22、%c”scanf(“%c”,&ch);&ch);功能相功能相同同3.2 字母大小写转换字母大小写转换 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 3.2 字母大小写转换字母大小写转换3.3.1 3.3.1 3.3.1 3.3.1 程序解析程序解析程序解析程序解析 例例 3-12 3-12 输入一个英文小写字母,输出该字母所对应的大写字母。输入一个英文小写字母,输出该字母所对应的大写字母。程序代码程序代码#include#include void main()void main()char c1;char c1;printf(“printf(“请输入一小写字母:请输入一小写字母:”)
23、;”);c1=getchar();c1=getchar();/*/*与与scanf(“%c”,&c1);scanf(“%c”,&c1);等价等价*/*/c1=c1-32;c1=c1-32;/*/*将小写字母转换为大写字母将小写字母转换为大写字母*/*/printf(“printf(“大写字母是大写字母是%cn”,c1);%cn”,c1);安 庆 师 范 学 院 计 算 机 与 信 息 学 院 C C语言为字符定义了输入函数语言为字符定义了输入函数getchar()getchar()和输出函数和输出函数putcharputchar()()。在使用这两个函数时,程序的头部。在使用这两个函数时,程序
24、的头部一定要一定要加上文件加上文件包含命令:包含命令:#include 1.字符输入函数字符输入函数getchar()getchar()的功能是从标准设备(键盘)上读入的功能是从标准设备(键盘)上读入一个一个字字符。其一般调用形式符。其一般调用形式 getchar();语句语句ch=getchar()ch=getchar()和和 scanf(“%c”scanf(“%c”,&ch);&ch);功能相功能相同同3.2 字母大小写转换字母大小写转换 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()char c1,c2;printf(“请输入两个字符:请输入两个字符
25、:”);c1=getchar();c2=getchar();/*和和scanf(“%c”,&c2)等价等价*/printf(%c,%cn,c1,c2);【例【例3-13】字符输入函数的使用字符输入函数的使用 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 2.2.字符输出函数字符输出函数putchar()putchar()字符输出函数字符输出函数putchar()putchar()的功能是向标准输出设备的功能是向标准输出设备(显示器)输出(显示器)输出一个一个字符。调用形式:字符。调用形式:putchar(c);其中:其中:c c是参数,是参数,整型或字符型整型或字符型。当是整数时,输
26、。当是整数时,输出以该数值作为出以该数值作为ASCIIASCII码所对应字符;当是字符时,直码所对应字符;当是字符时,直接输出字符常量。接输出字符常量。putchar(c)和和 printf(“%c”printf(“%c”,c)c)功能相同功能相同 安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()char x,y,z;x=a;y=+;z=b;putchar(x);putchar(y);putchar(z);putchar(132);putchar(n);printf(“%c%c%c132n”,x,y,z);【例【例3-14】字符输出函数的使用】字符输出函数的
27、使用 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例【例3-15】从键盘上输入两个整数放入变量】从键盘上输入两个整数放入变量a,b中,中,编程将这两个变量中的数据交换。编程将这两个变量中的数据交换。【分析分析】两个数据交换,不能直接写成】两个数据交换,不能直接写成a=b;b=a;a=b;b=a;,因为当执行,因为当执行a=b;a=b;后,变量后,变量a a中的原值就被中的原值就被“冲冲”掉了,而与变量掉了,而与变量b b中的值相中的值相等,因此不能实现交换。正确的做法是另定义一个变量(假设等,因此不能实现交换。正确的做法是另定义一个变量(假设是是c c)作为暂存单元,在执行)作为
28、暂存单元,在执行a=b;a=b;之前,先将变量之前,先将变量a a的值放入的值放入c c中中保存起来,然后执行保存起来,然后执行a=b;a=b;,最后再执行,最后再执行b=c;b=c;,由于,由于c c中保存的是中保存的是a a的值,这样就将原来的值,这样就将原来a a的值赋给了的值赋给了b b,从而实现了两个变量中的,从而实现了两个变量中的数据交换。数据交换。3.4 综合应用实例综合应用实例 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 程序程序#include main()int a,b,c;a=3;b=5;c=a;a=b;b=c;printf(a=%d,b=%dn,a,b);3
29、5a3cb变量交换变量交换,可不用中间变量可不用中间变量,用如下方法用如下方法:(1)a=a+b;b=a-b;a=a-b;(2)a=ab;b=ab;a=ab;安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include#include main()float a,b,c,s,area;scanf(%f%f%f,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c);printf(na=%.2f,b=%.2f,c=%.2fn,a,b,c);printf(narea=%.3fn,area);【例【例3-16】输入三角形的三条边,编程求该三角
30、形的面积】输入三角形的三条边,编程求该三角形的面积 安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例【例3-17】编程求方程的解编程求方程的解#include#include main()float a,b,c,d,x1,x2;a=3;b=-5;c=-7;d=b*b-4*a*c;x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%.4f,x2=%.4fn,x1,x2);安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例【例3-18】分析下面程序的运行结果分析下面程序的运行结果#include main()int x=1
31、,y=5;printf(x=%d,y=%d,x,y);【分析分析】本程序格式控制字符串中,有两个连续的】本程序格式控制字符串中,有两个连续的%。前面。前面已经讲过,已经讲过,两个连续的两个连续的%表示输出一个表示输出一个%,因此变量,因此变量x,y没没有对应的输出格式,只能输出双引号中的字符。有对应的输出格式,只能输出双引号中的字符。安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例【例3-19】分析下面程序的运行结果分析下面程序的运行结果#include main()int a,b;a=0 x41;/*65 */b=+a;/*66 */printf(%d,%dn,a-,-b);pr
32、intf(%c,%cn,+a,b+);安 庆 师 范 学 院 计 算 机 与 信 息 学 院 【例【例3-20】从键盘上输入一个英文小写字母,编程从键盘上输入一个英文小写字母,编程输出该字母所对应的输出该字母所对应的ASCIIASCII码和所对应的大写字母码和所对应的大写字母【分析分析】在】在ASCIIASCII字符集中,大写字母字符集中,大写字母AZAZ是连续的是连续的(ASCIIASCII值从值从65906590),小写字母),小写字母azaz也是连续的也是连续的(ASCIIASCII值从值从9712297122)。)。每对字母的每对字母的ASCIIASCII码值差是相同的,都是码值差是相
33、同的,都是3232,即,即a-Aa-A、b-Bb-B、c-Cc-C、z-Zz-Z都是都是3232。所以将小写字母的。所以将小写字母的ASCIIASCII码值减码值减去去3232,则得到的是所对应的大写字母,则得到的是所对应的大写字母ASCIIASCII码值。码值。同理,将大写字母的同理,将大写字母的ASCIIASCII码值加上码值加上3232,则得到的是,则得到的是所对应的小写字母所对应的小写字母ASCIIASCII码值。码值。安 庆 师 范 学 院 计 算 机 与 信 息 学 院#include main()char c1,c2;c1=getchar();/*从键盘获得一个小写字母从键盘获得一个小写字母*/c2=c1-32;/*将小写字母转化为大写字母将小写字母转化为大写字母*/printf(%d,%cn,c1,c1);putchar(c2);