1、C语句的分类(1)控制语句控制语句 if()else for()while()dowhile()continue break switch goto return(2)函数调用语句函数调用语句printf(“this is a c program);(3)表达式语句表达式语句s=7;表达式表达式“;”(4)空语句空语句;(5)复合语句复合语句 4.2 赋值语句l“=”是一个运算符是一个运算符;l赋值表达式和赋值语句赋值表达式和赋值语句赋值表达式可以包含在其他表达式中赋值表达式可以包含在其他表达式中;if(a=b)0)t=a;4.3 数据输入输出的概念数据输入输出的概念及在语言中的实现及在语言中
2、的实现()输入输出是以计算机为主体而言的()输入输出是以计算机为主体而言的()语言本身不提供输入输出语句()语言本身不提供输入输出语句()在使用语言库函数时,要用预编()在使用语言库函数时,要用预编译命令译命令“includeinclude”#include#include 4.4 字符数据的输入输出1putchar 函数函数作用:向终端输出一个字符作用:向终端输出一个字符一般形式一般形式putchar(字符变量);字符变量);例例.1 .1 输出单个字符输出单个字符#includemain()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putch
3、ar(c);运行结果运行结果BOYputchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);输出结果:输出结果:BOYputchar(101);putchar();putchar(015);输出结果输出结果A A 回车回车getchar函数函数 作用:从终端输入一个字符作用:从终端输入一个字符一般形式:一般形式:getchar()函数值就是从输入设备得到的字符函数值就是从输入设备得到的字符例例.2 输入单个字符输入单个字符#includemain()char c;运行结果运行结果:输入输入a a输出输出a a c=get
4、char();putchar(c);putchar(getchar();printf(“%c”,getchar();4.5 格式输入与输出4.5.1 printf 函数(格式输出函数)函数(格式输出函数)1 printf 函数的一般形式函数的一般形式printf(printf(格式控制,输出表列)格式控制,输出表列)包含两部分:包含两部分:(1 1)格式控制格式控制 :由双引号括起来的字符串:由双引号括起来的字符串 格式说明:由格式说明:由%和格式字符组成和格式字符组成 作用:将输出的数据转换成指定的格式输出作用:将输出的数据转换成指定的格式输出 普通字符:原样输出的字符普通字符:原样输出的字
5、符(2 2)输出表列:需要输出的一些数据输出表列:需要输出的一些数据 一个例子一个例子 printf(“%d%d”,a,b);printf(“a=%d b=%d”,a,b);printf(参数参数1,参数,参数2,参数,参数3参数参数n);输出表列输出表列格式字符格式字符格式说明普通字符格式字符(1)d 格式格式%d:%d:按整型数据的实际长度输出按整型数据的实际长度输出%md%md:m m为指定的输出字段的宽度为指定的输出字段的宽度%ld%ld:输出长整型数据:输出长整型数据,也可以也可以%mld%mld例int a=123,b=12345;printf(“%4d,%4dn”,a,b);lo
6、ng a=135790;printf(“%ld”,a);printf(“%8ld”,a);(2)o(2)o格式格式%o:%o:以八进制的形式输出整数以八进制的形式输出整数例例int a=-1;int a=-1;printf(printf(“%d,%o%d,%o”,a,a);,a,a);(3)x(3)x格式格式%x:以十六进制的形式输出整数例例int a=-1;int a=-1;printf(printf(“%x,%o,%d%x,%o,%d”,a,a,a);,a,a,a);(4)u格式%u:用来输出无符号整型数例main()unsigned int a=65535;int b=-2;printf
7、(“a=%d,%o,%x,%un=%d,%o,%x,%un”,a,a,a,a);,a,a,a,a);printf(“b=%d,%o,%x,%un=%d,%o,%x,%un”,b,b,b,b);,b,b,b,b);(5)c(5)c格式格式%c:用来输出一个字符用来输出一个字符例例4.4 字符数据的输出字符数据的输出main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);(6)s(6)s格式字符格式字符%s:%s:用来输出一个字符串用来输出一个字符串%ms:%ms:占占m m列,左补空列,左补空%-ms%-ms:占:占m
8、m列,右补空列,右补空%m.ns%m.ns:占:占m m列,取左端列,取左端n n个字符个字符,左补空左补空%-m.ns:%-m.ns:占占m m列,取左端列,取左端n n个字符个字符,右补空;右补空;例例4.5 4.5 字符串的输出字符串的输出main()main()printf(printf(“%3s,%7.2s,%.4s,%-%3s,%7.2s,%.4s,%-5.3sn5.3sn”,“CHINACHINA”,“CHINACHINA”,“CHINACHINA”,“CHINACHINA”););7 f格式符 用来输出实数,以小数形式输出用来输出实数,以小数形式输出%f%f 整数部分全部输出整
9、数部分全部输出,小数部分输出小数部分输出6 6位位%m.nf%m.nf 指定输出的数据共占指定输出的数据共占m m列列,其中有其中有n n位小数位小数.%-m.nf%-m.nf 输出的数值向左端靠输出的数值向左端靠,右端补空右端补空.例例4.8 输出实数时指定小数的位数输出实数时指定小数的位数main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);(8)e(8)e格式符格式符 以指数的形式输出实数以指数的形式输出实数%e 不指定输出数据所占的列数不指定输出数据所占的列数,小数位数小数位数一般为一般为6位位,指数部分占
10、指数部分占5位位(如如e+002);例例printf(“%e”,123.456);输出输出:1.234560e+002%m.ne 与%-m.ne :n 小数部分的位数例例:printf(“%e%10e%10.2e%.2e%-10.2en”,f,f,f,f,f);(9)g格式符格式符用来输出实数用来输出实数,取取e,fe,f宽度小者宽度小者,舍去无舍去无效的零效的零.printf(%f%e%g”,f,f,f);(1)d 格式格式%d:%d:按整型数据的实际长度输出按整型数据的实际长度输出%md%md:m m为指定的输出字段的宽度为指定的输出字段的宽度%ld%ld:输出长整型数据:输出长整型数据,
11、也可以也可以%mld%mld(2)o(2)o格式格式%o:%o:以八进制的形式输出整数以八进制的形式输出整数(3)x(3)x格式格式%x%x:以十六进制的形式输出整数:以十六进制的形式输出整数(4)u(4)u格式格式%u%u:用来输出无符号整型数:用来输出无符号整型数(5)c(5)c格式格式%c:%c:用来输出一个字符用来输出一个字符(6)s(6)s格式字符格式字符%s:%s:用来输出一个字符串用来输出一个字符串%ms:%ms:占占m m列,左补空列,左补空%-ms%-ms:占:占m m列,右补空列,右补空%m.ns%m.ns:占:占m m列,取左端列,取左端n n个字符个字符,左补空左补空%
12、-m.ns:%-m.ns:占占m m列,取左端列,取左端n n个字符个字符,右补空;右补空;7 f格式符 用来输出实数,以小数形式输出用来输出实数,以小数形式输出%f%f 整数部分全部输出整数部分全部输出,小数部分输出小数部分输出6 6位位%m.nf%m.nf 指定输出的数据共占指定输出的数据共占m m列列,其中有其中有n n位小数位小数.%-m.nf%-m.nf 输出的数值向左端靠输出的数值向左端靠,右端补空右端补空.(8)e(8)e格式符格式符 以指数的形式输出实数%e 不指定输出数据所占的列数,小数位数一般为6位,指数部分占5位(如e+002);(9)g格式符格式符用来输出实数用来输出实
13、数,取取e,fe,f宽度小者宽度小者,舍去无效的舍去无效的零零.m:m:最小宽度最小宽度n:n:小数的位数,小数的位数,截取的字符个数截取的字符个数说明:(1 1)X X、E E、G G外,其它都是小写外,其它都是小写(2 2)格式控制中包含转义字符)格式控制中包含转义字符(3 3)格式字符:)格式字符:%d%d、o o、x x、u u、c c、s s、f f、e e、g g,可以插入其它字符,可以插入其它字符(4 4)%:输出:输出%4.5.2 scanf函数1 1、一般形式、一般形式scanf(scanf(格式控制,地址表列)格式控制,地址表列)地址表列:有若干个地址组成的表列地址表列:有
14、若干个地址组成的表列.例例4.9 用用scanf函数输入数据函数输入数据main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);输入数据:输入数据:(1 1)两个数据之间用一个或多个空格分开)两个数据之间用一个或多个空格分开;(2 2)用回车键分开)用回车键分开(3 3)跳格键)跳格键tabtab 3 4 5 3 4 5 3(tab)4 5格式说明:1 1:格式字符同:格式字符同printfprintf,2 2、可以指定输入数据所占的列数,自动截取、可以指定输入数据所占的列数,自动截取 scanf(scanf(“%3
15、d%3d%3d%3d”,&a,&b);,&a,&b);scanf(scanf(“%3c%3c”,&ch);,&ch);3 3、%*%*:跳过指定的列数:跳过指定的列数scanf(scanf(“%2d%*3d%2d%2d%*3d%2d”,&a,&b);,&a,&b);12 345 67 12 345 67 a=12 b=67 a=12 b=674 4、输入数据时不能规定精度、输入数据时不能规定精度 scanf(scanf(“%7.2f%7.2f”,&a);,&a);如:如:1234567123456712345.6712345.67 不合法不合法!3 3、使用、使用scanfscanf函数时应注
16、意的问题函数时应注意的问题 (1 1)地址表列)地址表列 (2 2)普通字符原样输入)普通字符原样输入 (3 3)%c%c中,空格和转义字符都作为有效字符输中,空格和转义字符都作为有效字符输入入(4 4)输入数据时,以下情况认为结束:)输入数据时,以下情况认为结束:遇到空格、跳格、遇到空格、跳格、tabtab键键 指定宽度指定宽度 遇非法输入遇非法输入例子scanf(“%d:%d,%d”,&a,&b,&c);scanf(“a=%d:b=%d,c=%d”,&a,&b,&c);scanf(“%c%c%c”,&c1,&c2,&c3);输入:输入:a b cscanf(“%d%c%f”,&a,&b,&
17、c);123a123o.26 4.6 顺序结构程序设计举例顺序结构程序设计举例例例4.10 4.10 输入三角形的三边长输入三角形的三边长,求三角形面积求三角形面积#include#includemain()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);printf(“area=%7.2fn”,area);4.11 从键盘输入一个大写字母,要求改用小写字母输出#includemain()char c1,c2;c1=getchar();printf(“%c,%dn”,c1,c1);c2=c1+32;printf(“%c,%dn”,c2,c2);4.12 求ax2+bx+c=0#includemain()float a,b,c,disc,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f”,&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(“nnx1=%5.2fnx2=%5.2fn”,x1,x2);