顺序结构程序设计(4)课件

上传人:磨石 文档编号:243001481 上传时间:2024-09-13 格式:PPT 页数:30 大小:240.50KB
返回 下载 相关 举报
顺序结构程序设计(4)课件_第1页
第1页 / 共30页
顺序结构程序设计(4)课件_第2页
第2页 / 共30页
顺序结构程序设计(4)课件_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第3章 顺序程序设计,教学目标,1.掌握C语言的输入和输出方法,2.重点掌握并灵活运用printf()和scanf()函数,3.熟练掌握顺序结构的程序设计,3.1 C,语言的基本语句,一个C程序可以由若干个,源程序文件,组成,一个源文件可以由,若干个函数,和,预处理命令,组成以及,全局变量声明,部分组成,一个函数由,数据定义,部分和,执行语句,组成。,程序应该包括,数据描述,(由声明部分来实现)和,数据操作,(由语句实现)。数据描述,主要定义数据结构和定义初值,,数据操作的任务是,对已提供的数据进行加工。,3.1 C语言的基本语句,1、控制语句,完成一定的控制功能,if()else(条件语句),for()(循环语句),while()(循环语句),dowhile()(循环语句),continue (结束本次循环语句),break(中止执行switch语句或者 循环语句),switch(多分支选择语句),goto(转向语句),return(从函数返回语句),括号()表示条件,表示内嵌的,执行语句。,2、函数调用语句,由一次函数调用加上一个分号组成。,printf,(“,hello,”);,3、,表达式语句,由一个表达式构成的一个语旬。,例,a=3;,4、,空语句,表示什么也不做,有时用来作转向点,或循环体。例: ;,5、复合语句,可以用把一些语句括起来成为复合语句,也叫分程序。,例:,p=p*I;,I+;,3.2 数据输入和输出,C,语言无,I/O,关键字,,,I/O,操作由,库,函数实现,#,include ,或,#,include “,stdio.h,”,3.2.1 基本概念,3.2.2 字符数据的输入与输出,输入,格式,:,int,getchar(void,),功能:从键盘读一字符,返值:正常,返回,所输入数据的,ASCII,的值,;,出错,返回,EOF(-1),#include ,main(), int c;,printf(Enter a character:);,c=getchar();,printf(%c-hex%xn,c,c);,运行结果:,Enter a character:A,A-hex41,3.2.2 字符数据的输入与输出,输出,格式,:,int,putchar(c,),参数,: c,为字符常量、变量或表达式,功能:把字符,c,输出到显示器上,返值:正常,为显示的代码值;出错,为,EOF(-1),#include ,main(), int c;,char a;,c=65; a=B;,putchar(c); putchar(n); putchar(a);,运行结果:A,B,格式:printf(“,格式控制串”,输出表),功能:按指定格式向显示器输出数据,返值:正常,返回输出字节数;出错,返回EOF(-1),格式输出函数,输出表:要输出的数据(可以没有,多个时以“,”分隔),可以是变量也可以是常量,也可以是表达式,格式控制串:包含两种信息,格式说明:,%,修饰符,格式字符,,用于指定输出格式,普通字符或转义序列:原样输出,格式字符,d,i,x,X,o,u,c,s,e,E,f,g,%,格式字符:,十六进制无符号整数,不带符号十进制整数,十进制,整型,指数形式浮点小数,单一字符,字符串,八进制无符号整数,小数形式浮点小数,e,和f中较短一种,百分号本身,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.67789e+02,567.789000,567.789,%,说明,格式字符要用小写,格式字符与输出项个数应相同,按先后顺序一一对应,输出转换,:格式字符与输出项类型不一致,自动按指定格式输出,对不同类型的数据用不同的格式字符,例,main(), unsigned int u=65535;,printf(”u=%dn,u);,输出结果:u=-1,例 int a=3,b=4;,printf(“%d %dn”,a,b);,printf(“a=%d , b=%dn”,a,b);,例 int a=3,b=4;,printf(“%d %dn”,a,b);,printf(“a=%d , b=%dn”,a,b);,输出结果:,3 4,a=3, b=4,11 11 11 11 11 11 11 11,65535,附加格式说明符(修饰符),.n,对实数,指定小数点后位数(四舍五入),对字符串,指定实际输出位数,修饰符,功 能,m,输出数据域宽,数据长度m,左补空格;否则按实际输出,输出数据在域内左对齐(缺省右对齐),-,指定在有符号数,的正数前显示正号(+),+,输出数值时指定左面不使用的空位置自动填0,0,在八进制和十六进制数前显示前导0,0x,#,在d,o,x,u前,指定输出精度为long型,在e,f,g前,指定输出精度为double型,l,注意:其中的“0”的作用在前面出现了“-”标志或指定了精度(整数),则忽略该标志,格式字符应用举例,d格式符。用来输出十进制整数。有以下几种用法:,(1)d,按整型数据的实际长度输出。,(2)md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。,(3)ld,输出长整型数据。也可以用m来指定字符宽度,例1:a123,d12345;,printf(“%4d,%4d”,a,b);,例2:long a135790;,printf(“%ld”,a);,printf(“%8ld”,a);,一个int型数据可以用,d或ld格式输出,,一个long型数据应当用,%ld格式输出。,O格式符,以8进制数形式输出整数。,带符号的数将会以何种形式输出?,由于是将内存单元中的各位的值(0或1)按8进制形式输出,因此输出的数值不带符号,即将符号位也一起作为8进制数的一部分输出。,例:int a1,printf(“d,o”,a,a);,输出?,1,177777,请问:是否会输出带符号的8进制整数。,注意:对于长整数(long型)可以用lo格式输 出。同样可以指定字符宽度。,printf(“8o”,a)输出数据为_ _177777,x格式符,以16进制数形式输出整数。,请问:是否会出理负的16进制数?,例如:int a1;,printf(“x,o,d”,a,a,a);,输出结果为 ffff,177777,1,可以用lx输出长整型数,也可以指定输出字段的宽度。如“12x”。,U格式符,用来输出unsigned型数据,即无符号数,以十进制形式输出。,注意:一个有符号整数(int型)也可以用u格式输出;一个unsigned型数据也可以用d,o,x格式输出。,例:main(),unsigned int a65535;,int b2;,printf(“a=%d,%o,%x,%un”,a,a,a,a);,printf(“a=%d,%o,%x,%un”,b,b,b,b);,运行结果:a=-1,177777,ffff,65535,b=-2,177776,fffe,65534,C格式符,用来输出一个字符,例:char c=a;,printf(“%c”,c),一个整数,只要它的值在0255范围内,也可以用字符形式输出,在输出前,将该整数转换成相应的ASCII字符,反之,一个字符数据也可以用整数形式输出。,同样可以指定输出字数宽度。,例char c=a;,printf(“%3c”,c) 输出_ _a,S格式符,用来输出一个字符串。有几种用法:,(1)s,(2)ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出,若串长小于m,则左补空格。,(3)ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。,(4)m.ns,输出m列,但只取字符串中左端n个字符。这个n个字符输出在m列的右侧,左补空格。,(5)m.ns,输出m列,但只取字符串中左端n个字符。这个n个字符输出在m列的左侧,右补空格。如果n大于m,则m自动取n值,即保证n个字符正常输出。,例:,main(),Printf(“%3s,%7.2s,%.4s,%-5.3sn”,”CHINA”,”CHINA”,”CHINA”,”CHINA”,”CHINA”),输出:CHINA,_ _ _ _ _CH,CHIN,CHI_ _,f格式符,用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:,(1)f,不指定字段宽度,由系统自动指定,使,整数,部分全部如数输出,并输出6位小数。,注意:,并非全部数字都是有效数字。单精度实数的有效位数一般为7位。,例:main(),float x,y;,x=111111.111;y=222222.222;,printf(“%f”,x+y),运行结果为:333333.328125,只有前7位数字是有效数字。,双精度也可以用f格式输出,它的有效位数一般为16位,给出小数6位。,(2)m.nf,指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。,(3)m.nf与m.nf基本相同,只是使输出的数值向左端靠,右端补空格。,例:,main(),float f=123.456;,Printf(“%f_ _%10f_ _%10.2f_ _%.2f_ _%-10.2fn”,f,f,f,f,f);,输出结果如下:123.455994_ _123.455994_ _ _ _ _ _123.46 _ _123.46 _ _123.46 _ _ _ _,e格式符,以指数形式输出实数。可用以下形式:,(1)e,不指定输出数据所占的宽度和数字部分小数位数,由系统自动指定给出6位小数,指数部分占5位(如e002),其中e占一位,指数符号占一位,指数占三位。数值按标准化指数形式输出。数值按标准化指数形式输出(即小数点前必须有且只有一位非零数字)。,例如,printf(”e“,123.456);输出?,1.234560e002,请问:用e格式输出的实数共占多少列宽度?,13,(2)m.ne和%m.ne m、n和字符含义与前相同。此处n指数据的数字部分(又称尾数)的小数位数。,例f123.456则,printf(“%e _ _%10e _ _%10.2e _ _%.2e _ _%-10.2e”,f,f,f,f,f);,运行结果?,1.234560e+002 _ _1.234560e+002 _ _ _1.23e+002 _ _1.23e+002 _ _1.23e+002 _,g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的零。,例如:若f123.468,,printf(%f _ _%e _ _%g”,f,f,f);,输出结果:,123.468000 _ _1.234680e002 _ _123.468 _ _ _,使用printf函数时的几点说明,有些系统要求格式字符要用小写字母。如d不能写成D。,可以在printf函数中的”格式控制“字符串内包含转义字符。,上面介绍的d、o、x、u、c、s、f、e、g等字符,如用在后面就作为格式符号。一个格式说明以开头,以上述9个格式字符之一为结束,中间可以插入附加格式字符。,如果想输出字符”“,则应该在”格式控制“字符串中用连续两个表示。,例:printf(”f“,1.0/3);,输出0.333333,注意:不同的系统在实现格式输出时,输出结果可能会有一些小的差别,例如用e格式符输出实数时,有些系统输出的指数部分为4位,而不是5位,前面的数字部分为5位小数而不是6位等等。,格式输入函数,格式: scanf(“,格式控制串”,地址表),功能:按指定格式从键盘读入数据,存入地址表指定的,存储单元中,并按回车键结束,返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符,&,格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,输入:10,则 a=10,例 scanf(“%x”,输入:11,则 a=17,d,i,x,X,o,u,c,s,e,E,f,g,%,格式字符:,十六进制有符号整数,无符号十进制整数,十进制,整型,读入浮点数,读入一字符,字符串,八进制有符号整数,读入浮点数,读入浮点数,百分号本身,附加格式说明符(修饰符),l,修饰符,功 能,h,m,*,用于d,o,x前,指定输入为short型整数,用于d,o,x前,指定输入为long型整数,用于e,f前,指定输入为double型实数,输入数据宽度,到达最大宽度或遇空格则结束,抑制符,指定输入项读入后不赋给变量,说明,标准C在scanf中不使用u说明符,对unsigned型数据,以d或o、x格式输入。,可以指定输入数据所占列数,系统自动按它截取所需数据。,例scanf(“%4d%2d%2d”,输入 19991015,则1999yy, 10 mm, 15 dd,例 scanf(“%3c%2c”,输入 abcde,则ac1, d c2,说明,后的*附加说明符,用来表示跳过它相应的数据。,输入数据时不能规定精度,例如:scanf(“%7.2f”,是不合法的。,例 scanf(“%2d,%*3d,%2d”,输入 12,345,67,则12a, 67b,例 scanf(“%3d%*4d%f”,输入 12345678765.43,则123k, 8765.43f,Scanf函数中的” 格式控制“后面应当是变量地址,而不应是变量名。,如果在”格式控制“字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。,在用”c“格式输入字符时,空格字符和”转义字符“都作为有效字符输入,在输入数据时,遇以下情况时该数据认为结束。,遇空格、TAB、或回车,遇宽度结束,遇非法输入,例:scanf(“ccc”,,输入a_b_c是否可以?,如 scanf(“%d%c%f”,若输入1234a123,o,.26,则 1234 a, a b, 123 c,输入分隔符的指定,一般以空格、TAB,或回车键作为分隔符,其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”,printf(“a=%d,b=%d,c=%dn”,a,b,c);,输入 123 123 123,输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45,则12 h, 30 m, 45 s,程序举例,/*/,#include ,#include ,main(), float a,b,c,s,area;,scanf(%f,%f,%f,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,文件包含预处理命令,变量定义,输入数据,输出数据,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 方案规范


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!