《《程序设计初步》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序设计初步》PPT课件.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章 程序设计初步第4章 函数与预处理第5章 数组第6章 指针第7章 自定义数据类型第2篇面向过程的程序设计第3章 程序设计初步 程序设计者要考虑:1.程序要“做什么”2.解决“怎么做”根据程序要“做什么”的要求,写出一个个语句,安排好它们的执行顺序。3.1 面向过程的程序设计和算法C+面向过程的程序设计面向过程的程序设计面向对象的程序设计面向对象的程序设计离不开算法设计离不开算法设计 面向过程的程序应包括以下两方面内容:面向过程的程序应包括以下两方面内容:(1)对数据的描述。数据的类型和数据结构对数据的描述。数据的类型和数据结构 (data structure)。(2)对操作的描述。操作步
2、骤,也就是算法对操作的描述。操作步骤,也就是算法 (algorithm)。对于面向过程的程序,可以用下面的公式表示:对于面向过程的程序,可以用下面的公式表示:程序程序=算法算法+数据结构数据结构 算法是处理问题的一系列的步骤算法是处理问题的一系列的步骤 3.1.1 算法的概念3.1.2 算法的表示中文或英文等自中文或英文等自然语言描述算法然语言描述算法容易产生歧义性程序设计中容易产生歧义性程序设计中一般不用自然语言表示算法一般不用自然语言表示算法传统的流程图结构化流程图用图的形式表示算法,用图的形式表示算法,比较形象直观,修改算法时,不大方便。介于自然语言和计算机语言之间的文字和符号来描述算法
3、if x is positive then print xelse print-x1.自然语言自然语言2.流程图流程图3.伪代码伪代码4.用计算机语言表示算法用计算机语言表示算法 用一种计算机语言去描述算法,这就是计算机程序。用一种计算机语言去描述算法,这就是计算机程序。书写方便、格式紧凑,书写方便、格式紧凑,容易修改,便于向计容易修改,便于向计算机语言算法算机语言算法(即程即程序序)过渡过渡伪代码写算法并无伪代码写算法并无固定的、严格的语固定的、严格的语法规则法规则,并且书写并且书写的格式要写成清晰的格式要写成清晰易读的形式易读的形式3.2 C+程序和语句每一个程序单位由以下几个部分组成:(
4、1)预处理命令预处理命令#include#define(2)声明部分声明部分数据类型和函数的声明变量的定义(3)函数函数函数首部函数体包含若干声明语句和执行语句。#include /预处理命令using namespace std;/在函数之外的声明部分int a=3;/在函数之外声明,全局变量int main()/函数首部 float b;/函数内的声明部分 b=4.5;/执行语句 coutab;/执行语句 return 0;/执行语句 C+的语句用来向计算机系统发出操作指令。的语句用来向计算机系统发出操作指令。C+程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n函
5、数函数1全局变量声明全局变量声明预处理命令预处理命令函数函数n函数首部函数首部函数体函数体局部变量声明局部变量声明执行语句执行语句C+程序结构:程序结构:C+语句分类:语句分类:1.声明语句声明语句 int a,b,c;float x,y=3.24;2.执行语句执行语句 控制语句:完成一定的控制功能控制语句:完成一定的控制功能。If()else for()while()do while()continuebreakswitchgotoreturn函数调用语句:函数调用语句:printf(“This is C”);coutxendl;/流对象调用语句流对象调用语句表达式语句:表达式语句:a=3;
6、x+y;i+;空语句空语句:;复合语句:用复合语句:用 括起来的语句。括起来的语句。z=x+y;t=z/100;printf(“%f”,t)C+语言允许一行写几个语句,也允许一个语言允许一行写几个语句,也允许一个语句拆开写在几行上语句拆开写在几行上 3.3 赋值语句赋值语句 赋值表达式加上一个分号构成。赋值表达式加上一个分号构成。1.“=”是一个运算符。是一个运算符。2.赋值表达式赋值表达式 赋值语句。赋值语句。a=3+2 a=3+2;3.3 C+数据的输入输出数据的输入输出 1.输入输出是以计算机主机为主体而言的。输入输出是以计算机主机为主体而言的。2.C+输入和输出的操作是由函数实现的。输
7、入和输出的操作是由函数实现的。标准输入输出函数库标准输入输出函数库 printf(格式输出)、(格式输出)、scanf(格式输入)、(格式输入)、putchar(输出字符)、(输出字符)、getchar(输入字符)(输入字符)cout cin图 cin、cout C+的输入输出流库#include “”流提取运算符 “实现输入的语句称为输入语句 cout 实现输出的语句称为输出语句 cout语句的一般格式为 cout表达式1表达式2变量1变量2变量n;*3.4.1 输入流与输出流的基本操作一个cout语句可以分写成若干行。如coutThis is a simple C+program.endl
8、;可以写成 coutThis is /注意行末尾无分号a C+program.endl;/语句最后有分号也可写成多个cout语句,即coutThis is;/语句末尾有分号cout a C+;cout program.;coutendl;以上3种情况的输出均为This is a simple C+program.注意 不能用一个插入运算符“”插入多个输出项:couta,b,c;/错误,不能一次插入多项couta+b+c;/正确,这是一个表达式couta b cabcd;可以写成 cina /注意行末尾无分号 b /这样写可能看起来清晰些 c d;也可以写成cina;cinb;cinc;cind
9、;以上3种情况均可以从键盘输入:1 2 3 4 也可以分多行输入数据:12 34在用cin输入时,系统也会根据变量的类型从输入流中提取相应长度的字节。如有char c1,c2;int a;float b;cinc1c2ab;如果输入1234 56.78注意:注意:34后面应该有空格和分隔开。也可以按下面格式输入:1 2 34 56.78 (在1和2之间有空格)不可用cin语句把空格字符和回车换行符作为字符输入给字符变量,它们将被跳过。如果想将空格字符或回车换行符(或任何其他键盘上的字符)输入给字符变量,可以用getchar函数。在组织输入流数据时,要仔细分析cin语句中变量的类型,按照相应的格
10、式输入,否则容易出错。C+在输入输出流中可使用的控制符 如果使用了控制符,必须加预编译指令#include#include 举例:输出双精度数。double a=123.456789012345;对a赋初值(1)couta;输出:123.457 (2)coutsetprecision(9)a;输出:123.456789 (3)coutsetprecision(6);恢复默认格式(精度为6)*3.4.2 在输入流与输出流中使用控制符在输入流与输出流中使用控制符(4)cout setiosflags(iosfixed);输出:(5)coutsetiosflags(iosfixed)setpreci
11、sion(8)a;输出:(6)coutsetiosflags(iosscientific)a;输出:e+02(7)coutsetiosflags(iosscientific)setprecision(4)a;输出:e+02以固定小数位输出,默认6位指定8位小数位指数形式输出,小数4位下面是整数输出的例子:int b=123456;对b赋初值(1)coutb;输出:123456(2)couthexb;输出:1e240 (3)coutsetiosflags(iosuppercase)b;输出:1E240 (4)coutsetw(10)b,b;输出:123456,123456(5)coutsetfi
12、ll(*)setw(10)b;输出:*123456(6)coutsetiosflags(iosshowpos)b;输出:+123456只对第一个变量起作用正数前面加符号setw(n)setiosflags(iosright)各行数据右对齐上下小数点对齐cout#include#include using namespace std;int main()double a=123.456,b=3.14159,c=-3214.67;coutsetiosflags(ios fixed)setiosflags(ios right)setprecision(2);coutsetw(10)aendl;cou
13、tsetw(10)bendl;coutsetw(10)cendl;return 0;输出如下:统一设置定点输出、取两位小数、右对齐字段宽度为10 在使用在使用 库函数时,要用预编译命令库函数时,要用预编译命令#include 或或#include“std i i o.h”standard input&output head 3.4.3 用用getchar和和putchar 函数函数 1.putchar 函数(字符输出函数)函数(字符输出函数)函数原型:函数原型:putchar(char)参数可以是字符型(整型变量)或常量。参数可以是字符型(整型变量)或常量。功能:向终端输出一个字符。功能:向终
14、端输出一个字符。例例3.1 输出单个字符输出单个字符#include main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);2 getchar 函数(字符输入函数)函数(字符输入函数)函数原型:函数原型:char getchar()函数的值为字符类型。函数的值为字符类型。功能:从标准的输入设备输入一个字符。功能:从标准的输入设备输入一个字符。例例3.2 输入单个字符输入单个字符#include main()char a;a=getchar();putchar(getchar();putchar(a);cout(c=getch
15、ar();3.4.4 用用scanf和和printf函数函数 1.printf 函数(格式输出函数)函数(格式输出函数)功能:按指定格式向终端输出数据。功能:按指定格式向终端输出数据。printf 函数的一般格式为:函数的一般格式为:printf(格式控制,输出表列)(格式控制,输出表列)“格式控制格式控制”称为称为“转换控制字符串转换控制字符串”。双引号括起来的字符串双引号括起来的字符串 格式说明格式说明 普通字符普通字符%和格式字符组成和格式字符组成 原样输出的字符原样输出的字符%d%f “boy”“输出表列输出表列”可以是变量,也可以是表达式。可以是变量,也可以是表达式。例:例:prin
16、tf(“%d%d”,a,b);printf(“a=%d b=%d”,a,b);2.格式字符格式字符%*m n l 或或 h 格式字符格式字符 d 格式符:输出十进制整数。格式符:输出十进制整数。%d%md%ld 实际长度输出实际长度输出 m列宽度列宽度 长整型长整型,可指定列宽可指定列宽 m 实际位数实际位数 a=123;b=12345;printf(“%4d,%4d”,a,b);long a=135790;printf(“%d,%ld,%8ld”,a,a,a);o 格式符:输出八进制整数,值不带符号。格式符:输出八进制整数,值不带符号。符号位作为数值的一部分。符号位作为数值的一部分。%o%m
17、o%loint a=-1;Printf(“%d,%o,%8o”,a,a,a);-1,177777,177777 x 格式符:以十六进制数形式输出整数。格式符:以十六进制数形式输出整数。%x%mx%lx u 格式符:格式符:unsigned 型数据输出。型数据输出。例例 无符号数据的输出无符号数据的输出 main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);a=-1,177777,ffff,65535b=-2,177776,fffe,65534 c
18、 格式符:输出一个字符。格式符:输出一个字符。%c%mc 例例 字符数据的输出字符数据的输出 main()char c=a;/*可用整型输出可用整型输出*/int i=97;/*可用字符型输出可用字符型输出*/printf(“%c,%d)n”,c,c);printf(“%c,%d)n”,i,i);a,97 a,97 s 格式符:用来输出一个字符串。格式符:用来输出一个字符串。%s%ms m 左补空格左补空格 原样输出原样输出printf(“%s”,“china”);printf(“%7s”,“china”);printf(“%3s”,“china”);chinachinachina%-ms%m
19、.ns%-m.ns 左对齐右补空左对齐右补空 串左串左n个字符个字符 串左串左n个字符个字符 右对齐左补空右对齐左补空 左对齐右补空左对齐右补空 mn mn 如果如果 nm,则则m自动取自动取 n 值,即保证正常输出。值,即保证正常输出。例:字符串的输出。例:字符串的输出。main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,“china”,“china”,“china”,“china”);china,ch,chin,chinm左对齐左对齐右补空格右补空格左取左取2字字符符 f 格式符:输出实数(单、双精度)。格式符:输出实数(单、双精度)。%f 整数全部输出,并输出整数
20、全部输出,并输出 6 位小数位小数 单精度数:有效位数一般为单精度数:有效位数一般为 7 位位 双精度数:有效位数一般为双精度数:有效位数一般为16位位 例例4.6 输出实数的有效位数输出实数的有效位数 main()float x,y;x=111111.111;y=222222.222;printf(“%f”,x+y);%m.nf%-m.nf 数据占数据占m列,小数列,小数n位位 m 右对齐,左补空右对齐,左补空 左对齐,右补空左对齐,右补空 例例 输出实数时指定小数位数输出实数时指定小数位数 main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10
21、.2fn”,f,f,f,f,f);123.456001123.46123.46123.46 e 格式符:以指数形式输出实数。格式符:以指数形式输出实数。%e 数值按规范化指数形式输出数值按规范化指数形式输出 小数小数6位,指数位,指数5位位 e1位,指数符号位,指数符号1位,指数位,指数3位位 printf(“%e”,123.456);输出输出e+002。%m.ne%-m.ne f=123.456;printf(“%e%10e%.2e%-10.2e”,f,f,f,f,f)1.234560e+0021.234560e+0021.23e+0021.23e+0021.23e+002 g 格式符:输出
22、实数。格式符:输出实数。自动选自动选 f 或或 e 格式,且不输出无意义的零格式,且不输出无意义的零 (选择输出时占宽度较小的一种),(选择输出时占宽度较小的一种),f=123.468;printf(“%f%e%g”,f,f,f);1.234560e+002123.468说明:说明:除了除了X,E,G外,其它格式必须用小写字母。外,其它格式必须用小写字母。在在printf函数中的函数中的“格式控制格式控制”字符串内包字符串内包含转义字符。含转义字符。一个格式说明以一个格式说明以%开头,以开头,以d、o、x、u、c、s、f、e、g 字符之一为结束,中间可以插入附字符之一为结束,中间可以插入附 加
23、格式字符。加格式字符。如输出字符如输出字符%,则连续用两个,则连续用两个%表示。表示。3.scanf 函数(格式输入函数)函数(格式输入函数)一般形式一般形式 scanf(格式控制,地址表列)格式控制,地址表列)“格式控制格式控制”的含义同的含义同 printf 函数;函数;“地址表列地址表列”可以是变量、或字符串的地址。可以是变量、或字符串的地址。例:用例:用 scanf 函数输入数据函数输入数据 scanf(“%d%d%d,&a,&b,&c);其中其中&a 指指 a 在内存中的地址。在内存中的地址。4.格式说明格式说明 和和 printf 函数中的格式说明相似。组成如下:函数中的格式说明相
24、似。组成如下:%*m l 或或 h 格式字符格式字符 说明:说明:(1)unsigned%u,%d 或或%o,%x (2)若指定输入数据所占列数,系统自动按它若指定输入数据所占列数,系统自动按它 截取所需数据。截取所需数据。scanf(“%3d%3c”,&a,&b,&c);123abc。附加格式说明符附加格式说明符 (3)在在%后有后有“*”号,表示跳过它指定的列数。号,表示跳过它指定的列数。scanf(“%2d%*3d%2d”,&a,&b);12 345 67,(4)输入数据不能规定精度输入数据不能规定精度 scanf(“%7.2f”,&a);/*不合法不合法*/5.使用使用 scanf 函
25、数时应注意的问题函数时应注意的问题 scanf 函数的函数的“格式控制格式控制”后面应是后面应是变量地变量地址址 在在“格式控制格式控制”字符串中除了格式说明以外字符串中除了格式说明以外还还 有其他字符,则在输入数据时应输入与这些字符有其他字符,则在输入数据时应输入与这些字符 相同的字符。相同的字符。scanf(“%d%d”,&a,&b);12 16scanf(“%d,%d”,&a,&b);12,16scanf(“%d%d”,&a,&b);1216scanf(“%d:%d”,&a,&b);12:16scanf(“a=%d,b=%d”,&a,&b);a=12,b=16“%c”输入字符,输入字符,
26、空格字符和空格字符和“转义字符都作为有效字符输入转义字符都作为有效字符输入 scanf(“%c%c%c”,&a,&b,&c);a b c输入数据时,遇以下情况时该数据认为结束。输入数据时,遇以下情况时该数据认为结束。遇空格,或按遇空格,或按“回车回车”或或“跳格跳格”(Tab)键。键。按指定的宽度结束。如按指定的宽度结束。如“%3d”,只取,只取3列。列。遇非法输入。遇非法输入。scanf(“%d%c%f”,&a,&b,&c);12 a非法非法 3.5 顺序结构程序设计举例顺序结构程序设计举例 例例:输入三角形的三边长求三角形面积。已知输入三角形的三边长求三角形面积。已知公式为:公式为:are
27、a=(s(s-a)(a-b)(s-c)1/2,s=(a+b+c)/2。声明变量声明变量a,b,c,area输入变量值输入变量值计算计算s计算计算area打印出打印出a,b,c,area的值的值NS 图图例例3.5 3.5 求一元二次方程式求一元二次方程式axax2 2+bx+c=0+bx+c=0的根。的根。a,b,ca,b,c的值在运的值在运行时由键盘输入,它们的值满足行时由键盘输入,它们的值满足b b2 2-4ac0-4ac0。#include#include /由于程序要用到数学函数sqrt,故 /应包含头文件cmathusing namespace std;int main()float a,b,c,x1,x2;cinabc;x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);coutx1=x1endl;coutx2=x2endl;return 0;