谭浩强C语言课程第2章

合集下载

C语言(谭浩强)第2章数据描述

C语言(谭浩强)第2章数据描述
定点表示和浮点表示,是C语言基本数据类型 的重要特征。为了说明什么是“定点”,什么是 “浮点”,先看π值的几种表示形式: 日常的表示法 C语言中的表示形式 3.14159×100 3.14159e0 0.314159×101 0. 314159e+1 0.0314159×102 0.0314159e+2 31.4159×10-1 31.4159e-1 3141.59×10-3 3141.59e-3
• • • •
转义字符表
转义字符形式 \n \t \v \b \r \f \a \\ \? \“ \’ \ddd xhh 换行 水平制表 垂直制表 退格 回车 走纸换页 报警(如铃声) 反斜杠 问号 双撇号 单撇号 1~3位八进制常数 1~2位十六进制常数 意 义
例2.5 /* 文件名:ex020501.c */ /*打印人民币符号″¥″*/ #include <stdio.h> int main(void) { printf(″Y\b=\n″); return 0; }
/* 注意格式码 */ /* 注意格式码 */
例2.4 /* 文件名:ex020401.c */ #include <stdio.h> int main(void) { char c; c = 0362; printf (″%d\n″, c); return 0; } 运行结果: -14
2. 字符常量
下面不是合法的整型常量:
09876——(非十进制数,又非八进制数,因为有数 字8和9) 20fa——(非十进制数,又非十六进制数,因为不 是以0x开头) 0x10fg——(出现了非法字符)
2. 整数常量类型的确定
在C语言中整数可以进一步分为short、int、 long和long logn等类型。那么,对于一个常数如 何分辨其类型呢?一般说来,有以下原则: 1)默认原则:在没有任何特别标志的情况下,可 以按照常数所在的范围,决定其类型。例如,在 16位的机器中,当一个常整数的值在十进制32768~32767(八进制数0~0177777、十六制数 0x0~0xFFFF),则被看作一个short int或int型 整数。超出上述范围的整常数,则被看作长整数 (32位)表示。例如,234、32766、0177776、 0xFFFE等被看作是int型,而-32769、32768、 0200000、0x10000等被看作是long型。

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语言电子课件第01_02章

谭浩强(第二版)C语言电子课件第01_02章

1.2 C语言的特点 语言的特点
C语言的主要特点如下: 语言的主要特点如下: 语言的主要特点如下 1. 语言表达能力强 运算符丰富,表达式类型多样化 运算符丰富, 2. 结构化好 while语句结构化语句等,函数为单位 语句结构化语句等, 语句结构化语句等 3. 具有较强的数据类型构造能力 4. 语言精练 i+=2 (i=i+2); if (e) s ; 5. 可移植性好 6. 生成的代码质量高,程序的执行效率高 生成的代码质量高,
请读出该程序的功能 2 3 4 5 –10 –89 20 66 0
printf("Positive num is: %d\n",num1); printf("Negative num is: %d\n",num2);}
main() { int num1=0,num2=0; printf("input num"); scanf("%d",&x); while(x!=0) { if(x>0) num1=num1+1; else num2=num2+1; scanf("%d",&x);} printf("Positive num is: %d\n",num1); printf("Negative num is: %d\n",num2);}
i+=2 (i=i+2);
7.能实现汇编语言的大部分功能,可以直接对硬件 能实现汇编语言的大部分功能, 能实现汇编语言的大部分功能 进行操作。(可写系统软件UNIX及应用软件) 进行操作。 可写系统软件 及应用软件) 及应用软件
1.3 简单的 程序介绍 简单的C程序介绍

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语言全书word版第二章

谭浩强C语言全书word版第二章
2.4
2.4.1
除了很简单的问题,一般不用自然语言表示算法。
2.4.2
流程图表示算法,直观形象,易于理解。
【例2.6】将例2.1求5!的算用流程图表示。
【例2.7】将例2.2的算用流程图表示。
【例2.8】将例2.3判定闰年的算用流程图表示。
【例2.9】将例2.4求 的算用流程图表示。
一个流程图包括:
2程序的灵魂—算法1
2.1算法的概念1
2.2简单算法举例1
2.3算法的特性4
2.4怎样表示一个算法4
2.4.1用自然语言表示算法4
2.4.2用流程图表示算法4
2.4.3三种基本结构和改进的流程图8
2.4.4用N-S流程图表示算法9
2.4.5用伪代码表示算法10
2.4.6用计算机语言表示算法11
2.5结构化程序设计方法11
选择结构:
循环结构:
2.4.5
伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法。
2.4.6
我们的任务是用计算机解题,就是用计算机实现算法;
用计算机语言表示算法必须严格遵循所用语言的语法规则。
【例2.20】求1×2×3×4×5用C语言表示。
main()
{int i,t;
t=1;
i=2;
while(i<=5)
S4:使i的值+1,即i+1→i
S5:如果i≤5,返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。
如果计算100!只需将S5:若i≤5改成i≤100即可。
如果该求1×3×5×7×9×11,算法也只需做很少的改动:
S1: 1→t
S2: 3→i
S3: t×i→t
S4: i+2→t

C语言程序设计第五版谭浩强课后答案(第二章答案)

C语言程序设计第五版谭浩强课后答案(第二章答案)

C语⾔程序设计第五版谭浩强课后答案(第⼆章答案)⽬录1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法2. 什么叫结构化的算法?为什么要提倡结构化的算法?3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。

4. ⽤传统流程图表⽰求解以下问题的算法。

5. ⽤N-S图表⽰第4题中各题的算法6. ⽤伪代码表⽰第4题中各题的算法7. 什么叫结构化程序设计?它的主要内容是什么?8. ⽤⾃顶向下、逐步细化的⽅法进⾏以下算法的设计:1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法算法:简⽽⾔之就是求解问题的步骤,对特定问题求解步骤的⼀种描述。

⽐如⽣活中的例⼦:考⼤学⾸先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照⽇期到指定学校报到。

去北京听演唱会⾸先在⽹上购票、然后按时坐车到北京,坐车到演唱会会场。

把⼤象放进冰箱先打开冰箱门,然后将⼤象放进冰箱,关冰箱。

2. 什么叫结构化的算法?为什么要提倡结构化的算法?结构化算法:由⼀些顺序、选择、循环等基本结构按照顺序组成,流程的转移只存在于⼀个基本的范围之内。

结构化算法便于编写,可读性⾼,修改和维护起来简单,可以减少程序出错的机会,提⾼了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。

3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。

结构化程序设计⽅法主要由以下三种基本结构组成:顺序结构:顺序结构是⼀种线性、有序的结构,它依次执⾏各语句模块选择结构:选择结构是根据条件成⽴与否选择程序执⾏的通路。

循环结构:循环结构是重复执⾏⼀个或⼏个模块,直到满⾜某⼀条件位置重新设计基本结构要满⾜以下⼏点:只有⼀个⼊⼝只有⼀个出⼝结构内的每⼀部分都有机会执⾏到结构内不存在死循环因此给出以下复习结构:while型和until型循环复合以及多选择结构4. ⽤传统流程图表⽰求解以下问题的算法。

谭浩强 c++第2章

谭浩强 c++第2章

Racing Bike
Mountain Bike
2.1.1 什么是面向对象的程序设计
3. 继承与重用(inheritance & reusability)
C++提供了继承机制,采用继承的方法可以用一个已有的类建立一 个新的类

被继承的类叫父类(parent class),或称为基类(base class) 派生出来的新类叫子类(child class),或称为派生类(derived class)。 子类继承基类的全部属性(数据)和行为(函数) 子类在父类的基础上,增加新的属性和行为,是父类的特别版本
One window
Two bugs Slow bug Fast bug
One mouse Game control
Slow bug
Fast bug
The “Bug Hunt” game
2. The properties and actions of the bugs
Properties: A display image.

Position in the window. Current moving direction.
Ot her possible direct ions


Current moving speed.
Strength. Draw. Move. Change the direction. Hit (i.e. tell the bug it was swatted).
Yes or No Response
Game controller
IsPointedAt?
MouseClick
2.2 类的声明和对象的定义

C语言第二章谭浩强第四版

C语言第二章谭浩强第四版

第二章 程序的灵魂
信息技术教研室
什么是算法
计算机算法可分为两大类别:
数值运算算法 非数值运算算法 数值运算的目的是求数值解 非数值运算包括的面十分广泛,最常见的是用 于事务管理领域

第二章 程序的灵魂
信息技术教研室
简单的算法举例
求1×2×3×4×5× 例2.1 求1×2×3×4×5 …×1000
第二章 程序的灵魂
信息技术教研室
简单的算法举例
例2.3 判定2000—2500年中的每一年是否闰年,并 将结果输出。 闰年的条件: (1)能被4整除,但不能被100整除的年份都是闰 年,如2008、2012、2048年 (2)能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年 例如2009、2100年
1t
2i t*it i+1i N i>5 Y 输出t
结束
第二章 程序的灵魂
信息技术教研室
例2.7: 例2.2的算法用流程图表示。有50个学生,
要求将成绩在80分以上的学生的学号和成
绩输出。
如果包括输入数据部分
开始 1i Y gi≧80 N
开始 1i 输入ni、gi
输出ni、gi i+1i N i>50 Y 结束




① 起止框 位置不够 判断框
防止交叉 输入输出框
处理框
② 连接点 注释框
流程线
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:
1t
2i t*it i+1i N
i>5
Y
结束
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:

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面向对象程序设计》谭浩强第二章

《C面向对象程序设计》谭浩强第二章
详细描述
多态意味着一个接口可以有多种实现方式,或者一个对象可 以表现出多种形态。在C中,多态性主要通过虚函数和纯虚函 数来实现。
多态的实现方式
总结词
多态可以通过虚函数和纯虚函数来实现。
详细描述
虚函数允许子类重新定义父类的成员函数,从而实现动态绑定。纯虚函数则是一种特殊的虚函数,它没有实现, 子类必须实现它才能成为可实例化的类。
定义构造函数和析构 函数
构造函数用于初始化对象的状态 ,析构函数用于释放对象所占用 的资源。通过定义构造函数和析 构函数,可以控制对象的状态和 资源的生命周期。
使用私有成员变量和 公有成员函数
私有成员变量用于存储对象的内 部状态,公有成员函数用于提供 对私有成员变量的访问和控制。 通过这种方式,可以控制外部程 序对对象内部状态的访问。
04
CATALOGUE
继承
继承的概念
继承是面向对象程序设计中的一个重要概念, 它允许一个类继承另一个类的属性和方法,从 而减少代码重复,提高代码复用性。
继承使得子类可以继承父类的属性和方法,同 时还可以定义自己的属性和方法,以扩展父类 的功能。
通过继承,子类可以重用父类的代码,减少开 发时间和工作量,同时提高代码的可维护性和 可扩展性。
03
CATALOGUE
封装
封装的含义
封装是指将对象的属性和行为封装到一个独立的实体中,这个实体称为类。通过封装,对象的属性和 行为被隐藏在类内部,只通过公共接口与外界交互。
封装实现了信息隐藏,使得对象的内部状态对外部程序不可见,从而保护对象内部数据不被随意修改。
封装有助于提高软件的可维护性和可复用性,因为类的实现细节被隐藏在类内部,可以在不影响其他程 序的情况下进行修改。

谭浩强 C语言 第2章 程序的灵魂算法

谭浩强 C语言 第2章 程序的灵魂算法

缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
这种如同乱麻一样的算法称为BS型算法,意 为一碗面条(A Bowl of Spaghetti),乱无头绪。
2.三种基本结构
Bohra和Jacopini提出了以下三种基本结构: 顺序结构、选择结构、循环结构 用这三种基本结构作为表示一个良好算法的 基本单元。
设y为被检测的年份,算法可表示如下 : S1:2000 → y S2:若y不能被4整除,则输出y “不是闰年”。然后转 到S6。 S3:若y能被4整除,不能被100整除,则输出y “是闰 年”。然后转到S6。 S4:若y能被100整除,又能被400整除,输出y“是闰 年”,否则输出“不是闰年”。 然后转到S6。 S5: 输出y “不是闰年”。 S6:y+1 → y S7:当y≤2500时,转S2继续执行,如y>2500,算法 停止。
2.4.4 用N-S流程图表示算法
1973年美国学者I.Nassi和B.Shneiderman 提出了一种新的流程图形式。在这种流程图 中,完全去掉了带箭头的流程线。全部算法 写在一个矩形框内,在该框内还可以包含其 它的从属于它的框,或者说,由一些基本的 框组成一个大的框。这种流程图又称N--S结 构化流程图。
例2.10 将例2.5判断素数的算法用流程图 表示
小结: • 流程图是表示算法的较好的工具。 一个流程图包括以下几部分 : (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。
2.4.3 三种基本结构和改进的流程图 1.传统流程图的弊端 传统流程图用流程线指出各框的执行顺序, 对流程线的使用没有严格限制。因此,使用者 可以毫不受限制地使流程随意地转向,使流程 图变得毫无规律,阅读者要花很大精力去追踪 流程,使人难以理解算法的逻辑。如图:

谭浩强 C语言程序设计教程(由曾怡视频修改) 第2章 程序设计的灵魂-算法

谭浩强 C语言程序设计教程(由曾怡视频修改)  第2章 程序设计的灵魂-算法

什么是程序设计语言?
在程序设计过程中,用于编写程序的语言。
编写C语言程序的大体步骤:
问题定义 总体/详细设计 编程 运行
一个算法应当具有五大特性:
1、有穷性:算法包含的操作步骤有限 2、确定性:
算法每一步的操作步骤都是确定的,不能模棱两可
3、有零个或多个输入:
在执行算法时从外界取得必要的信息
4、有一个或多个输出:即算法的求解 5、有效性:算法中每一个步骤都应当能有效执行


2)选择 结构框图
若条件P成立,则执行A操作; 否则执行B操作。
成立 A操作
条件P
不成立
B操作
if ( x > y ) z=x; else z = y;
顺序结构
选择结构
3)循环 结构框图
当型(While型)循环结构
直到型(Until型)循环 结构
2、三种基本结构的共同特点:
单入口单出口 结构内的每一部分都有机会被执行 不存在“死循环” 3、结构化程序设计的优点:
累 试 法 枚 举 法
细化
细化
cocks=0 当cocks≤19时 {hens=0 当hens ≤33时 {chicks=100-cocks-hens; 如果( 5*cocks+3*hens+chicks/3=100)则输出; hens加1; } cocks加1 }
2)用计算机语言写出程序 /*文件名:ex020030*/ #include<stdio.h> int main(void) { int cocks,hens,chicks; cocks=0; while(cocks<=19) { hens=0; while(hens<=33) { chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3==100 ) printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks); hens++; } cocks++; } return 0; } 3)调试程序

最新C面向对象程序设计谭浩强第二章教学讲义ppt

最新C面向对象程序设计谭浩强第二章教学讲义ppt

在面向对象的程序设计 中,同样有着继承的机 制。通过继承,程序可 以在扩展现有类的基础 上声明新类。其中新类 被称作原有类的子类或 派生类,原有类称作基 类,又叫父类。
多态性是指 相同的消息 为不同的对 象接收到时 ,可能导致 不同的动作 。
2- 12
2.1 面向对象程序设计方法概述
类与对象的作用 C++全面支持传统的面向过程的程序设计(即结构化编
void PutPerimeter ( )
{ perimeter = (length + width ) * 2; }
void display ( )
{ cout << “length = “<< length << endl;
cout << “width = “<< width << endl;
cout << “area = “ << area << endl;
cout << “perimeter = “ << perimeter << endl; }
};
C++
2- 16
2.2 类的声明和对象的定义
对象的定义 声明了类以后,就可以定义该类的对象了。其格式为: [class] 类名 对象名1,对象名2,… // 方括号表示可选项
对象定义示例 如前例中,声明了一个名为 rectangle 的类,我们可以定义该
C面向对象程序设计谭浩强 第二章
第一章 C++的初步知识 第二章 类和对象 第三章 再论类和对象 第四章 运算符重载 第五章 继承与派生 第六章 多态性与虚函数 第七章 输入输出流 第八章 C++工具

谭浩强版C教程第2章

谭浩强版C教程第2章

运行结果为
AB
′a′的ASCII码为97,而′A′的ASCII码为65,′b′为98, ′B′为66。从ASCII代码表中可以看到每一个小写字 母比它相应的大写字母的ASCII代码大32。C++符数 据与数值直接进行算术运算,′a′-32得到整数65,′b′32得到整数66。将65和66存放在c1,c2中,由于c1,c2 是字符变量,因此用cout输出c1,c2时,得到字符A和 B(A的ASCII码为65,B的ASCII码为66)。
2.2.2 数值常量
数值常量就是通常所说的常数。在C++中,数值常量 是区分类型的,从字面形式即可识别其类型。
1. 整型常量(整数)的类型 在上一节中已知道: 整型数据可分为int,short int,long int以及unsigned int,unsigned short,unsigned long等类别。整型常量也分为以上类别。为什么将数 值常量区分为不同的类别呢?因为在进行赋值或函 数的参数虚实结合时要求数据类型匹配。
数据类型
基本类型
整型 短整型(short int)
整型(int)
长整型(long int)
字符型(char)
浮点型 单精度型(float)
双精度型(double)
长双精度型(long double)
布尔型(bool)
构造类型
枚举类型(enum)
数组类型
结构体类型(struct)
共用体类型(union)
图2.3
数字部分必须小于1,同时,小数点后面第一个数字 必须是一个非0数字,例如不能是0.0314159。因此 314.159和314.159e0,31.4159e1,3.14159e2, 0.314159e3在内存中表示成0.314159×103。存储单元 分为两部分,一部分用来存放数字部分,一部分用 来存放指数部分。为便于理解,在图2.3中是用十进 制表示的,实际上在存储单元中是用二进制数来表 示小数部分,用2的幂次来表示指数部分的。

谭浩强c语言第二章

谭浩强c语言第二章

2 程序的灵魂—算法 (1)2.1 算法的概念 (1)2.2 简单算法举例 (1)2.3 算法的特性 (4)2.4 怎样表示一个算法 (4)2.4.1 用自然语言表示算法 (4)2.4.2 用流程图表示算法 (4)2.4.3 三种基本结构和改进的流程图 (8)2.4.4 用N-S流程图表示算法 (9)2.4.5 用伪代码表示算法 (10)2.4.6 用计算机语言表示算法 (11)2.5 结构化程序设计方法 (11)2程序的灵魂—算法一个程序应包括:●对数据的描述。

在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。

●对操作的描述。

即操作步骤,也就是算法(algorithm)。

Nikiklaus Wirth提出的公式:数据结构+算法=程序教材认为:程序=算法+数据结构+程序设计方法+语言工具和环境这4个方面是一个程序涉及人员所应具备的知识。

本课程的目的是使同学知道怎样编写一个C程序,进行编写程序的初步训练,因此,只介绍算法的初步知识。

2.1 算法的概念做任何事情都有一定的步骤。

为解决一个问题而采取的方法和步骤,就称为算法。

●计算机算法:计算机能够执行的算法。

●计算机算法可分为两大类:⏹数值运算算法:求解数值;⏹非数值运算算法:事务管理领域。

2.2 简单算法举例【例2.1】求1×2×3×4×5。

最原始方法:步骤1:先求1×2,得到结果2。

步骤2:将步骤1得到的乘积2乘以3,得到结果6。

步骤3:将6再乘以4,得24。

步骤4:将24再乘以5,得120。

这样的算法虽然正确,但太繁。

改进的算法:S1: 使t=1S2: 使i=2S3: 使t×i, 乘积仍然放在在变量t中,可表示为t×i→tS4: 使i的值+1,即i+1→iS5: 如果i≤5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。

如果计算100!只需将S5:若i≤5改成i≤100即可。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

码即原码;负数的补码是将其对应原码的各位 ( 除符号位外 )
按位求反,然后加1。上述四个数用 8 位二进制表示有符号数 时机内补码值为:
3. C 语言有两个用于控制访问和修改变量方式的修饰符, 它们分别是常量(const)和易变量(volatile)。 带const修饰符定义出的常量在程序运行过程中始终保持不 变。 例如: const int num; 将产生整型常量 num,其值不能被程序所修改, 但可以 在其它类型的表达式中使用。 const型量可以在其初始化时直 接被赋值, 或通过某些硬件的方法赋值,例如num要定义成 100, 可写成: const int num=100;
2.2 数据类型
2.2.1 基本数据类型
1. 基本数据类型
表 2.1 C基本数据类型的长度和值域
字符型(char)变量用于存贮ASCII码字符,也可存贮8位 二进制数。
整型(int)变量用于存贮整数。因其字长有限,故可表示
的整数的范围也有限。
单精度实型 (float) 和双精度实型 (double) 变量用于存贮
以后程序中出现num的地方就是100, 也不能译程序, 该变量的值可以不通过 程序中明确定义的方法来改变。例如一个全程变量用于存贮系 统的实时时钟值, 在这种情况下,变量的内容在程序中没有明 确的赋值语句对它赋值时,也会发生改变。这一点是很重要的, 因为在假定表达式内变量内容不变的前提下, C 编译程序会自
2.2.2 构造数据类型
数组是一组连续、有序的存放在一起的具有相同类型的
数据。
结构体是将不同类型的数据按一定顺序存放在一起的数
据结构。
共用体是将不同类型的数据都存放在同一起始地址的内
存单元中, 共用一段内存以节省内存单元。
枚举是只有几种可能的值,将其一一列举出来。实际是
用符号来表示若干个可取的整型值, 它是整型的一个子集。
(3) 除了少数工作单元我们用单个字符作标识符,一般的应
做到见名知意,以提高程序的可读性。如用sum表示和, score
表示成绩, max表示最大等等。
2.1.2 关键字
ANSI C规定了32个关键字(保留字),不能再用作各种标识
符 。 下 面 列 出 32 个 关 键 字 : auto, break, case, char, const,
动地优化某些表达式,有的优化处理将会改变表达式的求值顺
序。 修饰符volatile就可以防止上述情况发生。 const和volatile可以同时使用。例如,假设0x30 是一个只随 外部条件而变化的口地址值,那么就恰好需要用下述说明来避 免偶然因素所产生的副作用的影响。 const volatile unsigned char *port=0x30;
continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch,
typedef, union, unsigned, void, volatile, while。
说明: (1) 与有些程序设计语言的规定不同, 在C语言中, 标识符
中大小写字母是有区别的。程序中基本上都采用小写字母表示
各种标识符,如变量名、数组名、函数名等。书写的各种语句 也均用小写字母,而大写字母只用来定义宏名等,用的不多。
(2) 不同的系统对标识符的长度有不同的要求, 有的要求
为6个字符,有的允许使用8个字符,而Turbo C系统下的有效长 度为1至32个字符。
第二章 C的基本数据类型及运算
2.1 标识符
2.2 数据类型
2.3 常量
2.4 变量
2.5 运算符
2.6 表达式 2.7 数据类型, 运算符与表达式举例
2.1 标 识 符
正确 count test123 High-balance PI 不正确 1 count hi!there high..balance a+b
实数,实数具有整数和小数两部分或是带指数的数据。表 中的值域用绝对值表示。 无值型(void)有两种用途:第一是明确地表示一个函数 不返回任何值;第二是产生同一类型的指针。
2. 除了无值类型外, 基本数据类型可以带有各种修饰前 缀。修饰符用于明确基本数据类型的含义,以准确地适应不 同情况下的要求。类型修饰符种类如下:
它们用来表示C语言本身的特定成份, 具有相应的语义, 可
构成所有的C语言语句。
C语言还使用下列12个标识符作为编译预处理的命令单词, 但使用时前面应加“#”: define, elif, else, endif, error, if, ifdef, ifndef, include, line, progma, undef。
们的最高位的定义不同。如果定义的是有符号的整型 (signed int),C编译程序所产生的代码就设定整型数的最高位为符号位, 其余位表示数值大小。如最高位为0,则该整数为正;如最高 位为1,则该整数为负。例如用8位二进制表示时:
大部分计算机表示有符号数时都使用二进制补码。原因 及细节将在微机原理课上学习。补码的求法很简单:正数补
signed
unsigned long Short 短
表 2.2 C基本类型及其修饰符的所有组合
不同的计算机系统对各类数据所占内存字节数有不同的规
定,如int型有的系统占16位,有的占32位。long double型有的 占128位,有的占64位。
有符号(signed) 和无符号 (unsigned)的整型量的区别在于它
2.2.3 指针类型
指针是 C 语言中一个重要概念。正确而灵活地运用它,
可以有效地表示复杂的数据结构;能动态分配内存;能方 便地使用字符串;有效而方便地使用数组; 在调用函数时 能得到多于一个的值;能直接处理内存地址等。 指针类型迥异于前述各种数据类型,不管是简单类型 的数据,还是构造类型数据,均是代表数据的,而指针类 型是代表地址的。
相关文档
最新文档