Chapter 04 顺序程序设计

上传人:sx****84 文档编号:242969596 上传时间:2024-09-13 格式:PPT 页数:28 大小:502.50KB
返回 下载 相关 举报
Chapter 04 顺序程序设计_第1页
第1页 / 共28页
Chapter 04 顺序程序设计_第2页
第2页 / 共28页
Chapter 04 顺序程序设计_第3页
第3页 / 共28页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章,最简单的,C,顺序程序设计,1,程序对数据的处理流程:,程序的主要功能就是对数据的处理,其整个流程主要包括数据的输入、数据的处理、数据的输出。,数据处理,数据输入,数据输出,2,程序的结构:,写文章有文章的结构,建房子有房子的结构,制造机械产品有机械产品的结构,那么编写程序是否有程序的结构呢?,程序结构,顺序结构,选择结构,循环结构,YES!,本章讨论,第,5,章讨论,第,6,章讨论,3,4.1,格式化输出,printf,一般格式,printf (,格式控制字符串,,表达式,1,,表达式,2,,,,表达式,n);,功能,按照,“,格式控制字符串,”,的要求,将,表达式,1,,表达式,2,,,,表达式,n,的值显示在计算机屏幕上。,说明,格式控制字符串用于指定输出格式。它包含两类字符:,常规字符:,包括可显示字符和用转义字符表示的字符。,格式控制符:,以,%,开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:,%,修饰符,格式转换字符,例:,long int x = 0x8AB6;,printf (,“,The Value of x is,%ld,n,”, x);,4,printf,使用时的注意事项,(1),格式控制字符串可以不包含任何格式控制符。,(2),当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:,从左到右的格式控制符对应从左到右的表达式。,(3),如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。,(4),不同类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。,printf (,“,how are you?n,”,);,/,只有一个字符串参数,,输出为:,how are you?,printf (,“,how old are you?n,”, 20);,/,带有两个参数,,20,没有意义,,输出为:,how old are you?,已,知:,int a = 2;,函数调用:,printf(,a * a =,%d, a + 5 =,%d,n, a * a, a + 5);,实际输出:,a * a = 4, a + 5 = 7,printf (5 + 3 = %d, 5 - 3 = %d, 5 * 3 = %d, 5 + 3, 5 - 3);,输出结果将是:,5 + 3 = 8,,,5 3 = 2,,,5 * 3 = -28710,输出随机,char ch = A;,printf (ch = %c, ch);,/,输出结果:,ch = A,(以字符形式输出),printf (ch = %d, ch);,/,输出结果:,ch = 65,(以,A,字符的,ASCII,码形式输出),5,printf,函数中的格式转换字符及其含义,格式转换符,含,义,对应的表达式数据类型,%d,或,%i,以十进制形式输出一个整型数据。,例如:,int a = 20;,printf (%d, a); /,输出,20,有符号整型,%x,,,%X,以十六进制形式输出一个无符号整型数据。,例如:,int a = 164;,printf (%x, a); /,输出,a4,printf (%X, a); /,输出,A4,无符号整型,%o (,字母,o ),以八进制形式输出一个无符号整型数据。,例如:,int a = 164;,printf (%o, a); /,输出,244,无符号整型,%u,以十进制形式输出一个无符号整型数据。,例如:,int a = -1;,printf (%u, a); /BC,下输出,65535,,,VC,下,4294967295,无符号整型,%c,输出一个字符型数据。,例如:,char ch = A;,printf (%c, ch); /,输出,A,字符型,6,printf,函数中的格式转换字符及其含义,格式转换符,含,义,对应的表达式数据类型,%s,输出一个字符串。,例如:,printf (my name is %s, wangjinghua);,/,输出,my name is wangjinghua,字符串,%f,以十进制小数形式输出一个浮点型数据。,例如:,float f = -12.3;,printf (%f, f); /,输出,-12.300000,浮点型,%e,,,%E,以指数形式输出一个浮点型数据。,例如:,float f = 1234.8998;,printf (%e, f); /,输出,1.234900e+003,printf (%E, f); /,输出,1.234900E+003,浮点型,%g,,,%G,按照,%f,或,%e,中输出宽度比较短的一种格式输出。,浮点型,%p,以主机的格式显示指针,即变量的地址。,例如:,int a = 2;,printf (,“,%p,”, /BC,下输出,FFD8,,,VC,下,0012FF7C,指针类型,7,1.,整数的输出,有符号,整数的输出,一般形式:, ,:,表示可选项,可缺省。,:,表示输出的数据左对齐,缺省时是右对齐。,:,输出正数时,在数的前面加上号。,数字,0,:,右对齐时,如果实际宽度小于,width,,则在左边的空位补,0,。,width,:,无符号整数,表示输出整数的最小域宽(即占屏幕的多少格)。若实际宽度超过了,width,,则按照实际宽度输出。,.precision,:,无符号整数,表示至少要输出,precision,位。若整数的位数大于,precision,,则按照实际位数输出,否则在左边的空位上补,0,。,字母,l,:,如果在,d,的前面有字母,l,(,long,),表示要输出长整型数据。,字母,h,:,如果在,d,的前面有字母,h,(,short,),表示要输出短整型数据。,说明:,%- + 0 width .precision l h d,辅助格式控制字符(修饰符),8,【,例,】,有符号整数的格式化输出,#include ,int main ( ),int a = 123;,long L = 65537;,printf ( 123456789n);,printf (a=%d-(a=%d)n, a);,printf (a=%6d-(a=%6d)n, a);,printf (a=%+6d-(a=%+6d)n, a);,printf (a=%-6d-(a=%-6d)n, a);,printf (a=%-06d-(a=%-06d)n, a);,printf (a=%+06d-(a=%+06d)n, a);,printf (a=%+6.6d-(a=%+6.6d)n, a);,printf (a=%6.6d-(a=%6.6d)n, a);,printf (a=%-6.5d-(a=%-6.5d)n, a);,printf (a=%6.4d-(a=%6.4d)n, a);,printf (L=%ld-(L=%ld)n, L);,printf (L=%hd-(L=%hd)n, L);,123456789,a=123-(a=%d),a= 123-(a=%6d),a= +123-(a=%+6d),a=123 -(a=%-6d),a=123 -(a=%-06d),a=+00123-(a=%+06d),a=+000123-(a=%+6.6d),a=000123-(a=%6.6d),a=00123 -(a=%-6.5d),a= 0123-(a=%6.4d),L=65537-(L=%ld),L=1-(L=%hd),运行结果:,L,是一长整型数,65537,,其值为十六进制,0X0001,0001,,所以要将其转换成短整型,即取低,16,位,0x0001,,将其输出,故输出为,1,。,Why?,9,1.,整数的输出,无符号,整数的输出,一般形式:, ,:,表示可选项,可缺省。,|,:,表示互斥关系。,#,:,表示当以八进制形式输出数据(,%o,)时,在数字前输出,0,;当以十六进制形式输出数据(,%x,或,%X,)时,在数字前输出,0x,或,0X,。,.precision,的含义与前面介绍的相同,但要注意,在,TC,和,BC,下,,precision,所指定的位数也包含了,0x,或,0X,所占的位数,可在,VC,下,则不包含,0x,或,0X,所占的位数。,其它字段的含义与前面介绍的相同。,说明:,%- # 0 width .precision l h u | o | x | X,辅助格式控制字符(修饰符),10,【,例,】,无符号整数的格式化输出,a=-1,a=4294967295,-(a=%d, a=%u),a=ffff,a=FFFFFFFF,-(a=%hx, a=%X),u=77777, u=7FFF-(u=%o, u=%X),u=0X00007FFF-(u=%#010X),u=0X0000007FFF,-(u=%#10.10X),L=FFFF8000-(L=%lX),L=0X00FFFF8000,-(L=%-#14.10X),#include ,int main ( ),int a = -1;,unsigned u = 32767;,unsigned long L = -32768;,printf (a=%d, a=%u-(a=%d, a=%u)n, a, a);,printf (a=%hx, a=%X-(a=%hx, a=%X)n, a, a);,printf (u=%o, u=%X-(u=%o, u=%X)n, u, u);,printf (u=%#010X-(u=%#010X)n, u);,printf (u=%#10.10X-,(u=%#10.10X)n, u);,printf (L=%lX-,(L=%lX)n,L);,printf (L=%-#14.10X-,(L=%-#14.10X)n, L);,11,2.,实数的输出,一般形式:, ,:,表示可选项,可缺省。,|,:,表示互斥关系。,#,:,必须输出小数点。,.precision,:,规定输出实数时,小数部分的位数。,l,:,输出,double,型数据(缺省时也是输出,double,型数据)。,L,:,输出,long double,型数据。,其它字段的含义与前面介绍的相同,。,说明:,%- + # 0 width .precision l | L f | e | E | g | G,辅助格式控制字符(修饰符),12,【,例,】,实数的格式化输出,#include ,int main ( ),double f = 2.5e5;,printf ( 123456789n);,printf (f=%15f-(f=%15f)n, f);,printf (f=%015f-(f=%015f)n, f);,printf (f=%-15.0f-(f=%-15.0f)n, f);,printf (f=%#15.0f-(f=%#15.0f)n, f);,printf (f=%+15.4f-(f=%+15.4f)n, f);,printf (f=%15.4E-(f=%15.4E)n, f);,123456789,f= 250000.000000-(f=%15f),f=00250000.000000-(f=%015f),f=250000 -(f=%-15.0f),f= 250000.-(f=%#15.0f),f= +250000.0000-(f=%+15.4f),f= 2.5000E+005-(f=%#15.4E),运行结果:,13,3.,字符和字符串的输出,一般形式:, ,:,表示可选项,可缺省。,.precision,:,表示只输出字符串的前,precision,个字符。,其它字段的含义与前面介绍的相同。,说明:,输出字符:,%- 0 width c,辅助格式控制字符(修饰符),输出字符串,:,%- 0 width .precision s,辅助格式控制字符(修饰符),14,【,例,】,字符及字符串的格式化输出,123456789,ch=A-(ch=%c),ch= A-(ch=%4c),ch=A -(ch=%-4c),ch=000A-(ch=%04c),st=QFNU-(st=%s),st= QFNU-(st=%6s),st=000QFN-(st=%06.3s),运行结果:,#include ,int main ( ),char ch = A;,printf ( 123456789n);,printf (ch=%c-(ch=%c)n, ch);,printf (ch=%4c-(ch=%4c)n, ch);,printf (ch=%-4c-(ch=%-4c)n, ch);,printf (ch=%04c-(ch=%04c)n, ch);,printf (st=%s-(st=%s)n, “QFNU);,printf (st=%6s-(st=%6s)n, “QFNU);,printf (st=%06.3s-(st=%06.3s)n, “QFNU);,15,4.,辅助格式控制符,(,修饰符,),小结,修饰符,功,能,例,子,width,输出数据域宽,数据长度,width,,补空格;否则按实际输出,%4d,:,表示输出至少占,4,格,.precision,对于整数:,表示至少要输出,precision,位,当数据长度小于,precision,,左边补,0,%6.4d,:,表示至少要输出,4,位数,对于实数:,指定小数点后位数,(,四舍五入,),%6.2f,:,表示输出,2,位小数,对于字符串:,表示只输出字符串的前,precision,个字符,%.3s,:,表示输出字符串前,3,个字符,输出数据在域内左对齐(缺省右对齐),%-16d,:,表示输出数据左对齐,+,输出有符号正数时,在其前面显示正号,(+),%+d,:,表示输出整数的正负号,0,输出数值时,指定左边不使用的空格自动填,0,%08X,:,表示输出十六进制无符号整数,不足,8,位时左补,0,16,4.,辅助格式控制符,(,修饰符,),小结,修饰符,功,能,例,子,#,对于无符号数:,在八进制和十六进制数前显示前导,0,,,0x,或,0X,%#X,:,表示输出的十六进制前显示前导,0X,对于实数:,必须输出小数点,%#10.0f,:,表示输出的浮点数必须输出小数点,h,在,d,、,o,、,x,、,u,前,指定输出为短整型数,%hd,:,表示输出短整型数,l,在,d,、,o,、,x,、,u,前,指定输出为,long int,型,%ld,:,表示输出长整型数,在,e,、,f,、,g,前,指定输出精度为,double,型,(,缺省也为,double),%lf,:,表示输出为,double,型数,L,在,e,、,f,、,g,前,指定输出精度为,long double,型,%Lf,:,表示输出为,long double,型数,17,4.2,格式化输入,scanf,一般格式,sc,anf,(,“格式控制字符串”,变量,1,的地址,变量,2,的地址,,,变量,n,的地址,);,功能,第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在,变量,1,、变量,2,、,、变量,n,中,。,int a;,scanf (%d, ,取地址运算符,(,与按位“与”同符号,),,只能作用于变量!,格式控制符与后续参数中的变量地址的对应关系,已,知:,int a , b;,函数调用:,scanf (%d%d, ,假设输入:,1020,变量的值:,a,的值是,10,,,b,的值是,20,18,scanf,函数的格式控制符,%* width l | h Type,一般形式:,说明:, ,:,表示可选项,可缺省。,|,表示互斥关系。,width,:,指定输入数据的域宽,,遇空格或不可转换字符则结束。,Type,:,各种格式转换符(参照,printf,)。,*,:,抑制符,输入的数据不会赋值给相应的变量。,l,:,用于,d,、,u,、,o,、,x|X,前,指定输入为,long,型整数;用于,e|E,、,f,前,指定输入为,double,型实数。,h,:,用于,d,、,u,、,o,、,x|X,前,指定输入为,short,型整数。,19,使用,scanf,函数注意事项,(1),如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,,至少用一个空格分隔,或者用,Tab,键分隔,或者输入一个数据后,按回车,,然后再输入下一个数据。,(2),格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。,(3),为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用,printf( ),函数输出一个提示信息,再用,scanf( ),函数进行数据输入,。,(4),当格式控制字符串中指定了输入数据的域宽,width,时,将读取输入数据中相应的,width,位,但按需要的位数赋给相应的变量,多余部分被舍弃。,例如:,scanf (%d%d, ,假设给,num1,输入,12,,给,num2,输入,36,,则正确的输入操作为:,1236,或者,12,36,使用“,”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。,例如:,scanf (%d:%d:%d, ,假设给,h,输入,12,,给,m,输入,30,,给,s,输入,10,,正确的输入操作为:,12:30:10,例如:,scanf (num1=%d, num2=%dn, ,假设给,num1,输入,12,,给,num2,输入,36,,正确的输入操作为:,num1=12,,,num2=36n,例如:,将,scanf (num1=%d, num2=%dn, ,改为:,printf (num1=); scanf (%d, ,printf (num2=); scanf (%d, ,例如:,scanf (%3c%3c, ,假设输入,abcdefg,,则系统将读取的“,abc,”中的,a,赋给变量,ch1,;将读取的,def,中的,d,赋给变量,ch2,。,20,使用,scanf,函数注意事项,(5),当格式控制字符串中含有抑制符,*,时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。,(6),使用格式控制符,%c,输入单个字符时,空格和转义字符均作为有效字符被输入。,(7),输入数据时,遇到以下情况,系统认为该数据结束:,遇到空格,或者回车键,或者,Tab,键。,遇到输入域宽度结束。例如,“,%3d,”,,只取,3,列。,遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。,(8),当一次,scanf,调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。,例如:,scanf (%2d%*2d%3d, ,printf (num1=%d, num2=%dn, num1, num2);,假设输入,123456789,输出结果为:,num1=12, num2=567,。,例如:,scanf (%c%c%c, ,假设输入:,ABC,,则系统将字母,A,赋值给,ch1,,空格,赋值给,ch2,,字母,B,赋值给,ch3,。,例如:,scanf (%d, a);,如果输入为:,12a3,,,a,的值将是,12,。,例如:,scanf (%d,%d, ,如果输入为:,12a34,,那么,a,的值将是,12,,,b,的值将无法预测。,正确的输入是:,12,,,34,21,4.3,字符数据的非格式化输入、输出,1.,字符数据的非格式化输入,int getchar ( void );,/,应包含的,.h,文件为,stdio.h,getchar,功能:,从键盘读一字符,返值:,正常,返回读取字符的,ASCII,码值;出错,返回,EOF(-1),。,说明:,以回车符为输入结束条件;输入多个字符时,返回第一个字符的值;输入,字符回显,。,22,【,例,】,利用,getchar,输入字符,#include ,#include ,void main ( ),char ch1, ch2;,int a;,ch1 =,getchar ( );,ch2 =,getchar ( );,scanf (%d, ,printf (ch1 = %c, ch2 = %cn, ch1, ch2);,printf (a = %dn, a);,ch1 = 1, ch2 = 2,a = 34,运行结果,(假设输入为:,1234,):,23,2.,字符数据的非格式化输出,int putchar ( int c );,/,应包含的,.h,文件为,stdio.h,putchar,功能:,在显示器上输出字符,c,。,返值:,正常,返回字符的代码值;出错,返回,EOF(-1),。,说明:,该函数带有一个参数,c,,它为要显示字符的,ASCII,码值,有一个,int,型返回值,。,24,【,例,】,利用字符输出函数输出字符,A,is as good as,B,运行结果,:,#include ,void main ( ),int a = 65;,char b = B;,putchar (a);,/,不自动回车,putchar (n);,puts (“is as good as”);,/,自动回车,putchar (b);,puts(s);,printf(%sn,s);,25,4.4,顺序,程序设计举例,【,例,1】,任意从键盘输入一个三位整数,要求正确地分离出它的个位、十位和百位数,并分别在屏幕上输出。,#include ,void main ( ),int x, b0, b1, b2;,/,变量定义,printf (please input an integer x: );,/,提示用户输入一个整数,scanf (%d, ,/,输入一个整数,b2 = x / 100;,/,用整除方法计算最高位,b1 = (x - b2 * 100) / 10;,/,计算中间位,b0 = x % 10;,/,用求余数法计算最低位,printf (bit2 = %d, bit1 = %d,bit0 = %dn, b2, b1, b0);,/,输出结果,26,本章小结,27,四章实验作业,购房从银行贷了一笔款(程序可在运行时自行设定),贷款期限为,10,年(或,15,,,20,年,程序可在运行时自由设定),贷款利率为(请查询当前最新利率,程序可在运行时自由设定),请网络查询,等额本金,和,等额本息,两种还款方式的算法,编写程序并计算两种方式每月还款数额,以及最终还款总额。,要求,:,1,、界面友好,功能正确,2,、报告中给定程序流程图和源代码,3,、报告中给出调试和运行结果,4,、给出实验总结,28,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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