版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录目录第第3章控制结构章控制结构3.1 算法的基本知识3.2 顺序结构程序设计3.3 选择结构程序设计3.4 循环结构程序设计3.5 转移控制语句3.6 综合实例目录目录学习目标学习目标理解算法的特性和要素掌握常用的算法描述方法目录目录广义上讲,算法是解决某一问题的方法和步骤。狭义上,算法指的是计算机算法,即对特定问题求解步骤的一种描述,它是计算机指令的有限序列,其中每一条指令表示计算机可以进行的一个或多个操作。算法的算法的概概念念目录目录算法的特性算法的特性(1)有穷性(2)确定性(3)可行性(4)有零个或多个输入(5)有一个或多个输出目录目录算法的要素算法的要素一个计算机所能执行的算法必
2、须具备以下两个要素:(1)基本操作即构成算法的操作取自哪个操作集。计算机操作主要包括:算术运算、关系运算、逻辑运算、函数运算、位运算及I/O操作等。由于不同的计算机语言所对应的操作集略有不同,所以在设计算法前,应先确定编程语言。(2)控制结构每个算法都是由一系列的操作组成。同一操作序列,按不同的顺序执行,就会得到不同的结果。控制结构即如何控制组成算法的各操作的执行顺序。一个算法只能由种结构组成,即顺序结构、选择结构、循环结构。 目录目录算法的描述方法有很多种,最常用的有自然语言、伪代码、流程图、N-S图、PAD图和计算机语言等。目录目录自然自然语语言言自然语言是人们在日常生活、工作、学习中通用
3、的语言,一般不需要专门学习和训练就能理解用这种语言所表达的意思。但用自然语言描述程序(或算法)的流程时,一般要求直接而简练,尽量减少语言上的修饰。 目录目录实实例分析例分析用自然语言描述sum=1+2+3+99+100的算法。定义变量sum,并置初始值为0。计算1+2+3+99+100的和,并将结果赋给sum。输出变量sum的值。 目录目录流程流程图图流程图是一种传统的算法表示方法,用一些图框表示各种操作,用流程线表示操作的执行顺序。用图形表示算法,直观形象、易于理解。ANSI(American National Standard Institute)规定了一些常用流程图符号。目录目录实实例分
4、析例分析用流图描述sum=1+2+3+99+100的算法 目录目录图图N-S图是由I.Nassi和B.Shneiderman于1973年共同提出的一种结构化描述方法。在这种流图图中,去掉了所有的流程线,算法写在一个矩形框内,在该矩形框内还可以包括其他的矩形框。N-S流程图用以下的流程图符号。目录目录图图目录目录实实例分析例分析用图描述sum=1+2+3+99+100的算法 目录目录程序程序设计语设计语言言对于采用自然语言、流程图和N-S图描述的算法,计算机是不能执行的。要让计算机执行一个算法,必须把该算法转换成计算机语言。用计算机语言表示算法必须严格遵循所使用语言的语法规则。目录目录实实例分析
5、例分析【例3-1】 编程求1+2+3+99+100的累加和。/FileName: chap3_1.c#include int main( )int i,sum;i=1; sum=0;while(i=100)sum=sum+i;i+;printf(The sum is %dn,sum);return 0;程序运行结果如下:The sum is 5050目录目录学习目标学习目标熟练掌握C语言中的基本语句掌握格式化输入输出函数的基本用法目录目录语语句句构构成成表达式语句是由表达式加上分号(;)组成。其一般形式如下: 表达式;这里的表达式是指语言中任何合法的表达式。例如: x=y+z; /赋值表达式语
6、句 y+z;/加法运算语句,但计算结果不能保留,无实际意义 i+;/自增语句,即i的值增 目录目录注意事注意事项项使用赋值语句时需要注意以下几点。(1)在赋值符“”右边的表达式也可以是一个赋值表达式。例如:a=b=c=5;(2)注意赋值表达式和赋值语句的区别。赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。目录目录语语句句构构成成函数是C程序的基本组成单位,一个函数的执行是通过在程序中调用这个函数来实现的,调用函数的操作由C语句来完成,通常称为函数调用语句。其一般形式如下:函数名(参数表);例如,“printf(hello!);”就是一个函数调用语句。 目录目录
7、注意事注意事项项一个完整的计算机程序应具备输入输出功能,C语言本身并不提供数据的输入输出语句,有关的输入输出操作都是通过调用C标准库函数来实现的。C语言提供的输入输出标准库函数有getchar( )、putchar( )、scanf( )和printf( )等。引用语言标准库函数时,必须用编译预处理命令“#include”将头文件“stdio.h”包含到用户源程序中,即在程序的开始写一行命令#include或者#include”stdio.h”。 目录目录getchar( )字符输入函数的一般形式如下:int getchar()功能:接收从终端输入的一个字符,并返回其ASCII码值。例如:in
8、t ch=getchar( ); /从输入终端(如键盘)接收一个字符并把它赋给ch变量。 目录目录putchar( )字符输出函数的一般形式如下:int putcharint putchar(char chchar ch)功能:向终端输出一个字符,并返回该字符的ASCII码值。 目录目录实实例分析例分析/FileName: chap3_2.c#include int main()char ch1,ch2,ch3,ch4; ch1=getchar();ch2=getchar();ch3=getchar();ch4=getchar();putchar(ch1); putchar(n);putcha
9、r(ch2); putchar(n);putchar(ch3); putchar(n);putchar(ch4);return 0;程序运行结果如下:C+C+目录目录printf( )格式化输出函数的一般形式如下: int printf (char *format ,argument,.); 功能:函数printf将一组参数,按format给定的格式,把数据格式化并且输出到标准输出设备。若出错,则返回负数。向终端输出一个字符,并返回该字符的ASCII码值。 函数调用的一般形式为: printf(格式控制字符串,输出项列表); 目录目录%标识标识宽度宽度.精度精度 格式字符格式字符printf(
10、 )方括号表示该项可有可无方括号表示该项可有可无- - :左对齐输出,缺省为右对齐输出:左对齐输出,缺省为右对齐输出+ + :正数输出加号:正数输出加号(+)(+),负数输出减号,负数输出减号(-)(-)空格:正数输出空格代替加号空格:正数输出空格代替加号(+)(+),负数输出减号,负数输出减号(-)(-)。十进制整数,指定输出宽度。十进制整数,指定输出宽度。指定宽度指定宽度 实际宽度,补空格。实际宽度,补空格。指定宽度指定宽度实际宽度,按实际输出。实际宽度,按实际输出。不指定宽度,按实际输出。不指定宽度,按实际输出。输出精度指示符。输出精度指示符。对整数,表示至少要输出的数字个数,不足补,多
11、则原样输出。对整数,表示至少要输出的数字个数,不足补,多则原样输出。对实数,表示小数点后至多输出的数字个数,不足补,多则舍入处理。对实数,表示小数点后至多输出的数字个数,不足补,多则舍入处理。对字符串,表示最多输出的字符个数,不足补空格,多则丢弃。对字符串,表示最多输出的字符个数,不足补空格,多则丢弃。整型整型数据数据 d/i以有符号十进制形式输出整型数以有符号十进制形式输出整型数o以无符号八进制形式输出整型数以无符号八进制形式输出整型数x/X以无符号十六进制形式输出整型数以无符号十六进制形式输出整型数u以无符号十进制形式输出整型数以无符号十进制形式输出整型数实型实型数据数据 f以小数形式输出
12、实型数以小数形式输出实型数e/E以指数形式输出实型数以指数形式输出实型数g/G按数值宽度最小的形式输出实型数按数值宽度最小的形式输出实型数字符型字符型数据数据 c输出一个字符输出一个字符s输出字符串输出字符串其他其他 %输出字符输出字符 % 本身本身目录目录scanf( )格式化输入函数的一般形式如下:格式化输入函数的一般形式如下: int scanf(格式控制字符串,地址列表)功能:按照格式控制的要求,将从终端输入的数据赋值给地址列功能:按照格式控制的要求,将从终端输入的数据赋值给地址列表中的各个变量。格式控制字符串的含义和函数表中的各个变量。格式控制字符串的含义和函数printf( )中的
13、格式控中的格式控制字符串类似,地址列表列出了各变量的地址,由取地址运算符制字符串类似,地址列表列出了各变量的地址,由取地址运算符“&”后后跟变量名组成。跟变量名组成。 函数调用的一般形式为:函数调用的一般形式为: scanf(格式控制字符串,地址列表);目录目录scanf( )宽度格式字符输入赋值抑制字符:输入赋值抑制字符: 该格式要求输入数据,但不赋值,即该格式要求输入数据,但不赋值,即在地址列表中没有对应有地址项。在地址列表中没有对应有地址项。宽度指示符:宽度指示符: 该输入项最多可输入的字符个该输入项最多可输入的字符个数。如遇空格或不可转换的字符,数。如遇空格或不可转换的字符,读
14、入的字符将减少读入的字符将减少。g/G输入指数形式的单精度实型数输入指数形式的单精度实型数输入一个字符串输入一个字符串s输入单个字符输入单个字符c字符型字符型数据数据 输入指数形式的单精度实型数输入指数形式的单精度实型数e输入小数形式的单精度实型数输入小数形式的单精度实型数f实型实型数据数据 输入无符号十六进制整型数输入无符号十六进制整型数x/X输入无符号八进制整型数输入无符号八进制整型数o/O输入无符号的十进制整型数输入无符号的十进制整型数u/U输入十进制整型数输入十进制整型数d/D整型整型数据数据 目录目录/FileName: chap3_7.c#include int main()int
15、 a, b, temp;printf(Please input a b:n);scanf(%d %d, &a, &b);temp = b;b = a;a = temp;printf(a = %d,b = %dn, a, b);return 0;实实例分析例分析运行结果如下:Please input a b:2 3a = 3,b = 2目录目录语语句句构构成成仅由分号“;”组成的语句称为空语句。空语句是不执行任何操作的语句。例如,while(getchar( ) !=n) ; /循环体为空语句空语句通常起到占位的作用,在程序没有完全开发完成前,可用空语句占位,以便后续开发填充代码
16、。 目录目录语语句句构构成成把多个语句用大括号括起来组成的语句称为复合语句。在语法上,复合语句相当于单条语句,而不是多条语句。其一般形式为: 语句语句1 语句语句n复合语句可以放在能够使用语句的任何地方,它建立一个新的作用域或块。复合语句是C语言中唯一不用分号“;”结尾的语句。 目录目录输入摄氏温度c的值,计算华氏温度f的值。(计算公式为:f=9*c/5+32)/FileName: chap3_8.c#include int main()float c,f;printf(Please input c:);scanf(%f, &c);f=9*c/5+32;printf(f = %6.2f
17、n, f);return 0;实实例分析例分析运行结果如下:Please input c: 28f = 82.40目录目录学习目标学习目标熟练掌握if语句的各种用法掌握switch语句的用法能够编写简单的选择结构程序目录目录if语句是实现选择结构最常用的语句,其作用是根据给定的条件,判断执行哪些语句,要执行的语句可能有一条或多条。if语句包括基本if语句、双分支if语句、多分支if语句和嵌套if语句四种形式。 目录目录基本基本if语语句句该语句的一般形式如下: if(表达式) 语句 功能:如果表达式的值为真,则执行其后面的语句,否则不执行该语句。 目录目录双双分支分支if语语句句这是if语句比
18、较完整的形式,包含一条if子句和一条else子句。该语句的一般形式如下:if(表达式)语句1 else 语句2 功能:如果表达式的值为真,则执行语句1,否则执行语句2。 目录目录多分支多分支if语语句句该语句的一般形式如下:if(表达式1)语句1else if(表达式2) 语句2 .else if(表达式n) 语句nelse 语句n+1功能:依次判断表达式的值,当出现某个表达式的值为真时,则执行其对应的语句,然后跳转到整个if语句之后继续执行程序;如果所有的表达式均为假,则执行else后的语句,即语句n+1。 目录目录多分支多分支if语语句句目录目录嵌套的嵌套的if语语句句 当if语句的操作语
19、句中包含其他if语句时,称为嵌套的if语句。该语句的基本形式如下: 目录目录功能:如果表达式1的值为真(非0),执行if子句的内嵌if语句,否则执行else子句的内嵌if语句。内嵌if语句就是if子句和else子句的操作语句,可以是上述if语句3种形式中的任何一种。说明:在嵌套的if语句结构中,一定要注意else与if之间的对应关系。在C语言中规定的对应原则是:elseelse总是与它前面最近的一个尚未匹配的总是与它前面最近的一个尚未匹配的ifif相匹配。相匹配。 嵌套的嵌套的if语语句句目录目录实实例分析例分析编写程序,输入一个x的值,按以下函数计算并输出y的值。 -1 (x0) 目录目录实
20、实例分析例分析目录目录实实例分析例分析/FileName: chap3_15.c#include int main( )int x,y;scanf(%d,&x);if(x0)y=-1;elseif(x=0)y=0;elsey=1;printf(y=%dn,y);return 0;目录目录实实例分析例分析求一个任意的一元二次议程ax2+bx+c=0的解。目录目录实实例分析例分析/FileName: chap3_16.c#include #include int main( )float a,b,c,d,x1,x2,p,q;scanf(%f,%f,%f,&a,&b,&
21、;c);if(a=0)printf(Input error!);elsed=b*b-4*a*c;if(d=0)printf(x=%fn,-b/(2*a);else if(d0)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%.2f, x2=%.2fn,x1,x2);else p=-b/(2*a);q=sqrt(-d/(2*a);printf(x1=%.2f+%.2fin,p,q);printf(x2=%.2f-%.2fin,p,q);目录目录C语言提供了一种switch语句专门处理多分支的情形,使程序变得简洁易懂。switch语句的一般
22、形式如下:switch(表达式) case 常量表达式1: 语句块1 case 常量表达式2: 语句块2 case 常量表达式n: 语句块n default: 语句块n + 1 功能:首先计算switch后面括号内的“表达式”,然后依次与各个case后面的“常量表达式”的值进行比较,当“表达式”的值与某一个case后面的“常量表达式”的值相等时,就选择这个标号作为入口,执行该case子句后面的语句块,并继续执行其后的所有case子句直到程序结束。如果“表达式”的值与所有case后面的“常量表达式”的值都不相等,则执行default后面的语句。 目录目录实实例分析例分析输入一个百分制成绩,要求输
23、出对应的成绩等级。/FileName: chap3_18.c#include int main( ) float score; int temp; char grade; printf(Please input the score:); scanf(%f,&score); temp=(int)score/10;switch(temp)case 10: case 9: grade=A; break;case 8: grade=B; break;case 7: grade=C; break;case 6: grade=D; break;default: grade=E;printf(sco
24、re is %.2f, grade is %cn,score, grade);return 0;目录目录学习目标学习目标熟练三种基本的循环控制语句掌握循环的嵌套能够应用基本的循环语句编写复杂的程序目录目录基本形式基本形式 目录目录语语句流程句流程目录目录实实例分析例分析用while循环求1100的累加和。 目录目录实实例分析例分析/FileName: chap3_21.c#include int main() int sum = 0 , i = 1; while(i = 100) sum = sum + i; i +; printf(sum = %dn, sum); return 0;运行结果
25、如下:sum=5050目录目录注意事注意事项项q 如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。q 在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 q 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。 目录目录基本形式基本形式目录目录语语句流程句流程目录目录实实例分析例分析用dowhile循环求n!。算法描述:(1)定义变量n,接受用户的输入;(2)定义累乘器变量multi,multi 1;(3)定义变量i,i 1;(4)如果 n 0,则给出相应的提示信息; 否则,如果 n = 0,则直接输出变量multi的值1;
26、否则,执行第56步。(5)如果i = n,则循环执行以下语句multi multi * i,实现累加功能;i +;(6)输出multi的值。目录目录实实例分析例分析/FileName: chap3_24.c#include int main() int n , i = 1; long int multi=1;printf(please input n(n=0):);scanf(%d,&n);if(n 0)printf(invalid input! );else if(n = 0) printf(%d! = %ldn, n, multi); elsedo multi = multi *i
27、; i+; while(i = n);printf(%d! = %ldn, n, multi);return 0;目录目录基本形式基本形式目录目录语语句流程句流程目录目录实实例分析例分析输出Fibonacci数列1、1、2、3、5、8、13的前20项,要求每输出5项后换行。目录目录实实例分析例分析目录目录实实例分析例分析/FileName: chap3_29.c#include int main()int f1,f2,f,i;f1=f2=1;printf(%10d%10d,f1,f2); /前2项先输出for(i=3; i=20; i+) /迭代从第3项开始f=f1+f2; f1=f2; f2
28、=f;printf(%10d,f); /一行输出够五个,就换行if(i%5=0) printf(n);return 0;目录目录q 省略表达式1、2、3,即: for ( ; ; )for ( ; ; )就等同于:while (1),会无限循环(死循环)q 省略表达式1和表达式3,即: forfor(;(;表达式表达式2 2;);)就等同于:while( 表达式2 )q 省略表达式2,即: forfor(表达式表达式1 1; ;表达式;表达式3 3)就等同于:表达式1; while(1)表达式3;注意事注意事项项目录目录如果将一个循环语句放在另一个循环语句的循环体中,就构成了循环的嵌套。内嵌的
29、循环结构内还可嵌套循环结构,构成多层嵌套。3种循环语句都可以在循环嵌套中使用。 目录目录实实例分析例分析输入n的值,计算并输出1n的阶乘之和。目录目录实实例分析例分析目录目录实实例分析例分析/FileName: chap3_30.c#include int main()int n,s,i,j,t;scanf(%d,&n);s=0;i=1;while(i=n)t=1;for(j=1; j=i; j+)t=t*j;s=s+t;i+;printf(The result is %dn,s);return 0;目录目录学习目标学习目标熟练break和continue语句的用法能够应用break和continue语句解决实际问题目录目录基本形式基本形式break语句除用于退出switch结构外,还可用于由while、dowhile和for构成的循环结构中。当执行循环体遇到break语句时,break所在循环将立即终,从循环语句后的第一条语句开始继续往下执行。break语句的一般形式如下:break ;目录目录语语句流程句流程目录目录实实例分析例分析算法描述:(1)接收用户输入的m的值;(2)循环变量赋初值i 2, 循环条件i = m-1,循环变量i+,循环执行以下语句:如果m能被i整除,则结束循环。(3)循环结束后判断m与i的关系,如果m等于i,则输出m是素数。否则输出m不是素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 1111-2026调制度测量仪校准规范
- T/SDMTGM 0002-2018热成形生产线用高速双臂机械手
- T/JX 029-2024“金平湖”葡萄
- T/CCSAS 060-2025涉氢建筑物及容器泄爆设计方法
- T/CCPS 0002-2023青少年艺术素养(音乐)水平评价规范
- T/CSPSTC 141-2024海域管道水平定向钻施工技术规范
- GB/T 33897-2026生物聚酯聚羟基烷酸酯(PHA)吹塑薄膜
- AI在科学史中的应用
- PHP程序设计期末考核试题(含详细答案)
- 2026年福建省综合性评标专家库评标专家考试练习题及答案
- 九年级音乐教学设计:悠远古风单元整体教学与核心素养落实研究
- 2026中国眼科创新药物研发趋势及商业价值评估研究
- JJF 2463-2026烟气含湿量测量仪校准规范
- 2026年医院无废医院管理制度
- 《刑事证据制度》课件
- 高速公路土建日常养护管理表格
- 《苏幕遮》1(周邦彦)课件 高二语文
- 一年级《红色文化》(上册)全册教案
- 光伏项目施工总进度计划表(含三级)
- 国家开放大学《Python语言基础》实验2:基本数据类型和表达式计算参考答案
- 电气二次回路拆、接线作业规定
评论
0/150
提交评论