第3章算法和基本程序设计,结构化程序设计和基本程序结构,数据结构+算法=程序,数据结构:指对数据(操作对象)的描述。,算法:指对操作步骤的描述。,正确的算法应具有的特性:,1、有穷性,2、确定性,3、有0—n个输入数据,4、有1—n个输出数据,5、有效性,算法的表示形式:,1、自然语言,2、流程图,3、N-S图,4、伪代码,5、PAD图,流程图,例:求三个整数的和,main(){floatx,y,z,sum;scanf(“%f%f%f\n”,},例2:求三个数中最小数,#includemain(){inta,b,c,min;scanf("%d%d%d",},N-S图,完全去掉流程线,由一些基本框组成一个大的框基本元素框,例:求三个整数的和,例:求三个数中最小数。,结构化程序设计,基本思想:,把一个复杂问题的求解过程分步进行,后一步在前一步的基础上细化,这样每步所考虑的子问题都相对易于理解和处理,每步都只用三种基本结构进行复合和嵌套。也可以概括为:自顶向下,逐步求精的方法。,基本程序结构,三种:顺序结构、选择结构、循环结构,1.顺序结构,先执行A,再执行B.,2.选择结构,若P为真,则执行A,否则执行B。,若P为真,则执行A,否则跳过A。,另外:由选择结构可以派生出多分支结构。,3.循环结构,(1)当型循环当P为真,反复执行A,P为假时出循环。,(2)直到型循环先执行A,再判断,若P为真,反复执行A,直到P为假出循环。,顺序结构程序设计,C程序概述,语句分类:,由语句组成,每个语句以分号结束。,①控制语句,②表达式语句,③函数调用语句,④空语句,⑤复合语句,9种控制语句:1.条件判断语句if()…else…switch(){…}2.循环控制语句for()…while()…do…while()3.转移语句breakcontinuegotoreturn,例如:main(){inta,b;a=b=100;{floatc=10.23;printf("%f\n",c);}printf("%d%d\n",a,b);},C中数据的输入输出,输入:将数据送入计算机。,输出:将计算机处理的结果数据送出到输出设备。,说明:,1、C语言中,数据输入/输出是通过调用库函数完成。,2、使用库函数时,用预编译命令将有关“头文件”包括到源文件中。,3、标准输入输出库函数:“stdio.h”文件,4、源文件开头应有以下预编译命令:#include或#include"stdio.h",1.putchar函数(字符输出函数),字符数据的输入/输出,格式:putchar(c)参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上,例:,#includemain(){intc;chara;c=65;a=B;putchar(c);putchar(\n);putchar(a);},AB,2、getchar函数(字符输入函数),格式:getchar()功能:从键盘读入一字符,遇回车结束并回显,例:,#includemain(){charc;c=getchar();putchar(c);},aaa,getch函数,格式:getch()功能:从键盘读入一字符,不用回车结束,不回显,例:,#includemain(){charc;c=getch();putchar(c);},aa,getche函数,格式:getche()功能:从键盘读入一字符,不用回车结束,回显,例:,#includemain(){charc;c=getche();putchar(c);},aaa,格式输入与输出,输出若干个任意类型的数据,1、printf函数(格式输出),格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据说明:标准库函数,函数原型在头文件“stdio.h”中,格式控制串:,格式说明:,普通字符或转义序列:,%格式字符,用于指定输出格式,原样输出,输出表:,要输出的数据(可以没有,多个时以“,”分隔),格式字符,1、%d,十进制格式,2、%o,八进制格式,3、%x,十六进制格式,4、%u,无符号的十进制格式,5、%c,一个字符格式,6、%s,字符串格式,7、%f,实数格式,8、%e,指数格式,9、%g,inta=567;printf(“%d”,a);,inta=255;printf(“%x”,a);,inta=65;printf(“%o”,a);,inta=-1;printf(“%u”,a);,chara=65;printf(“%c”,a);,printf(“%s”,“ABC”);,floata=567.789;printf(“%e”,a);,floata=567.789;printf(“%f”,a);,floata=567.789;printf(“%g”,a);,printf(“%%”);,567,ff,101,65535,A,ABC,5.67789e+02,567.789000,567.789,%,格式字符,附加格式说明符,,2、scanf函数(格式输入),格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,按回车键结束说明:标准库函数,在头文件“stdio.h”中定义,格式控制串:和格式输出函数的含义相同,地址表:变量的地址,用取地址运算符area=sqrt(s*(s-a)*(s-b)*(s-c));,#include#includemain(){floata,b,c,s,area;printf("inputa,b,c:");scanf("%f,%f,%f",},inputa,b,c:3,4,6area=5.33,例2、编写显示如下界面的程序:,#includemain(){system("cls");printf("学生管理程序\n");printf("Add-------追加数据");printf("Modify----修改数据\n");printf("Delete----删除数据");printf("Print-----打印数据\n");printf("Sort------成绩排序");printf("Quit------退出程序\n");},C程序上机的步骤,C程序从开发到执行的过程,C源程序.c文件,目标程序.obj文件,可执行程序.exe文件,,,,,,对源文件进行语法和逻辑结构检查,将目标程序、库函数或其他目标程序连接成一个可执行文件,VC环境介绍,,,新建文件,,,,,保存文件,,,后缀为.c,,,编译结果,,,编译,,,,,链接结果,,,,链接,,,运行,,,用Ctrl+空格切换中英文输入方式,,,注意逗号,为英文方式下的字符,,,输出结果,作业,1、编一程序,求两点之间的距离,已知直角坐标系中求两点(x1,y1)和(x2,y2)之间距离公式为:d=(x2-x1)2+(y2-y1)2,2、编一程序,将输入的摄氏温度转换为华氏温度和绝对温度。转换公式为:F=C+32K=273.16+C,3、编一程序,从键盘输入一个三位数,求出其逆序数并输出,例如输入123,输出321。,
展开阅读全文