c程序设计第二章 39页

合集下载

C语言程序设计(谭浩强版)第二章

C语言程序设计(谭浩强版)第二章
奇妙的输出结果。并且,处理出错的方法
不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
4.高效率与低存储量需求
通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需 的最大存储空间, 两者都与问题的规模有关。
算法设计的原则
算法的时间复杂度
第二章 程序的灵魂——算法
2.1 算法的概念 2.2 算法的简单举例
2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
算法的概念
计算机应用: 提取数学模型—设计算法— 编程—测试—应用
程序设计=数据结构+算法
数据结构:对数据的描述 算法:对操作的描述 除此之外程序设计还包括:程序设计方法, 和程序设计语言
怎样表示一个算法
例4的伪代码表示法如下 开始 读入整数n 置sum的初值为0 置k的初值为1 执行下面的操作: 如果k为奇数,置item=1/k 如果k为偶数,置item=-1/k sum=sum+item 直到k>n 打印sum的值 结束
算法设计的原则
算法设计的原则
设计算法时,通常应考虑达到以下目标: 1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
从算法中选取一种对于所研究的问题 来说是 基本操作 的原操作,以该基 本操作 在算法中重复执行的次数 作 为算法运行时间的衡量准则。
结构化程序设计方法
采用结构化算法写成的计算机程序是结构 化程序。要编写出结构化程序,经常采用 的方法是结构化程序设计方法。这种方法 的基本思路是: 把给定的问题按层次(纵方向)、分阶段 (横方向)分解为一系列易于编程解决的 小问题,然后对应着这些分解的小问题, 设计结构化的算法,最后采用语言将算法 描述出来。这样一种程序设计方法就是结 构化程序设计方法。

C 程序设计(谭浩强完整版)第二章解析

C  程序设计(谭浩强完整版)第二章解析

一般变量都是用匈牙利命名法命名的。 int nCount; char chChoice;
整型数据
整型常量:
常量是根据其表面形式来判定,整型量即是没有小数点的 整数,范围:-231~(231-1) ,有三种形式: 1)十进制(默认方式)
2)八进制 以0开头
43 1345 87654
043, 056, 011
1
0
0
0
0
0
1
非打印字符
有些ASCII的字符代表某些操作,不能打印出来, 如回车、退格等,可用两种方式表示这些字符。 1)用ASCII码的形式 2)用转义字符 char re=13; char re=‘\n’;(p15)
转义字符 \a \n \t \b \r \f \v
含 响铃

ASCII代码 7 10 9 8 13 12 8
不同类型的整型数据间 { unsigned short a;的赋值归根到底就是一 short int b= -1; 条:按存储单元中的存 储形式直接传送。
void main() a=b; cout<<"a="<<a<<endl; unsigned short a;
}
结果:65535
a 1111111111111111
3)十六进制 以0x开头 0xdf(举例说明)
0x12
0xa3
0x34
#include<iostream.h>
void main(void)
{ int int10,int8,int16; //定义3个整型变量 int10=10; int8=010; int16=0x10; //默认为十进制 //八进制 //十六进制 输出 int10=10 int8=8 int16=16

C语言程序设计教程第2章程序流程

C语言程序设计教程第2章程序流程
画出
流程图
算法
确定
程序结构
变量类型
程序语句
(7)调试
调试
C语言程序设计
第二章 程序设计和程序结构
良好的程序编写风格会大大缩 短调试过程,附录4介绍了C语言程 序的一般书写风格,附录11介绍了 一些常见的错误。
C语言程序设计
第二章 程序设计和程序结构
2.1.2 算法
在实际的编程过程中要注意:
1、避免拿起题目就开始写程序的 2、应该先设计出合适的算法
第二章 程序设计和程序结构
本章概述
2.3程序结构 2.1程序设计与算法 2.4流程图及程序例子 2.2流程图
C语言程序设计
第二章 程序设计和程序结构
本章概述
• 本章主要介绍了C语言的程序结构、 流程图的绘制和程序设计的过程。 • 学习目标: • 1、理解程序的开发、设计过程 • 2、掌握C语言程序结构
C语言程序设计
第二章 程序设计和程序结构
其中最后一行的“Press any key to
continue”是VC6.0自动添加在每个
程序运行结果后面的一句提示信息,它
表示当程序执行结束时,操作者可以按
任意键返回到编辑界面。在后面的程序 运行结果中,将不再给出这一信息。
C语言程序设计
第二章 程序设计和程序结构
scanf("%d",&num1);
printf("Input the 2nd integer number: "); scanf("%d",&num2); sum=num1+num2; printf("sum=%d\n",sum); }
C语言程序设计

c程序设计 谭浩强 第2章

c程序设计 谭浩强 第2章
2.6结构化程序 设计方法 作业
我们的任务是用计算机解题,就是用计算机实现算法; 用计算机语言表示算法必须严格遵循所用语言的语法 规则。 【例2.7】求1×2×3×4×5用C语言表示。 main() { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf(“%d”,t); }
2.5.6计算机语 言
2.6结构化程序 设计方法 作业
15
将例2.2的算用流程图表示。
第二章 程序的灵魂— 算法 2.1设计步骤 2.2算法的概念 2.3算法举例 2.4算法的特性 2.5算法的表示 2.5.1自然语言 2.5.2流程图 2.5.3基本结构 2.5.N-S流程图 2.5.5伪代码
2.5.6计算机语 言
2.5.6计算机语 言
2.6结构化程序 设计方法 作业
14
【例2.6】将例2.1求5!的算用流程图表示。
第二章 程序的灵魂— 算法 2.1设计步骤 2.2算法的概念 2.3算法举例 2.4算法的特性 2.5算法的表示 2.5.1自然语言 2.5.2流程图 2.5.3基本结构 2.5.N-S流程图 2.5.5伪代码
18
三.三种基本结构和改进的流程图
第二章 程序的灵魂— 算法 2.1设计步骤 2.2算法的概念 2.3算法举例 2.4算法的特性 2.5算法的表示 2.5.1自然语言 2.5.2流程图 2.5.3基本结构 2.5.N-S流程图 2.5.5伪代码
顺序结构:
2.5.6计算机语 言
2.6结构化程序 设计方法 作业
2.6结构化程序 设计方法 作业
如果,n表示学生学号,ni表示第i个学生学号; g表示学生成绩,gi表示第i个学生成绩; 则算法可表示如下: S1: 1→i S2: 如果gi≥80,则打印ni和gi,否则不打印 S3: i+1→i S4:若i≤50, 返回S2,否则,结束。

C程序设计基础-PPT课件

C程序设计基础-PPT课件
第二章 C程序设计基础
2.1 常量和变量
注意符:号常量在其作用域内不能再赋值。
符号常量的好处:(1)含义清楚。(2)需改变时,“一改全改”。
2024/10/14
1
2.1 常量和变量
注意:
1、变量中的值:变量必须要有值才能参与运算,(如果一个变量
没有赋值,则该变量是一个随机值)变量可以在定义后与其赋值,也可以
2024/10/14
16
2.3 运算符与表达式
逻辑运算符和逻辑表达式
符号
例子 0&&0=0、0&&1=0、1&&0=0、1&&1=1
0||0=0、0||1=1、1||0=1、1||1=1 !1=0、!0=1
使用说明: ➢1、逻辑非优先级高于逻辑与和逻辑或,逻辑与和逻辑或优先级相同; ➢2、C语言规定:非0都表示“真”,只有0表示“假”; 例:6<4&&7>-3+!5
14
2.3 运算符与表达式
赋值运算符与赋值表达式
符号
功能
例子
=
将表达式右边的数据赋值给左边的变量
x=3+a
+=
将表达式右边的计算结果加上左边的变 量再赋值给左边的变量
x+=3+a等价于x=x+(3+a)
-=
将表达式右边的计算结果减去左边的变 量再赋值给左边的变量
x-=3+a等价于x=x-(3+a)
6~7
双精度(double): 8B 10-308 ~ 10308 15~16
长双精度: 16B 10-4931 ~ 104932 18~19

最新c--程序设计第二章解析教学讲义ppt课件

最新c--程序设计第二章解析教学讲义ppt课件

C++程序设计
• 关系表达式
– 由关系运算符连接的表达式。是一种简单的逻辑表达式。值为true 或false。
例如: a+b>c+d /*等同于(a+b)>(c+d),结果为0或1*/ y=a>b /*计算a>b的值0或1赋给y,y的值为0或1*/ a>b>c /*等同于(a>b)>c,先求a>b 的值,
❖ 嵌套在if分支中: if (<表达式1>) if (<表达式2>) <语句1>; else<语句2>;
❖ 嵌套在else分支中: if (表达式1) 语句1; else if (表达式2) 语句2; else if … else 语句n;
C++程序设计
配对关系实例:2.2.2
if
语句的嵌套 • else和if的配对关系 – ”就近配对“原则,相距最近且
//语句1: if(n%3==0)
还没有配对的一对if和else首先 配对
if(n%5==0) cout<<n<<″是15的倍数″<<endl;
else cout<< n<<″是3的倍数但不是5的倍数″<<endl;
//语句2:
if(n%3==0)
{
if(n%5==0) cout<<n<<″是15的倍数″<<endl;
float a,b,c; float delta,x1,x2; cout<<"输入三个系数a(a!=0), b, c:"<<endl; cin>>a>>b>>c; cout<<"a="<<a<<'\t'<<"b="<<b<<'\t‘<<"c="<<c<<endl; delta=b*b-4*a*c;

C语言程序设计 第2章 数据类型

C语言程序设计 第2章 数据类型

2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);

C程序设计教程2精品PPT课件

C程序设计教程2精品PPT课件

double result = radius * radius * 3.14 * 4 ;
cout << “The result is “<< result << “ \n “;
}
11/29/2020
11
函数(过程)说明:
函数:把相关的程序语句放在一起,完成特 定的功能,并给这些语句起一个名字。
求解中需要通过函数调用来实施求解时,便 要对函数的性质进行说明,说明其返回类型, 参数类型,参数个数。
11/29/2020
4
变量定义
定义变量的目的:
创建一个所需大小的实体空间给变量名; 说明变量的表示范围; 说明变量可以进行的运算等。
11/29/2020
5
变量定义
例:int a = 12 ;
存储单元
变量由变量名、数据类型和 内存地址
(1Byte)
……
值三部分组成,是可寻址的,
也就是说,能够通过内存地
11/29/2020
13
函数定义是在函数声明的基础上,对整个实现过
程进行详细定义.
格式:
<返回类型><函数名>(<参数表>)
{
<若干条语句> return 函数的返回值;
} 例如: double area(double ra){
double s = ra*ra*3.14;
return s ;
}
11/29/2020
11/29/2020
3
要使用名称来存放数据,必须先说明名称
说明语句分为定义语句和声明语句:
定义语句:在说明名称的同时,还给名称分 配了存储空间

c语言程序设计-第2章_算法

c语言程序设计-第2章_算法

C程序设计(第三版)
例2.7 将例2.2的算 法用流程图表示。打 印50名 学生中成绩在 80分以上者的学号和 成绩。
C程序设计(第三版)
如果如果包括 这个输入数据 的部分,流程 图为
C程序设计(第三版)
例2.8 将例 2.3判定闰 年的算法用 流程图表示
用流程图表示算法要比 用文字描述算法逻辑清 晰、易于理解。
完整的程序设计应该是:
数据结构+算法+程序设计方法+语言工具
C程序设计(第三版)
2.1 算法的概念
广义地说,为解决一个问题而采取的方 法和步骤,就称为“算法”。 对同一个问题,可有不同的解题方法和步骤 例: 求
n
n 1
100
• 方法1:1+2,+3,+4,一直加到100 加99次 • 方法2:100+(1+99)+(2+98)+…+(49 +51)+50 = 100 + 49×100 +50 加51次
C程序设计(第三版)
2.4 算法的表示
可以用不同的方法表示算法,常用的有: –自然语言 –传统流程图 –结构化流程图 –伪代码 –PAD图
C程序设计(第三版)
2.4.1 用自然语言表示算法 自然语言就是人们日常使用的语言,可 以是汉语或英语或其它语言。用自然语言 表示通俗易懂,但文字冗长,容易出现“ 歧义性”。自然语言表示的含义往往不大 严格,要根据上下文才能判断其正确含义 ,描述包含分支和循环的算法时也不很方 便。因此,除了那些很简单的问题外,一 般不用自然语言描述算法。
S2:如果≥80,则打印和,否则不打印。 S3:i+1 → i S4:如果i≤50,返回S2,继续执行。否则算法结束

C语言程序设计PPT课件(第2版)第2章-简单程序设计

C语言程序设计PPT课件(第2版)第2章-简单程序设计
语言程序设计-理论方法与实践(第2版)
2.2.1 用printf()函数输出数据
在“%”和格式控制符之间插进数字,表示输出项的最大域 宽。
例如: %3d 表示输出一个整数,域宽为3,当输出的 整数不足3位时,按右对齐显示。 %05d 表示输出一个整数,域宽为5,当输出 的整数不足5位时,在高位用0补充。 %9.2f 表示输出一个实数,域宽为9,保留2位 小数,整体长度不足9位时,按右对齐显示。 %8s 表示输出一个字符串,域宽为8,不足8个 字符时,按右对齐显示。
输出一个十进制无符号整数

%e
输出一个指数形式的浮点数

%x或%X
输出一个以十六进制表示的无符号整数

%O
输出一个以八进制表示的无符号整数

%g
自动选择%f或%e格式中输出宽度较短的一种形式

语言程序设计-理论方法与实践(第2版)
2.2.1 用printf()函数输出数据
printf()函数的转义字符及其功能
scanf()函数的参数由“"%d%d"”和 “&a,&b”两部分构成:“"%d%d"” 规定输入数据的格式,表示输入两 个整数;“&a,&b”指定接收数据的 变量分别是a和b。
语言程序设计-理论方法与实践(第2版)
2.2.2 用scanf()函数输入数据 scanf()是格式化输入函数,从标准输入设备为变
unsigned long
(2)实数型变量
float double
(3)字符型变量 char
float double char
类型名称
存储数据
有符号基本整型
有符号短整型

c语言程序设计第2章(谭浩强)

c语言程序设计第2章(谭浩强)

第2章程序的灵魂——算法1. 概念:为解决某一特定问题而采取的具体工作步骤和方法。

2. 举例◆计算1+2+3+……+100的值◆计算1×2×3×……×1000的值◆有50个学生,要求输出他们之中成绩在80分以上的学号和成绩◆判定2000-2500年中的每一年是否闰年3. 算法的表示(1) 自然语言(2) 流程图表示法(3) 伪代码表示法(4) 计算机语言表示法(2) 流程图表示法顺序结构、选择结构和循环结构流程图这三种基本结构有以下共同的特点:1. 只有一个入口;2. 只有一个出口;3. 结构中的每一部分都有被执行到的机会;4. 结构内没有死循环。

用上述基本结构的顺序组合可以表示任何复杂的算法结构,但是基本结构中的流程线使流程图显得较乱,于是1973年美国学者提出了一种新的流程图形式。

在这种流程图中,完全去掉了带箭头的流向线,全部算法写在一个矩形框内。

下面是三种控制结构的N-S图。

例1 求四个数的和算法一:在内存中设一累加用的存储单元S。

第1步:将存储单元S清零。

第2步:输入第1个数a1。

第3步:把a1加到存储单元S中。

第4步:输入第2个数a2。

第5步:把a2加到存储单元S中。

第6步:输入第3个数a3。

第7步:把a3加到存储单元S中。

第8步:输入第4个数a4。

第9步:把a4加到存储单元S中。

第10步:把存储单元S中的结果输出。

算法二:在内存中设一累加用的存储单元S和一计数用的单元I。

第1步:将累加单元S清零。

第2步:将计数单元I清零。

第3步:输入一个数A。

第4步:把A加到累加单元S中。

第5步:计数单元I的值增加1,即I+1=>I。

第6步:若I<4则转去执行第3步,否则,继续执行第7步。

第7步:输出存储单元S中的结果。

开始结束S+A=>S 0=>S 0=>I 输入A I+1=>I I<4输出S 0=>s0=>I输入A S+A=>S I+1=>I 直到I=4输出结果S N-S 图Y例2 求5!开始结束T*i=>t 1=>t 2=>i i+1=>i i>5输出S N例3 将50名学生中成绩在80分以上练习1:交换两个单元的内容。

C语言程序设计第二章课件PPT课件

C语言程序设计第二章课件PPT课件

一个简单的C程序例子
#include <stdio.h>
/*函数功能:计算两个整数相加之和 入口参数:整型数据a和b 返回值: 整型数a和b之和
*/ int Add(int a, int b) {
return (a + b); }
/*主函数*/ main() {
int x, y, sum = 0;
• 不要对变量所占的内存空间字节数想当然
• 用sizeof获得变量或者数据类型的长度
• 现象与危害 • 在平台间移植时会出现问题,导致数据丢失或者溢出
第19页/共26页
sizeof到底是什么?
• C语言的关键字,并非函数 • 计算类型占用的字节数
• 两种语法形式 sizeof(类型)
• 结果为类型占用的字节数 sizeof(表达式)
• 运算符(Operator) • 详见附录C
• 分隔符(Separator) • 空格、回车/换行、逗号等
• 其他符号 • {和}标识函数体或语句块 • /*和*/是程序注释的定界符
• 常量(Constant)
第5页/共26页
2.1.1常量(Constant)
• 在程序中不能改变其值的量 • 包括:
第17页/共26页
2.4如何计算变量或数据类型 所占内存空间的大小
• 一个位有多大? • 只能是0或者1,二进制
• 一个字节有多大? • 可以表示0~255之间的整数
第18页/共26页
不同类型占用的内存字节数不同
• 同种类型在不同的平台其占字节数不尽相同 • 如int在16位、32位和64位系统上分别占2、4和8个字节
bit(b) Byte(B) Kilobyte(KB)

《c语言程序设计基础》第二章

《c语言程序设计基础》第二章

2.3.3 2.3.3 2.3.3 2.3.3
input x: 2.5 f(2.50)=0.4 input x: 0 f(0.00)=0.0
分 支 结 构
语 句
软件测试的基本思想
程序运行时为什么输入2.5和 两个数 两个数? 程序运行时为什么输入 和0两个数?
根据程序的逻辑结构和功能设计,选取一些有代表性 的测试用例!
常量:在程序运行过程中,其值不能被改变 常量
——一个确定的数值(3.14)、字符(‘a’)或字符串(“Hi”)
常 量 、 变 量 和 数 据 类 型
变量:在程序运行过程中,其值可以被改变 变量
——数学公式中的自变量、因变量(y=2x+1)
变量使用
C规定:变量必须先定义后使用 变量必须先定义后使用 定义方法:
C解决方案: 解决方案: 解决方案 1. scanf( )-格式化输入 2. if 结构的使用 3. printf( )进阶
2.3 计算分段函数
2.3.1 2.3.1 2.3.1 2.3.1 格式
scanf(格式控制,地址表列) (格式控制,地址表列)
功能
将用户从键盘输入的数据存放至变量所代表的内存 的地址
常 量 、 变 量 和 数 据 类 型
基本数据类型
整型:int-4字节, long( int)-8字节 字符型:char-1字节 实型:float-4字节, double-8字节
常量、 常量、变量都有对应的数据类型
2.2 华氏温度与摄氏温度相互转换
算术运算
算术表达式
用算术运算符 运算对象 算术运算符将运算对象 算术运算符 运算对象连接起来的符合C语言语法 规则的式子
格 式 化 输 入 函 数

C高级语言程序设计第二章PPT课件

C高级语言程序设计第二章PPT课件

2021/4/6
北京邮电大学信息与通信工程学院
-34-
第34页/共135页
2.3 常量
• 编程时使用符号常量
可以增强程序的可读性 可以增强程序的可维护性
2021/4/6
北京邮电大学信息与通信工程学院
-35-
第35页/共135页
2.3 常量
• 整型常数
C++中的整型常数可以使用多种数制 十进制数:100
-9-
第9页/共135页
2.2 基本数据类型
什么是数据类型?
数据是程序处理的对象,数据根据其本身的特点进行分类,从而形成不同的数据类型。 例如:数学中有自然数、整数、实数
不同类型的数据有不同的表示和处理方法,具有不同运算规则
2021/4/6
北京邮电大学信-10息- 与通信工程学院
第10页/共135页
2021/4/6
北京邮电大学信-12息- 与通信工程学院
第12页/共135页
2021/4/6
1、short:
仅用来修饰int,称为短整型,占2字节内存, 也可直接简写为short;
2、long:
仅修饰int和double,在不同的编译环境中使用 long修饰的double类型数据所占内存不同。
3、unsigned:
常数:程序中使用的具体的数据。
2021/4/6
北京邮电大学信息与通信工程学院
-32-
第32页/共135页
2.3 常量
• 符号常量
C++中提供了一个关键字const,用来区分常量和变量。由于常量在程序运行过程中不能够被改变,所 以要求常量在定义的时候必须进行初始化。
符号常量的定义格式: const 数据类型 常量名 = 常量值;

幻灯片C语言程序设计第2章PPT课件

幻灯片C语言程序设计第2章PPT课件

[例2.4]求1-1/2+1/3-1/4+…+1/99-1/100
算法如下: S1:sign=1 S2:sum=1 S3:deno=2 S4:sign=(-1)*sign S5:term=sign*(1/deno) S6:sum=sum+term S7:deno=deno+1 S8:若deno100返回S4;否则算法结束。
(5)有效性。算法中的每一个步骤都应当能有效地执行, 并得到确定的结果。
11
2.4 怎样表示一个算法
为了表示一个算法,可以用不同的方法。 常用的方法有:
自然语言 传统流程图 N-S流程图 伪代码 PAD图等。
12
2.4.2 用流程图表示算法
13
[例2.6]将例2.1求5!的算法用流程图表示
14
C程序设计
Email: lliunan@
1
整体概况
概况一
点击此处输入 相关文本内容
01
概况二
点击此处输入 相关文本内容
02
概况三
点击此处输入 相关文本内容
03
2
第2章 程序的灵魂-算法
一个程序包括以下两个方面的内容: (1)对数据的描述。在程序中要指定数据的类型和数据的 组织形式,即数据结构。 (2)对操作的描述。即操作步骤,也就是算法。
10
2.3 算法的特性
(1)有穷性。一个算法应包含有限的操作步骤,而不能 是无限的。
(2)确定性。算法中的每一个步骤都应当是确定的,而 不应当是含糊的、模棱两可的。
(3)有零个或多个输入。所谓输入是指在执行算法时需 要从外界取得必要的信息。
(4)有一个或多个输出。算法的目的是为了求解,“解” 就是输出。

C语言程序设计课件ppt及程序代码第2章算法

C语言程序设计课件ppt及程序代码第2章算法

2020/5/29
5
2.2 简单算法举例
• 例2.4 求1-1/2+1/3-1/4+...+1/99-1/100 算法如下 :
S1: sign=1
S2: sum=1
S3: deno=2 S4: sign=(-1)×sign S5: term=sign×(1/deno)
S6: sum=sum+term
2020/5/29
14
2.4 怎样表示一个算法
• 例 2.10: 用流程图算法判断素数
2020/5/29
此处应该填写什 么?
15
2.4 怎样表示一个算法
• 例 2.10: 用流程图算法判断素数
2020/5/29
n-1,sqr(n)
16
2.4 怎样表示一个算法
• 可以看出流程图所包含的部分: (1)图框:表示相应操作; (2)流程线:表示操作的先后顺序; (3)框内外必要的文字说明。 • 流程图表示算法: 优点:形象直观、表示清晰,各框之间逻辑关系清
24
2.4 怎样表示一个算法
算法用伪代码表示:
• 例2.16 求5! 算法用伪代码表示 • BEGIN(算法开始) • 1→t • 2→i • While i<=5 •{ • t×i →t • i+1 →i •} • print t • END(算法结束)
2020/5/29
程序的灵魂——算法
算法的概念 简单算法举例 算法的特性 怎样表示一个算法 结构化程序方法 总结
2020/5/29
1
2.1 算法的概念
• 程序通常包含的内容有:
(1)数据的描述:指定数据的类型和组织形式(数据结构) (2)操作的描述:编程的操作步骤,也称算法(algorithm)

C语言程序设计第二章

C语言程序设计第二章

2.2 理论知识
运行结果:
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串常量是用一对双引号括起来的零个或多个字符
如"","Hello,world!","123"等
双引号仅起定界作用,本身并不是字符串中的内容
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串的长度 指一个字符串中所包含的字符个数 C语言规定在存储字符串常量时,由系统在字符串的末 尾自动加一个'\0'作为结8.539815
2.2 理论知识
符号常量的两个好处
1. 修改程序方便 2. 见名知意,便于理解程序
符号常量的使用
1. 其值在它的作用域内不能改变,也不能再被赋值 2. 符号常量名用大写,变量名用小写,以示区别
2.2 理论知识
举例:
#define PI 3.1415
void main() { int PI; PI=3.1415; PI=3.14159; }
指针类型 构造类型 空类型
数组类型
结构体类型
共用体类型
2.2 理论知识
C语言的基本数据类型 整数类型
数据类型 有符号整型
短整型 长整型
int a,b,sum; a=32768;
数据类型符 int
short long [int] [int]
占用字节数 2
2 4




-215~(215-1) 即-32768~32767
2.2 理论知识
常量和变量 变量的赋值
在定义变量时赋值 float data1=1.5,data2=2.6;
“先定义后赋值
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:将算法(求5!)用C语言表示。
#include <stdio.h> int main( ) { int i,t;
t=1; i=2; while(i<=5) { t=t*i;
i=i+1; } printf("%d\n",t); return 0; }
例:将算法(求多项式的值)用C语言表示。
11111 1 2 3 4 99100
自顶向上,逐步细化:将问题求解由抽象逐步具体化的设计过程。
比如设计房屋,先进行整体规划,然后确定建筑物方案,再进行各个部 分的设计,最后进行细节的设计(门窗,楼道等),而绝不会在没有整体方 案之前先设计楼道和厕所。而在完成设计,有了图纸之后,在施工阶段则 是自下而上实施的,用一砖一瓦实现一个局部,最后由各个部分组成一个 建筑物。
由以上3种基本结构顺序组成的算法结构,可以解决任何复杂的问题。 由基本结构所构成的算法属于“结构化”的算法,不存在无规律的转 向,只在本基本结构内才允许存在分支和向前或向后的跳转。
由三种基本结构派生出来的结构:
B
A
Y p2 N
根据表达式p的值进行选择
A
B …M
N
(4)用N-S流程图表示算法
A
则输出 hens加1}
cocks加1}
(2)计算机语言写出程序 #include<stdio.h>
int main ( ) { int cocks=0.hens,chicks;
while(cocks<=19) { hens=0; while (hens<=33) {chicks=100-cocks-hens;
开始
1t
如果需要将最后结果输出:
2i t*it
i+1i
N
i>5
Y 结束
例、求1*2*3*4*5。将该算法用流程图表示。
开始
1t
如果需要将最后结果输出:
2i t*it
i+1i
N
i>5
Y
结束
输出t
例、 判定2000—2500年中的每一年是否闰年,将结果输出。 将该算法用流程图表示。
开始
C程序设计
主讲人:袁丽
燕大里仁基础教学部
第二章:算法—程序的灵魂
1
什么是算法
2 算法的特性 3 算法的表示
4 结构化程序设计方法
一个程序主要包括两方面的信息:
对数据的描述:在程序中要指定用到哪些数据以及这些数据 的类型和数据的组织形式。即数据结构(data structure)
对操作的描述:即要求计算机进行操作的步骤,也就是算法 (algorithm)
对同一个问题,可以有不同的解题方法和步骤 为了有效地进行解题,不仅需要保证算法正确,还要考虑算法 的质量,选择合适的算法
计算机能执行的算法,为计算机算法。其可分为两大类别: 数值运算算法和非数值运算算法。
数值运算的目的是求数值解 非数值运算包括的面十分广泛,最常见的是用于事务管理领域
例1、求1*2*3*4*5。
if(5*cocks+3*hens+chicks/3==100) printf(“%d%d%d\n”,cocks,hens,chicks);
hens++;
} cocks++; }
return 0; }
谢谢!
39
三、上机调试:输入(编辑)程序---编译、连接、执行程序---输出结果
举例:
《算经》中提出“百鸡问题”:鸡翁一值钱五,鸡母一值钱三, 鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
(体会编程步骤)
(1)分析:cocks+hens+chicks=100 5*cocks+3*hens+chicks/3=100 其中,0 ≤cocks ≤19 , 0 ≤hens ≤33 ,0 ≤chicks ≤100
(2)用流程图表示算法
流程图是用一些图框表示各种操作。
一个入口 Y
两个出口 ……
x≧0
N
……
菱形框的作用是对一个给定的条件进行判断,根据给定的条件 是否成立决定如何执行其后的操作。
位置不够
防止交叉
连接点(小圆圈)是用于将画在不同地方的流程线连接起来。
例、求1*2*3*4*5。将该算法用流程图表示。
数据是操作的对象;操作的目的是对数据进行加工处理,以 得到期望的结果 著名计算机科学家沃思提出的一个公式:算法+数据结构=程序
算法就是解决问题的思路。有好的算法,才会有好的程序。算法是程序的精髓。 类比于我们平常用的汉语,我们都能看懂普通的文字,但不是每个会说普通话的人 都能写出漂亮的文章。
一个程序除了算法和数据结构这主要要素外,还应当采用结 构化程序设计方法进行程序设计,并且用某一种计算机语言表 示
两可。也就是说算法的含义应当是唯一的,而不可以产生“歧义性”
有零个或多个输入:所谓输入是指在执行算法时需要从外界取得
必要的信息。一个算法可以有两个或多个输入,也可以没有输入。
有一个或多个输出:算法的目的是为了求解,“解”就是输出。
但算法的输出并不一定就是计算机的打印输出或屏幕输出,一个算法 得到的结果就是算法的输出,没有输出的算法是没有意义的。
四、结构化程序设计方法
用三种基本结构组成的程序是结构化程序
结构化程序设计强调程序设计风格和程序结构的规范化, 提倡清晰的结构。
结构化程序设计方法的基本思路是:把一个复杂问题的求 解过程分阶段进行,每个阶段处理的问题都控制在人们容 易理解和处理的范围内。
采取以下方法保证得到结构化的程序: (1) 自顶向下; (2) 逐步细化; (3) 模块化设计; (4) 结构化编码。
Y pN
A
B
Yp N A
(3)循环结构 ① 当型循环结构
p1 N Y
A
输出1,2,3,4,5
0x
N x<5
Y x+1x
输出x的值
② 直到型循环结构 输出1,2,3,4,5
A
N p2 Y
0x x+1x 输出x的值
N x≧5 Y
以上三种基本结构,有以下共同特点: (1) 只有一个入口 (2) 只有一个出口 一个判断框有两个出口 一个选择结构只有一个出口 (3) 结构内的每一部分都有机会被执行到。也就是说,对 每一个框来说,都应当有一条从入口到出口的路径通过它 (4) 结构内不存在“死循环”
(5)用伪代码表示算法
伪代码是用介于自然语言和计算机语言之间的文字和符号来描 述算法
用伪代码写算法并无固定的、严格的语法规则,可以用英文, 也可以中英文混用
例:求5!。
begin
(算法开始)
1t
2i
while i≤5
{ t*i t
i+1 i
}
print t
end
(算法结束)
例: 求 11111 1 2 3 4 99100
p
Y
N
当p1成立
B
AB
A
A 直到p2成立
顺序结构 选择结构
循环结构 (当型)
循环结构 (直到型)
例:求5!算法用N-S图表示。
1t 2i t*it i+1i 直到i>5 输出t
例:将50名学生中成绩高于80分者的学号和成绩输出。将该算法用
N-S图表示。
1i
输入ni、gi
i+1i
直到i>50
例2、有50个学生,要求输出成绩在80分以上的学生的学号和成绩。
例3、给出一个大于或等于3的正整数,判断它是不是一个素数。
二、算法的特性
有穷性:一个算法应包含有限的操作步骤,而不能是无限的。
有穷性往往指“在合理的范围之内”。“合理限度”由人们的常识 和需要判定。
确定性:算法的每一个步骤都应当是确定的,不应当含糊和模棱
begin 1 sum 2 deno 1 sign while deno ≤ 100 { (-1)*sign sign sign*1/deno term sum+term sum deno+1 deno } print sum
end
(6)用计算机语言表示算法
要完成一项工作,包括设计算法和实现算法两个部分。 设计算法的目的是为了实现算法。 不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。
累试法(枚举法)求解
算法描述: cocks=0 当cocks ≤ 19时
{找满足题意的hens,chicks数 cocks加1 }
细化
cocks=0 当cocks ≤ 19时
{hens=0 当hens ≤ 33时 {找满足题意的chicks数
hens加1} hens加1

细化
cocks=0
当cocks ≤ 19时 {hens=0 当hens ≤ 33时 {chicks=100-cocks-hens 如果(5*cocks+3*hens+chicks/3=100)
1i 是 gi≧80 否 输出ni,gi
i+1i 直到i>50
例:将判定闰年的算法用N-S图表示
一个结构化的算法是由一些基本结构顺序组成的
在基本结构之间不存在向前或向后的跳转,流程的转移只 存在于一个基本结构范围之内
一个非结构化的算法可以用一个等价的结构化算法代替, 其功能不变
如果一个算法不能分解为若干个基本结构,则它必然不是 一个结构化的算法
3.流程线不要忘记画箭头,否则难以判定各框的执行次序。
(3)三种基本结构和改进的流程图
1.传统流程图的弊端 传统的流程图用流程线指出各框的执行顺序,对流程线
相关文档
最新文档