您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第03章 程序设计的控制结构分析
高级语言程序设计与应用教程第三章程序控制结构1第3章程序设计控制结构高级语言程序设计与应用教程第三章程序控制结构2程序的结构:写文章有文章的结构建房子有房子的结构制造机械产品由机械产品的结构………那么编写程序是否有程序的结构呢?学习的意义程序结构顺序结构选择结构循环结构YES!第3章:程序设计的控制结构高级语言程序设计与应用教程第三章程序控制结构33.1顺序结构程序设计3.2选择结构程序设计3.3循环结构程序设计学习目标了解结构化程序设计的基本思想;掌握顺序结构的基本语句;掌握选择结构的语句并编程;掌握循环结构的语句并编程;综合使用三种程序结构编程解决实际问题。学习内容高级语言程序设计与应用教程第三章程序控制结构4结构化程序设计思想•C语言采用的是结构化程序设计思想。•基本思想:任何程序都可以通过顺序结构、选择结构、循环结构表示。复杂程序是经过这3种基本结构反复嵌套使用而构成的。•优点:程序模块结构清楚,层次分明,易于读写。高级语言程序设计与应用教程第三章程序控制结构5程序控制结构(1)顺序结构ABCA条件ABTF(2)分支结构条件TF(3)循环结构ATF条件A条件TF高级语言程序设计与应用教程第三章程序控制结构63.1顺序结构程序设计•顺序结构是最简单的一种程序结构,流程按语句从上到下的顺序依次执行的。•顺序结构中经常使用的是表达式语句、函数调用语句。•程序中没有用于分支选择或循环的控制语句。高级语言程序设计与应用教程第三章程序控制结构73.1.1赋值语句•赋值语句由一个赋值表达式加上分号“;”组成,其一般形式为:赋值表达式;•赋值语句是程序中最基本的语句。例如:x=10/*赋值表达式,非表达式语句*/x=10;/*赋值语句*/x=y=z=5;/*连续赋值语句*/高级语言程序设计与应用教程第三章程序控制结构83.1.2基本的输入、输出函数•标准库函数中提供了一系列的输入输出函数:scanf格式输入函数printf格式输出函数getchar字符输入函数putchar字符输出函数•因为输入/输出由开发系统提供的库函数实现,函数的原型是在头文件stdio.h中定义,因此在使用库函数时,应在源程序的开头使用如下预编译命令语句:#includestdio.h或#includestdio.h高级语言程序设计与应用教程第三章程序控制结构9格式输出函数printf(P50,提到scanf前讲)一般格式printf(格式控制字符串,表达式1,表达式2,…,表达式n);功能按照“格式控制字符串”的要求,将表达式1,表达式2,…,表达式n的值显示在计算机屏幕上。说明格式控制字符串用于指定输出格式。它包含两类字符:常规字符:包括可显示字符和用转义字符表示的字符。格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。其格式为:%[修饰符]格式转换字符例:longintx=0x8AB6;printf(“TheValueofxis%ld\n”,x);常规字符常规字符(转义符)格式控制符(修饰符)格式控制符(格式转换符)高级语言程序设计与应用教程第三章程序控制结构10printf使用时的注意事项(1)格式控制字符串可以不包含任何格式控制符。printf(“howareyou?\n”);//只有一个字符串参数,输出为:howareyou?printf(“howoldareyou?\n”,20);//带有两个参数,20没有意义,输出为:howoldareyou?已知:inta=2;函数调用:printf(a*a=%d,a+5=%d\n,a*a,a+5);实际输出:a*a=4,a+5=7(2)当格式控制字符串中既含有常规字符,又包含有格式控制符时,则表达式的个数应与格式控制符的个数一致。此时,常规字符原样输出,而格式控制符的位置上输出对应的表达式的值,其对应的顺序是:从左到右的格式控制符对应从左到右的表达式。高级语言程序设计与应用教程第三章程序控制结构11printf使用时的注意事项(3)如果格式控制字符串中格式控制符的个数多于表达式的个数,则余下的格式控制符的值将是不确定的。printf(5+3=%d,5-3=%d,5*3=%d,5+3,5-3);输出结果将是:5+3=8,5–3=2,5*3=-28710输出随机charch='A';printf(ch=%c,ch);//输出结果:ch=A(以字符形式输出)printf(ch=%d,ch);//输出结果:ch=65(以'A'字符的ASCII码形式输出)(4)不同类型的表达式要使用不同的格式转换符,同一表达式如果按照不同的格式转换符来输出,其结果可能是不一样的。高级语言程序设计与应用教程第三章程序控制结构12#includestdio.hvoidmain(){intx=65,y=97;printf(%d,%d\n,x,y);printf(x:%c,y:%c\n,x,y);}例3-3输出字符及其ASCII码。65,97x:A,y:a运行结果:高级语言程序设计与应用教程第三章程序控制结构13类型格式字符含义d以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e以指数形式输出单、双精度实数g选%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串•格式字符串的一般形式为(带[]的项为可选项):printf函数的格式控制符%[标志][输出最小宽度][.精度][长度]类型高级语言程序设计与应用教程第三章程序控制结构14字符含义l长度定义,输出长整形类型,可以加在字符d、o、x、u之前h长度定义,输出短整形类型m输出数据最小宽度;若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(小数点也算作一位).n对实数,表示输出n位小数;对字符串,表示截取n个字符-结果左对齐,右边填空格+输出符号(正号或负号)•格式字符串的一般形式为(带[]的项为可选项):%[标志][输出最小宽度][.精度][长度]类型第4次课结束结合P51举例③,其它举例自学,④⑤⑥⑦上机演示讲解高级语言程序设计与应用教程第三章程序控制结构15格式输入函数scanf(P47)一般格式scanf(“格式控制字符串”,变量1的地址,变量2的地址,…,变量n的地址);功能在第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依此存放在变量1、变量2、……、变量n中。inta;scanf(%d,&a);取地址运算符(与按位“与”同符号),只能作用于变量!格式字符串以%开头,在%后面跟有各种格式字符,以说明输入数据的类型、长度等。格式控制符与后续参数中的变量地址的原则上应有一一对应的关系。已知:inta,b;函数调用:scanf(%d%d,&a,&b);假设输入:10□20↙变量的值:a的值是10,b的值是20第5次课高级语言程序设计与应用教程第三章程序控制结构16#includestdio.hvoidmain(){inta,b,c;scanf(%d%d%d,&a,&b,&c);/*输入整型数据*/printf(“a=%d,b=%d,c=%d”,a,b,c);/*输出数据*/}例3-1输入多个整数。a=10,b=20,c=30运行结果(假设输入为:102030↙):高级语言程序设计与应用教程第三章程序控制结构17•格式字符串的一般形式为(带[]的项为可选项):类型格式字符含义d输入十进制整数o输入八进制整数x输入十六进制整数f或e输入实数(用小数形式或指数形式)c输入单个字符s输入字符串scanf函数的格式控制符%[*][输入数据宽度][长度]类型高级语言程序设计与应用教程第三章程序控制结构18字符含义l指定长度:输入长整型数据(%ld,%lo,%lx)及双精度型浮点数(%lf,%le)h指定长度:输入短整型数据(%hd,%ho,%hx)输入数据宽度指定输入数据所占字符数(宽度)*表示该输入项,读入后不赋予相应的变量•格式字符串的一般形式为(带[]的项为可选项):%[*][输入数据宽度][长度]类型*?高级语言程序设计与应用教程第三章程序控制结构19使用scanf函数注意事项(结合P49举例,举例自学)(1)如果相邻两个格式控制符之间,不指定数据分隔符(如逗号、冒号等),则相应的两个输入数据之间,至少用一个空格分隔,或者用Tab键分隔,或者输入一个数据后,按回车,然后再输入下一个数据。例如:scanf(%d%d,&num1,&num2);假设给num1输入12,给num2输入36,则正确的输入操作为:12□36↙(说明:□表示空格)或者12↙36↙使用“↙”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。高级语言程序设计与应用教程第三章程序控制结构20例如:scanf(%d:%d:%d,&h,&m,&s);假设给h输入12,给m输入30,给s输入10,正确的输入操作为:12:30:10↙(2)格式控制字符串中出现的常规字符(包括转义字符),务必原样输入。再例如:scanf(num1=%d,num2=%d\n,&num1,&num2);假设给num1输入12,给num2输入36,正确的输入操作为:num1=12,num2=36\n↙例如:scanf(%3c%3c,&ch1,&ch2);假设输入abcdefg↙,则系统将读取的“abc”中的'a'赋给变量ch1;将读取的def中的'd'赋给变量ch2。(3)当格式控制字符串中指定了输入数据的域宽width时,将读取输入数据中相应的width位,但按需要的位数赋给相应的变量,多余部分被舍弃。高级语言程序设计与应用教程第三章程序控制结构21(4)当格式控制字符串中含有抑制符‘*’时,表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。例如:scanf(%2d%*2d%3d,&num1,&num2);printf(num1=%d,num2=%d\n,num1,num2);假设输入123456789↙输出结果为:num1=12,num2=567。例如:scanf(%c%c%c,&ch1,&ch2,&ch3);假设输入:A□B□C↙,则系统将字母'A'赋值给ch1,空格'□'赋值给ch2,字母'B'赋值给ch3。(5)*使用格式控制符%c输入单个字符时,空格和转义字符均作为有效字符被输入。高级语言程序设计与应用教程第三章程序控制结构22(6)输入数据时,遇到以下情况,系统认为该数据结束:•遇到空格,或者回车键,或者Tab键。•遇到输入域宽度结束。例如“%3d”,只取3列。•遇到非法输入。比方说,在输入数值数据时,遇到字母等非数值符号。例如:scanf(%d,a);如果输入为:12a3↙,a的值将是12。例如:scanf(%d,%d,&a,&b);如果输入为:12a34↙,那么a的值将是12,b的值将无法预测。正确的输入是:12,34↙(7)当一次scanf调用需要输入多个数据项时,如果前面数据的输入遇到非法字符,并且输入的非法字符不是格式控制字符串中的常规字符,那么,这种非法输入将影响后面数据的输入,导致数据输入失败。(注意第19页)高级语言程序设计与应用教程第三章程序控制结构23(8)为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。例如:将scanf(num1=%d,num2=%d\n,&num1,&num2);改为:printf(num1=);scanf(%d,&num1);printf(num2=);scanf(%d,&num2);高级语言程序设计与应用教程第三章程序控制结构24#includestdio.hvoidmain(){chara,b;scanf(a:%c,b:
本文标题:第03章 程序设计的控制结构分析
链接地址:https://www.777doc.com/doc-3377744 .html