1、第九讲 顺序程序设计(二),1、格式输入输出函数 2、程序举例,4.5 格式输入输出函数 printf(); scanf();,4.5 .1 printf 函数(格式输出函数),功能:向终端输出若干个任意类型的数据。,(一)printf函数的一般格式,printf(格式控制,输出表列),举例: main( ) int a=3,b=4;printf(“a=%d b=%dn ”, a, b ); 输出结果: a=3 b=4,格式说明(格式字符),普通字符,输出表列,转义字符,main() char c1=a,c2=b,c3=c,c4=101,c5=116;printf(“a%c b%ctc%cta
2、bcn”,c1,c2,c3);printf(“tb%c %c”,c4,c5); ,aa,bb,cc,abc,A,N,printf(格式控制,输出表列),1.格式说明,由“%”和格式字符组成,如%d,%f等。,说明: “输出表列”是需要输出的一些数据(变量、表达式)。 “格式控制”是用双引号括起来的字符也称 “转换控制字符串”,它包括三种信息:,3.转义字符,将后面的字符转换成另外的意义P48表,2.普通字符,即需要原样输出的字符。,(二) 格式字符,对不同类型的数据用不同的格式字符。,1. d格式符 用来输出十进制整数。,(1)%d :按整型数据的实际长度输出。,如:int a=123;pri
3、ntf(“%d”,a); 结果:123,(二) 格式函数,对不同类型的数据用不同的格式字符。,1. d格式符 用来输出十进制整数。,(2)%md:m为指定的输出字段的宽度。若数据位数小于m,则左端补以空格;若大于m,则按实际位数输出。,(二) 格式函数,对不同类型的数据用不同的格式字符。,1. d格式符 用来输出十进制整数。,(3)%ld:输出长整型数据。也可以对长整型数据指定字段宽度。,2. o格式符以8进制数形式输出整数.,输出的数值不带符号,即将符号也一起作为八进制数的一部分输出。,如:int a=-1;printf(“%d,%o”,a,a);结果:-1,177777,o格式符同d格式符
4、一样,可以输出长 整型数据,也可以指定字段宽度。,3. x格式符以16进制数形式输出整数。,同样不会出现负的十六进制数。,4. u格式符以十进制形式输出unsigned型数据,如: main() unsigned int a=65535; int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b); 输出结果: a=-1,177777,ffff,65535b=-2,177776,fffe,65534,5. C格式符用来输出一个字符。,一个整数,只要它的值在0255范围内,也可以用字符形式输出,在输出前,将
5、该整数转换成相应的ASCII字符;反之,一个字符数据也可以用整数形式输出。,如:main() char c=a; int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);输出结果: a,97a,97,6. s格式符用来输出一个字符串。,(1) %s :按原长度输出字符串。 如: printf(“%s”,“CHINA”) 输出结果:CHINA,(2) %ms :输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出,若串长小于m,则左补空格。,(3) %ms :如果串长小于m,则在m列范围内,字符串向左靠,右补空格。,(4) %
6、m.ns :输出占m列,但只取字符串中左端n个字符。输出在列的右侧,左补空格。如果nm,则自动取值,即保证个字符正常输出。,(5) %m.ns , 其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。,7. f格式符以小数形式输出实数。,(1) %f :不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。注意float型和double型数据的有效位数,,如:float x=123456.123;printf(“%f”,x);输出结果:123456.125000,main() double x,y;x=1111111111111.111111111;y=1111111
7、111111.111111111;printf(“%f”,x+y); 2222222222222.222170,(2) %m.nf :指定输出的数据共占m列,其中有n 位小数。若数据长度小于m,则左端补空格。,(3)%m.nf : 与%m.nf 基本相同,只是使输出的数值向左端靠,右端补空格。,8. e格式以指数形式输出实数。,(1) %e,如: printf(“%e”,123.456);输出结果: 1.234560e+002,6位,3位,一般共占13列宽度,(2) % m.ne和 %m.ne: m、n和“”字符含义与前相同。此处n指数据的数字部分(又称尾数)的小数位数。,9. g格式符用来输
8、出实数,它根据数值的大 小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。,二、scanf 函数(格式输入函数),(一),scanf(格式控制,地址表列),10,15,main() int a,b,c;scanf(“%d,%d”, 输入:10,15 输出:a=10,b=15,a,b,如:int a,b,c; scanf(“%d%d%d”, 输入形式: 10,11,12,scanf(“%3d%3d%c”, 输入形式:123456abc结果:a=123 b=456 ch=a,scanf(“%d%d%c”, 输入形式:123 456abc结果:a=123 b=456 ch=
9、a,main() char c1,c2;scanf(“c1=%c,c2=%c”, 输入数据:c1=a,c2=b 输出数据:ab,main() int y,z;float x;char ch;scanf(“%7.2f%d%d%c”,x,y,z,ch);main() int x,y;scanf(“%5d,%3d”, 输入数据: 345,567,有错吗?,说明:,1. %后的“*”附加说明符,用来表示跳过它相应的数据。,如:scanf(“%2d ,%*3d , %2d”, 输入:12 , 456 , 67结果:a=12 b=67,2. 输入数据时不能规定精度。, Scanf(“%7.2f”,3、sc
10、anf(“a=%d, b=%d”,输入:a=12,b=13,4、scanf(“%c%c%c”,输入:a b c,空格和转义字符都作为有效字符输入,main() int a,b; float x,y; char c1,c2;scanf(“a=%d b=%d”, 输入数据:a=10 b=20 10 10 a b 输出数据:10,20,10.00000,10.00000,a,b输入方式2:a=10 b=2010 20a b,main() int a,b; float x,y; char c1,c2;scanf(“a=%d b=%d”, 输入数据:a=10 b=20x=10 y=10c1=a c2=b
11、 输出数据:10,20,10.00000,20.00000,a,b,4.6 顺序结构程序设计,(顺序结构) (选择结构) (循环结构),二、顺序结构程序设计,特点:程序按语句从上到下的排列顺序依此执行,每条语句必须执行且只能执行一次, 没有执行不到或执行多次的语句。,例如:已知圆柱体半径6米,高7米,求体积。,#define PI 3.14159 main( ) float r , h , s , v ;r=6 ;h=7 ;s=PI*r*r ;v=s*h ;printf(“V=%fn”, v); ,例4.10 输入三角形的三条边,求三角形的面积。,#include main() float a,b,c,s,area;scanf(“%f%f%f”, ,例4.11 从键盘输入一个大写字母,要求改用小写字母输出。,分析:已知字符变量c1为大写字母。求解将字符变量c2中放入相应的小写字母。计算公式c2=c1+32 (小写改成大写字母?),例4.12 求ax2+bx+c=0的根,a,b,c由键盘输入,设 b2-4ac0,#include main() float a,b,c,disc,x1,x2,p,q;scanf(“%f%f%f“, ,