C语言中输入输出和循环语句详解.ppt
C语言的输入输和循环分支语句详解本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用第4章 顺序结构程序设计 3.1 C语言语句语言语句 3.2 赋值语句赋值语句 3.3 单个字符的输入单个字符的输入/输出函输出函数数3.4格式化输出函数格式化输出函数printf()3.5 格式化输入函数格式化输入函数scanf()3.6 程序的三种基本结构程序的三种基本结构3.7 顺序程序设计举例顺序程序设计举例 首部1控制语句 控制语句完成一定的控制功能。C语言只有9条控制语句,又可细分为三种:(1)选择结构控制语句:if()else,switch()(2)循环结构控制语句:dowhile(),for(),while(),break,continue (3)其他控制语句:goto,returnl按照语句功能或构成的不同,可将C语言语句分为如下五类。2函数调用语句 函数调用语句由一次函数调用加一个分号(语 句 结 束 标 志)构 成。例 如:printf(This is a C Program.);3表达式语句 表达式语句由表达式后加一个分号构成。如:3+2;4空语句 空语句仅由一个分号构成。显然,空语句什么操作也不执行。5复合语句 复合语句由大括号括起来的一组(也可以是一条)语句构成。例如:main()int a,b;if(ab)max=a;min=b;复合语句 printf(%d,b);说明:后面不能有;。语言程序设计 第二章数据描述C3.2赋值语句是由赋值表达式加上一个分号构成。如:a=2;a=2;a=2格式:putchar(c)参数:c为字符变量、整型变量或字符常量。功能:把字符c输出到显示器上3.3 单个字符的输入与输出5C语言无I/O语句,I/O操作由函数实现5预编译命令#include 字符输出函数/*ch3_1.c*/#include main()int c;char a;c=65;a=B;putchar(c);putchar(n);putchar(a);运行结果:A B例格式:getchar()功能:从键盘读一字符字符输入函数 例 /*ch3_4.c*/#include main()char c;c=getchar();putchar(c);运行结果:aa/*ch3_4.c*/#include main()putchar(getchar();格式:printf(“格式控制”,输出表列)功能:按指定格式向显示器输出数据 3.4格式输出函数v输出表列:要输出的数据,可以没有,可以是变量或表达式,(多个数据时以“,”分隔)v格式控制:包含两种信息l普通字符或转义字符:普通字符原样输出,转义字符控制光标或输出字符。l格式说明:%修饰符格式字符 ,用于指定输出格式v格式字符d,ix,Xoucse,Efg,G%格式字符:十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种,不输出无意义的0百分号本身int a=567;printf(“%d”,a);int a=255;printf(“%x”,a);int a=65;printf(“%o”,a);int a=1;printf(“%u”,a);char a=65;printf(“%c”,a);printf(“%s”,“ABC”);float a=567.789printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff10165535AABC5.677890e+002567.789000567.789%l说明u格式字符要用小写(E、X、G除外)u格式字符与输出项个数应相同,按先后顺序一一对应u输出转换:格式字符与输出项类型不一致,自动按指定格式输出main()long int x=-1;double y=9.3;float z=3.1415927;printf(“%.2f,%5.1f,%3.2f”,z,z,z)printf(“%f,%lf,%le,%lg”,y,y,y,y);printf(“%ld,%lu,%lo”,x,x,x);main()int a,b;a=3;b=4;printf(“%d,b=%d”,a,b);附加格式说明符(修饰符).n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-在d,o,x,u前,指定输出精度为long型lmain()long int x=31456;printf(%d,%-8d,%2d,x,x,x);31456,31456,31456 3.5格式输入函数格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束v地址表:变量的地址,常用地址运算符&v格式字符:d,i,o,x,u,c,s,f,e,gscanf(“%c%c”,&c1,&c2);例 scanf(“a=%d,b=%d”,&a,&b);输入 a=12,b=24 例 scanf(“%d,%d”,&a,&b);输入 12,24 v附加格式说明符(修饰符)l修饰符功 能hm*用于d,o,x前,指定输入为short型整数用于d,o,x,u前,指定输入为long型整数用于e,f前,指定输入为double型实数指定输入数据宽度,(为正整数)抑制符,指定输入项读入读入后不赋给不赋给变量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入 19991015 则1999yy,10 mm,15 dd例 scanf(“%3d%*4d%f”,&k,&f);则123k,8765.43f例 scanf(“%3c%2c”,&c1,&c2);输入 abcde 例 short a,b,c;scanf(“%hd,%hd,%hd”,&a,&b,&c);例 double a,b,c;scanf(“%lf,%lf,%lf”,&a,&b,&c);v输入分隔符的指定l指定字符做分隔符:格式串中两个格式符间字符例 scanf(“%d%o%x”,&a,&b,&c);输入 123 123 123 例 scanf(“%d:%d:%d”,&h,&m,&s);输入 12:30:45 则12 h,30 m,45 s例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 bl 输入数据时,如无特殊分隔符,遇以下情况认为该数据结束:遇空格、TAB、或回车 遇宽度结束遇非法输入例 scanf(“%4d%2d%2d”,&yy,&mm,&dd);输入 19991015 则1999yy,10 mm,15 dd如 scanf(“%d%c%f”,&a,&b,&c);若输入1234a123o.26 则 1234 a,a b,123 cv说明:l用“%c”格式符时,空格和转义字符作为有效字符输入如 scanf(“%c%c%c”,&c1,&c2,&c3);若输入abc 则ac1,c2,b c33.6 程序的三种基本结构v三种基本结构l顺序结构AB流程图PAB真假v选择结构v循环结构l当型循环结构l直到型循环结构PA假真假AP真程序中涉及的程序中涉及的、中间量中间量。3.7 程序举例/*ch3_12.c*/#include#include main()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);例 输入三角形边长,求面积输入:3,4,6 输出:a=3.00,b=4.00,c=6.00,s=6.50 area=5.33文件包含预处理命令变量定义输入数据输出数据1.输入量:a,b,c.输出量:area;中间变量:s2.类型:都是float3.主要算法:上面两个公式。4.编程:(1)确定输入量的编程scanf(%f,%f,%f,&a,&b,&c);(2)确定中间量s=1.0/2*(a+b+c);(3)确定算法的编程area=sqrt(s*(s-a)*(s-b)*(s-c);(4)确定输出量的编程printf(area=%7.2fn,area);printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,b,c,s);例 从键盘输入大写字母,用小写字母输出/*ch3_13.c*/#include stdio.hmain()char c1,c2;c1=getchar();printf(%c,%dn,c1,c1);c2=c1+32;printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97PASCII(小写字母小写字母)-ASCII(大写字母大写字母)=321.输入量:c1(大写字母).输出量:c2(小写字母);2.类型:都是char3.主要算法:c2=c1+32。4.编程:(1)确定输入量的编程scanf(“%c”,&c1);或c1=getchar();(2)确定算法的编程c2=c1+32;(3)确定输出量的编程printf(%c,%dn,c2,c2);printf(%c,%dn,c1,c1);ASCII(小写字母小写字母)=32+ASCII(大写字母大写字母)c2=c1+32/*ch3_14.c*/#include#include main()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);输入:a=1,b=3,c=2 输出:x1=-1.00 x2=-2.001.输入量:a,b,c.输出量:x1,x2;中间变量:disc=p=-2a/b,q=2.类型:都是float3.主要算法:x1=p+q,x2=p-q。4.编程:(1)确定输入量的编程scanf(%f,%f,%f,&a,&b,&c);(2)确定中间量disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);(3)确定算法的编程x1=p+q;x2=p-q;(4)确定输出量的编程 printf(nnx1=%5.2fnx2=%5.2fn,x1,x2);b-4ac2 b-4ac2/2a