最新C语言第2章
C语言第2章(谭浩强)

§ 2.4
怎样表示一个算法
表示方法: 1、自然语言 2、传统流程图 3、N—S流程图 4、结构化流程图 5、伪代码 、PAD图
10
2.4.1 用自然语言表示算法
用自然语言表示通俗易懂,但容易出现 “歧异性”。
2.4.2 用传统流程图表示算法
直观形象,易于理解。成为世界各国程序 工作者普遍采用。 下面给出传统流程图的说明:
2
§2.1
算法的概念
做任何事情都有一定的步骤,这些步骤都 是有一定的顺序。如:起床上学,用电脑画画, 弹奏乐曲。不要以为只有“计算”的问题才有 算法的。
什么叫做算法?广义:为解决一个问题而采 用的方法和步骤就称为“算法”。
例如:求 1+2+3+4+……+100 可先算1+2、再加3、再加4……直到加上100; 也可采用 100+(1+99)+(2+98)+……+ (49+51)+50 3 本书所关心的算法只限于计算机算法。
5
例2.2 有50个学生,将成绩在80分以上的学 号和成绩打印出来。 说明:n:学号,ni:第i个学生学号,g:成绩, gi:第i个学生成绩 步骤如下: S1:1=>i S2:若gi>80,则输出ni和 gi ,否则不输出。 S3:i+1=>i S4:若i小于等于50,则返回 S2继续执行; 否则算法结束。
著名计算机科学家沃思提出一个公式: 数据结构+算法=程序 实际上,一个程序还应当采用结构化程序设计 方法进行程序设计,并且用某一种计算机语言表示。 因此,可以这样表示。 程序=算法+数据结构+程序设计方法+语言 以上四个方面是一名程序设计员所应具备的知 识。在这四个方面中,算法是灵魂,是解决“做什 么”和“怎么做”的问题。数据结构是加工对象, 语言是工具,编程需要采用合适的方法。
C语言第2章

方法2:
不是所有能解决问题的方法都适合在计算机上运行!
4
§2.3 算法特性
1.有穷性:一个算法应该包含有限的操作步骤,而不是 无限的。 2.确定性:算法中的每一个步骤都应当是确定的,而不 应当是含糊的、模棱两可的。 3.有零个或者多个输入。(即从外界获得的必要信息) 4.有一个或多个输出。 5.有效性:算法中的每一个步骤都应当能有效地执行, 并得到确定的结果。
(1)自顶向下 (2)逐步细化
10
(3)模块化设计 (4)结构化编码
第2章作业
第36页 4(4)、4(5)、4(7)
11
5
§2.4算法的表示(用流程图表示算法)
起止框 处理框 判断框 输入/出框 流程线
连接点 注释框
6
例2.1 计算265的平方根
顺序结构
开始 X=265 Y=√X Y 结束
7
N—S图
开始 X=265 Y=√X
输出Y 结束
例2.2
打印X的绝对值
开始
N—S图
输入x
分支结构
xyX>=来自?ny打印x
X>=0
2
§2.2 简单算法举例
2.1求1×2×3×4×5。
2 6 24 120
3
方法1:
5个数乘法需要乘4次,
1000个数,需要多少次?
太繁琐!
§2.2 简单算法举例
s1:p=1; s2:i=2; s3:p=p*I; s4:i=i+1; s5:如果i不大于5,返回重新执行s3 、s4、s5,否则p中即为所求值。
n
x
结束
-x
打印
-x
8
例2.3 计算1到100的和。
c语言 第2章

28/49
结合性:自右至左。
设初值a=3;b=5; 如: i=2; 1. c=(a++)*b; j=-i++; 等价于:j=-(i++); c=a*b 即: j=-i;i++; a=a+1 “++”与”-“是同优先级 //c=15,a=4 2. 所以i的值为3,j的值为-2。 c=(++a)*b; a=a+1 //c=20,a=4 c=a*b
20/49
转义字符表
字符形式 功 能
\n
\t \v \b \r \f \\ \' \"
换行
制表字符,也叫横向跳格字符 竖向跳格 退格 回车 走纸换页 反斜杠字符 单引号字符 双引号字符
\ddd
\xhh
1~3位八进制数表示的字符
1~2位十六进制数表示的字符
21/49
使用这种方法可以用来表示字符集中的 任何一个字符,特别是“控制字符”。 例如,‘\7’、‘\07’、‘\007’ 三个都表示响铃字符(bell)。 ‘\101’,‘\x41’都代表字母‘A’。
§ 2.整型常量 § C语言中整型常量通常用十进制、八进制或十六进制 三种数制来表示。
§ (1)十进制数形式:十进制整数表示方法与数学上 的整数表示方法相同,例如:200, -100, 0
§ (2)八进制数形式:八进制整数在数码前加数字0 (注意不是字母o)。例如:0144 § (3)十六进制数形式:十六进制整数在数码前加0X。 例如:0xFFFF § 另外,在整型常量的末尾加上字母L或l,就组成了长 整型常量,如981016L、0L等。
int a=5, b=3; √ int a=b=c=3; int a,b,c; a=b=c=3;
C语言 第2章

2.2.2 整型变量
整型变量在计算机中占两个字节。 整型变量在计算机中占两个字节。 用以说明整型变量的关键字( 用以说明整型变量的关键字(也称为数据类型 int。 符)为int。 定义变量数据类型语句的一般格式为: 定义变量数据类型语句的一般格式为: 数据类型符 变量名1,变量名2,……; 变量名1 变量名2
第2章 基本数据类型、操作符和表达式 基本数据类型、
2.1 数据类型 2.2 整形数据 2.3 实型数据 2.4 字符型数据与字符串 2.5 变量说明与初始化 2.6 运算符和表达式
2.1
数 据 类 型
在C语言中,数据的类型分为基本数据 语言中, 类型、构造类型、指针类型和空值类型。对 类型、构造类型、指针类型和空值类型。 于每一种数据类型的数据,又有分成几种不 于每一种数据类型的数据, 同类型,如图2.1所示。 所变量用来存储实型数据。 实型变量用来存储实型数据。实 型变量分为如下两种。 型变量分为如下两种。
(1)单精度实型变量或简称实型变量或浮点型 变量,其类型标识符为float 变量,其类型标识符为float; float; (2)双精度实型变量或称双精度浮点型变量, 双精度实型变量或称双精度浮点型变量, 其类型标识符为double 其类型标识符为double 。
\ddd
例 main() 3位8进制数代表的字符 { }
\xhh
printf(“Y\b=\n”);
2位16进制数代表的字符 运行结果:
屏幕显示:= 打印机输出:¥
2.4.2 字符型变量
字符型变量是C语言的一种数据类型, 字符型变量是C语言的一种数据类型, 用关键字( 类型符) char说明 说明, 用关键字 ( 类型符 ) char 说明 , 用于存储 字符常量或数值。 字符常量或数值。 一个字符型变量只能存储一个字符, 一个字符型变量只能存储一个字符,它 是以该字符的ASCII 码值存储的 码值存储的, 是以该字符的 ASCII码值存储的 , 并占一 个字节的宽度。例如,字母a ASCII码是 个字节的宽度。例如,字母a的ASCII码是 97,在变量的内存中存储的就是97。 97,在变量的内存中存储的就是97。
《C语言程序设计》第二章基本数据类型

《C语⾔程序设计》第⼆章基本数据类型⽬录:2.1 常量与变量2.1.1 常量2.1.2 变量2.2 简单的屏幕输出2.3 数据类型2.4 如何计算变量或数据类型所占内存空间的⼤⼩2.5 变量的赋值和赋值运算符2.6 本章扩充内容2.7 本章知识点⼩结2.8 本章常见错误⼩结2.1.1 常量不同类型的整型常量实例特点有符号整型常量10,-30,0默认的int型定义为有符号整数,因此对int型⽆须使⽤signed⽆符号整型常量30u,256U⽆符号整型常量由常量值后跟U或u来表⽰,不能表⽰成⼩于0的数,如-30u就是不合法的长整型常量-256l,1024L长整型常数由常数值后跟L或l来表⽰⽆符号长整型常量30lu⽆符号长整型常量由常数值后跟LU、Lu、lU或lu来表⽰不同类型的实型常量实例特点单精度实型常量 1.25F,1.25e-2f单精度实型常量由常量值后跟F或f来表⽰双精度实型常量0.123,-12.35,.98实型常量隐含按双精度型处理长双精度实型常量 1.25L长双精度型常量由常量值后跟L或l来表⽰2.1.2 变量定义变量的⼀般形式:类型关键字变量名;关键字(Keyword):C语⾔预先规定的、具有特殊意义的单词auto :声明⾃动变量break:跳出当前循环case:开关语句分⽀char :声明字符型变量或函数返回值类型const :声明只读变量continue:结束当前循环,开始下⼀轮循环default:开关语句中的“默认”分⽀do :循环语句的循环体double :声明双精度浮点型变量或函数返回值类型else :条件语句否定分⽀(与 if 连⽤)enum :声明枚举类型extern:声明变量或函数是在其它⽂件或本⽂件的其他位置定义float:声明浮点型变量或函数返回值类型for:⼀种循环语句goto:⽆条件跳转语句if:条件语句int:声明整型变量或函数long :声明长整型变量或函数返回值类型register:声明寄存器变量return :⼦程序返回语句(可以带参数,也可不带参数)short :声明短整型变量或函数signed:声明有符号类型变量或函数sizeof:计算数据类型或变量长度(即所占字节数)static :声明静态变量struct:声明结构体类型switch :⽤于开关语句typedef:⽤以给数据类型取别名unsigned:声明⽆符号类型变量或函数union:声明共⽤体类型void :声明函数⽆返回值或⽆参数,声明⽆类型指针volatile:说明变量在程序执⾏中可被隐含地改变while :循环语句的循环条件int main(void){int a; //⽤关键字int指定变量a的类型float b; //⽤关键字float指定变量b的类型char c; //⽤关键字char指定变量c的类型a=1; //为int型变量a赋值整型变量1b=2.5; //为float型变量b赋值实型变量2.5c='A'; //为char型变量c赋值字符型变量'A'return0;}⼀个C 程序必须且只能有⼀个⽤main作为名字的函数,这个函数成为主函数;main后⾯圆括号内的void表⽰它没有函数参数;main前⾯的int表⽰函数执⾏后会返回操作系统⼀个整数型,在main函数的函数体中的最后⼀条语句使⽤return语句返回了这个值,通常返回0表⽰程序正常结束。
C语言_第2章

printf(“请输入圆柱体底面圆的半径:%n”); scanf(“%d”, &cRadius); volume = calculateVolume(cHeight, cRadius); printf(“圆柱体的体积是:%f\n”, volume); return 0; } double calculateVolume(int height, int radius) { double result = height * PI * radius * radius; return result; }
2.1 进一步认识C语言程序
2.1 进一步认识C语言程序
C语言程序的组成部分
2.2 声明区 2.2.1 头文件
#include 包含头文件 例如:#include <stdio.h> C语言标准库
2.2 声明区 2.2.2 函数声明
函数声明的一般形式: 返回值类型 函数名(参数类型1, 参数类型2, ……);
第一层次的语句通常在高一层次的语句留一个缩进后另起一行书写
合理的代码注释
格式一:
if
{
//“{”独占一行
语句块; // 缩进
}
//“}”独占一行
格式二:
if {
//“{”与if占一行
语句块; // 缩进
}
//“}”独占一行
//“}”独占一行
2.7 实战练习
输入两个整数x和y,输出两个数的和 输入两个实数x和y,输入它们的平均数 在Visual C++ 6.0中编写例题2.1,输入圆柱体的高为20,半径为 10,计算并输出圆柱体的体积 修改例2.2,使它可以正确运行(提示:在printf()函数前加上var 的声明语句)
C语言_第2章C语言程序设计基础ppt课件

#include<stdio.h>
void main()
{
int a,b;
printf("Input a,b=");
scanf("%d,%d",&a,&b);
printf("%d+%d=%d\n",a,b,a+b);
printf("%d-%d=%d\n",a,b,a-b);
printf("%d*%d=%d\n",a,b,a*b);
2.1 C语言的基本符号与数据类型 2.2 常量 2.3 变量 2.4 运算符与表达式 2.5 数据的输入/输出
2021/8/4Βιβλιοθήκη 精选课C 件语p言pt语言
17
2.3 变量
定义:即其值可以变化的量
• 一个变量应该有一个名字,在内存中占据一定的 存储单元。在该存储单元中存放变量的值。
• 注:区分变量名和变量值这两个不同的概念。
C规定了各种运算符的结合方向(结合性),算术 运算符的结合方向为“自左至右”,即先左后右, 因此b先与减号结合,执行a-b的运算,再执行加c的 运算。
精选课件ppt语言
34
34
➢ 自增、自减运算符:
• 作用是使变量的值增1或减1。
++ i ; -- i ; (在使用i之前,先使i的值加(减)1)
}
精选课件ppt语言
20
整型变量
➢ 整型数据在内存中的存放形式 • 数据在内存中是以二进制形式存放的,比如:
精选课件ppt语言
2211
实际上,数值是以补码表示的。一个正数的补码 和其原码的形式相同。下图就是用补码形式表示的。 如果数值是负的,在内存中如何用补码形式表示呢? 求负数补码的方法是:将该数的绝对值的二进制形式, 按位取反再加1。
C语言程序设计第二章

2.2常量和变量
变量的类型
2.3 整型数据
2.3.1整型常量 整型常量即整常数。在C语言中,整型常量可以用十进制、八 进制、十六进制3种形式表示。 1.十进制整数 由0~9共10个数码组成。如5234,-78,0等。注意:5234不能 写成5,234。 2.八进制整数 八进制整数必须以数字o开头,组成八进制的数码为0~7。如 o123,o101,o645,o763等。 3.十六进制整数 十六进制整数以0x或0X开头(0为数字),组成十六进制的数码为 0~9,A~F(a~f)。如0x99A,0X97C,0x59ff等。
基本类型 实型 字符类型 (char) 枚举类型 (enum) 数组类型([]) 结构体类型 (struct) 共用体类型 (union) 文件类型 (FILE)
单精度型 (float) 双单精度型 (double)
符号长整型 (unsigned long)
构造类型
C语言提供的数据类型如右所 示:
2.3 整型数据
3.整型变量的定义 整型变量的定义的格式如下: 类型标识 变量名1,变量名2,变量名3…… 类型标识符可以是int、short、long、unsigned,或是它们的组合,例 如: int x,y; //指定变量x、y为整型变量 long c,d; //指定变量c、d为长整型变量 unsigned age,hight; //指定变量age,hight为无符号整型变量 变量的定义,一般放在一个函数开头的声明部分。 4.整型变量的赋值 可以将一个整型常量或整型变量赋值给整型变量,例如: int x=456;
2.4 实型数据
2.4.1实型常量 在C语言中,实型表示实数的集合,实型常量又称为实数。实 型常量只能用十进制形式表示,不能用八进制或十六进制形式表示。 实型常量有两种表示形式 1.十进制小数形式 十进制小数形式由数码0~ 9和小数点组成。如0.123,.123, 0.0,0.1,-267.8230,0.,.0等。 2.十进制指数形式 由十进制数码,“e”或“E”(代表×10)组成。如1e5, 139.5E2,-1.99e-3(代表1×105,139.5×102,-1.99×10-3)等。 格式如下: 小数或整数e(或E)+(或-)整数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/10/15
16
算法表示如下: S1:输入n的值
S2:2 i ( i 作为除数)
S3: n 被 i 除,得余数 r S4: 如果 r 等于 0 , 表示 n 能 被 i 整除,则打印 n “不 是素数”,算法结束;否则执行S5
S5:i+1 i
S6: 如果 i n-1, 返回S3;否则,打印 n “是素 数”,算法结束。
C语言第2章
实际上,一个程序除了以上两个主要要素之外,还应当采用 结构化程序设计方法进行程序设计,并且用某一种计算机语 言表示。因此,可以这样表示:
程序=算法+数据结构+程序设计方法+语言工具和环境
在这4个方面中,算法是灵魂,数据结构是加工对象,语言 是工具,编程需要采用合适的算法。算法是解决“做什么” 和“怎么做”的问题。
2020/10/15
2
1、什么叫算法? 解决一个问题而采取的方法和步骤,就称为算法。
2、算法的特性 (1) 有穷性
一个算法应包含有限的操作步骤而不是无限的。
(2) 确定性 算法中的每一个步骤都应当是确定的,而不应当是 含糊的,模棱两可的。
2020/10/15
3
(3)有零个或多个输入 所谓输入是指在执行算法时需要从外界取得必要 的信息。
1=>i
gi≥80
是
否
输出ni,gi
i+1=>i
直到i>50
2020/10/15
11
4、用伪码表示算法 伪代码是用介于自然语言和计算机语言之间的文字和符号来 描述算法。它不用图形符号,因此书写方便,格式紧凑,也 比较好懂,便于向计算机语言算法(即程序)过渡。
例 有50个学生,要求将他们之中成绩在80分以上者打印出来。
2020/10/15
5
例1: 有50个学生 ,要求将他们之中成绩在80分以上者打印出来。
用n表示学号,n1代表第一个学生学号,ni代表第i个学生学号。 用g代表学生成绩, gi 代表第i个学生成绩,算法可表示如下:
S1:1i S2:读入学号ni和成绩ni S3: 如果gi 80 ,则打印 ni 和gi ,否则不打印 S4: i+1 i S5: 如果 i 50, 返回S2, 继续执行; 否则,算法结束。
2020/10/15
6
2、用流程图表示算法 (1)常用的流程图符号
2020/10/15
起止框 输入/输出框 判断框 处理框 流程线
7
上例用流程图表示:
流程图
(1) 流程图表示算法的优点: ①表示算法直观形象,比较清楚地显示出各个框之间 的逻辑关系。 ②简单,易于掌握。
2020/10/15
8
3、用N-S图表示算法
1973年美国学者I.Nassi和B.Shneiderman提出了 一种新的流程图形式。在这种流程图中,完全去掉 了带箭头的流程线。全部算法写在一个矩形框内, 在该框内还可以包含其他的从属于它的框。
这种流程图又称N—S结构化流程图。 N—S流程图用以下的流程图符号:
(1)顺序结构:
A
B
2020/10/15
2020/10/15
13
5、用计算机语言表示算法
设计算法的目的是为了实现算法。因此,不仅要考 虑如何设计一个算法,也要考虑如何实现一个算法。
我们的任务是用计算机解题,也就是要用计算机实 现算法。计算机是无法识别流程图和伪代码的。只 有用计算机语言编写的程序才能被计算机执行(当 然还要经过编译成目标程序才能被计算机识别和执 行)。因此,在用流程图或伪代码描述出一个算法 后,还要将它转换成计算机语言程序。
2020/10/15
18
结构化程序设计方法简介
1、三种基本结构回顾
a
(1)顺序结构 A
B
b
2020/10/15
19
(2)选择结构,或称选取结构
if(g[i]>=80) printf(“%6d,%3d\n”,n[i],g[i]); }
2020/10/15
15
简单的算法实例
例2:对一个大于或等于3的正整数,判断它是不是一个素数。
方法:将 n (其中n 3) 作为被除数, 将2 到(n-1) 各个整 数轮流作为除数,如果都不能被整除,则n为素数。
2020/10/15
14
例: 有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生 学号。用g表示学生成绩,gi表示第i个学生成绩。
C语言程序如下: main( ) {int g[50],n[50],i;
for(i=0;i<50;i++) scanf(“%d,%d”,&n[i],&g[i]); for(i=0;i<50;i++)
9
(2)选择结构:
成立 P 不成立
A (3)循环结构:
当p1成立
B A
A
直到p1成立
当型循环结构
直到型循环结构
ቤተ መጻሕፍቲ ባይዱ
用以上3种N—S流程图中的基本框,可以组成复杂的N—S流程图,以表示算法
2020/10/15
10
上例用N-S图表示:
用N—S表示算法如图
1=>i 输入ni,gi
i+1=>i 直到i>50
(4)有一个或多个输出 算法的目的是为了求解,“解”就是输出。 没有输出的算法是没有意义的。
(5)有效性 算法中的每一个步骤都应当能有效地执行,并得到 确定结果。
2020/10/15
4
算法的表示
1、用自然语言表示算法
采用汉语、英语或其它语言来描述解决问题的方法和步骤。 由于自然语言容易出现“歧义性”,且描述问题的文字冗长, 因此一般很少使用自然语言来描述算法。
2020/10/15
17
例3:求 1-1/2 + 1/3 –1/4 +…+ 1/99 –1/100。 S1: 1 sign S2: 1 sum S3: 2 deno S4: (-1)*sign sign S5: sign*(1/deno) term S6: sum+term sum S7: deno+1 deno S8: 若deno 100 返回S4;否则算法结束。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生 学号。用g表示学生成绩,gi表示第i个学生成绩。
2020/10/15
12
用伪代码表示算法如下:
BEGIN(算法开始) 1=>i While i<=50
{input ni and gi i+1=>i}
1=>i While i<=50
{if gi≥80 print ni and gi i+1=>i} END(算法结束)