谭浩强C语言全书word版第二章

合集下载

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语言教程(潭浩强版)国二

C语言教程(潭浩强版)国二
2、可以参与运算。 四、 字符串常量 用双引号 “ ” 引起的一串字符。 五、 字符常量与字符串常量的区别: 字符常量 字符串常量 1、 单引号 双引号 2、 1 个字符 多个字符 3、 字符变量 字符数组 4、 一个字节 字符串中字节数+1(\0 结束标志) ‘a’ “a” 不同 1 个字节 2 个字节 § 3——5 变量赋初值 可以在定义变量的同时使变量初始化。不可以连续赋值。 例如: : int a=3; int a,b,c=5; int a=b=c=3; x int a=3,b=3,c=3; § 3——6 各类数据间的混合运算 变量的数据类型是可以转换的:自动转换 强制转换 转换规则: 1、 不同类型数据运算,先转为同一类型,再进行转换 2、 转换按数据类型长度增加的方向进行(低——高、小——大) 3、 浮点运算都以双精度进行 4、 CHAR 及 SHOTR 型参与运算,均先转为 INT 型 5、 赋值运算时,以左边为准,右边高于左边,则进行四舍五入,精度降低。 强制转换:是通过类型转换运算来实现的。 格式: (类型说明符) (表达式) 例: (float)a (int)(x+y) 注意:1、类型说明符及表达式均加圆括号。 2、无论是强制转换,还是自动转换,都是为了本次运算的需要对变量进行的临时性转换,而 不改变数据说明时对该变量定义的类型。 例: main() {float f=5.75; printf(“(int)f = %d,f=%f\n”,(int)f,f ); } 运行结果: 5 5.75 § 3——7 C 运算符 C 语言的运算符种类多。使用时注意优先级别及结合性。 一、 算术运算符(7 种) 1、基本算术运算符 +、—、*、/、% 均为双目运算 % ——余除 要求参与运算的量均为整型 2、优先级与结合性 例如:

谭浩强(第二版)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)第2章

教材原教案(谭浩强C)第2章

执行时输出 66 i和j被指定为整型变量。但在第5和第6行中,将字符′A′和′B′分别赋给i和j,它的作用相当于以下两个赋值语句: i=65;j=66; 因为′A′和′B′的ASCII码为65和66。在程序的第5和第6行是把65和66直接存放到i和j的内存单元中。因此输出65和66。 可以看到:在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。
说明: (1) 整型数据分为长整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分别表示长整型和短整型。 (2) 整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示。 图2.1

一个整型常量可以用3种不同的方式表示:
十进制整数。如1357,-432,0等。在一个整型常量后面加一个字母l或L,则认为是long int型常量。例如123L,421L,0L等,这往往用于函数调用中。如果函数的形参为long int,则要求实参也为long int型,此时用123作实参不行,而要用123L作实参。
第2章 数据类型与表达式
C++的数据类型 常量 变量 C++的运算符 算术运算符与算术表达式 赋值运算符与赋值表达式 逗号运算符与逗号表达式
C++的数据类型
计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。不同的计算机语言所允许使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对包含10个元素的整型数组排序的算法是不同的。 C++可以使用的数据类型如下:

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语言教程(潭浩强版)国二

C语言教程(潭浩强版)国二

第一章:计算机基础知识一、计算机系统的组成1、组成2、软、硬件之间的关系二、计算机中用到的数制1、数制2、为什麽用二进制?3、进制间的转换三、计算机的解题过程(图)四、计算机的语言系统1、语言的分类2、翻译方式3、常用语言简介五、磁盘操作系统————DOS1、组成2、启动3、文件4、目录5、通配符6、常用DOS命令第二章:C语言概述一、C语言的产生及发展简介ALGOL60(1960)CPL(1963)BCPL(1967)B(1970)C(1973)ALGOL60语言———面向问题、离硬件远、不宜编写系统软件CPL语言———离硬件近一点、规模较大、难以实现BCPL语言———简化的CPLB语言———接近硬件、简单、第一个UNIX系统由B语言编写、功能有限C语言———多次改进、75年UNIX6版公布后C语言的优点才引起注意、77年出现不依赖于具体机器的C编译可用来编写系统软件、应用软件UNIX系统用C语言编写,随着UNIX的发展C语言也迅速得到推广二、C语言的特点:1、语言简洁、紧凑、使用方便、灵活(32个关键字、9种控制语句)2、运算符丰富(34种运算符将括号、赋值、强制类型、转换作为运算符等等)3、数据结构丰富(标准类型、构成类型)4、具有结构化的控制语句。

用函数作为程序模块以实现程序的模块化。

5、语法限制不太严格、程序设计自由度大。

(限制与灵活是一对矛盾)6、C语言可以直接访问物理地址。

能实现汇编语言的大部分功能,可以直接对硬件进行操作。

7目标代码质量高,程序执行效率高。

8程序可移植性好。

三、程序的组成结构及特性:1、程序结构:下面给出几段简单的C程序,从中分析一下程序的结构及特征:程序一:main(){printf(“This is a c program. \n”);}程序二:# include <stdio.h>main() /*求两数之和*/{int a,b,sum;/*定义变量*/a=123;b=456;sum=a+b;printf(“sum is %d\n”,sum);}程序三:main()/*主函数*/{int a,b,c;/*定义变量*/scanf(“%d,%d”,&a,&b);/*输入变量a、b 的值*/c=max(a,b);/*调用max函数,将得到的值赋给c*/printf(“max=%d”,c);/*输出c的值*/}int max(x,y)/* 定义max函数,函数值为整型,x,y为形式参数*/int x,y;/* 对形参x,y作类型定义*/{int z;/* max函数中用到的变量z定义*/if (x>y) z=x;else z=y;return(z);/* 将z的值返回,通过max带回调用处*/}2、C语言程序的结构特性:(1)、一个C源程序可以由一个或多个源文件组成。

谭浩强C语言全书word版

谭浩强C语言全书word版

2.4 变量
变量定义的语句格式: 类型符 变量名1,变量名2,„ 变量定义的意义:
系统给每一个变量名分配一个内存地址; 编译时根据变量的类型分配一定的内存单元; 根据变量的类型检查该变量所进行的运算是否合法 例:int num1,num2,total; num1 num2 total
存储器地址
1652
2.3.4 字符串常量
字符串常量:由一对双引号括起的字符序列。 例如:"Computer"及"program-1"。 程序主要用于输入、输出。 例如:printf("World,hello!\n"); 字符串常量与字符常量之间主要有以下区别: 引用符号不同:字符常量由单引号括起来,字符串常量由 双引号括起来。 容量不同:字符常量只能是单个字符,字符串常量则可以 含一个或多个字符。 字符串结束的标志:字符"\0"(ASCII码为0)。 例如,字符串"CHINA"的长度是6个字符。
格式为:
类型说明符 变量名1=初值1,变量名2=初值2,...;
2.4.1 整型变量
整型变量:只能保存整型值的变量。 整型变量的分类(按照分配的内存单元)
整型变量可分为以下几类:

基本型(类型说明符为int) 在内存中占2个字节(C++中占4个字节),其取值为基 本整常数(-32768~32767)。 短整型(short int):(占2个字节)
2.3.3 字符常量
字符型数据与整型数据的关系 【例2.5】写出下列程序的运行结果。 #include <stdio.h> void main() 运行结果如下: { A,B int i,j; 65,66 i=65; j=i+1; printf("%c,%c\n",i,j); /*以字符形式输出*/ printf("%d,%d\n",i,j); /*以整数形式输出*/ }

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程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂P017 2.1 计算机1-5相乘的积.#include<stdio.h>int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<6;i++) //这里是到6.{s=s*i; //相乘}printf("The sum is %d .\n",s);return 0;}#include<stdio.h> //作出要求:换成1到11间奇数相乘.int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2{if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.s=s*i;elsecontinue; //跳过这个for循环的这一次,执行下一次.}printf("The sum is %d .\n",s);return 0;}暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。

所以,如果每年定义为365天的话,1年就会多出0.2423天,4年就会多出0.9692天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。

规则为:·1)如果年份能被4整除,则该年计为闰年;可是,假如不做调整的话,当400年的时候,累计才多出96.92天,接近于多出97天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。

怎么撤销呢?就有了下面这个规则:·2)如果年份能被100整除,则不计为闰年;问题又来了,400年里有4个100年吧,去掉后四个100年后,又少了一个,所以再加一个规则就是:·3)如果年份能被400整除,则计为闰年。

《C面向对象程序设计》谭浩强第二章

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

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

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


①文字 ②图形(符号)
第二章 算法
五,怎样表示一个算法
用自然语言表示算法(通俗易懂) 用流程图表示算法(灵活,自由,形象,直观) 用N-S图 用伪代码表示算法 用计算机语言表示算法 要记住常用的流程图符号(意义和名称) 要记住常用的流程图符号(意义和名称)
起止
输入/出
判断
处理
第二章 算法
六,结构化程序设计
当i <=5
i <=5 y P*i p i+1 i
结束
练习: 练习:求S= ∑
100
N
N =1
,写出其算法 写出其算法
第二章 算法 结构化程序设计方法
自顶向下 逐步细化 模块化设计 结构化编码
结构化程序设计过程
确定算法 编写程序 上机调试
第二章 算法
书面作业: 书面作业:P14 4(1),(3),(5) , , , 5(1),(3),(5) , ,
第二章 算法
几种算法表示比较 例:求5!
自然语言 S1: 1 p S2: 2 i S3: p*i p S4: i+1 i S5: 若i<=5, 返回s3 返回 S6: 结束 流程图 开始 1 2 n p i N-S图 图 1 2 P*i i+1 p i p i 伪代码 C语言 BEGIN main() 1=>p {int i,p; 2=>i p=1; while i<=5 i=2; {p*i=>i while(i<=5) i+1=>i {p=p*i; } i=i+1; print i } END printf("%d",t); }
单选择

真 A
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
S5:若i≤11,返回S3,否则,结束。
该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。
思考:若将S5写成:S5:若i<11,返回S3;否则,结束。
【例2.2】有50个学生,要求将他们之中成绩在80分以上者打印出来。
如果,n表示学生学号,ni表示第个学生学号;g表示学生成绩,gi表示第个学生成绩;
设y为被检测的年份,则算法可表示如下:
S1: 2000→y
S2:若y不能被4整除,则输出y“不是闰年”,然后转到S6
S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到S6
S4:若y能被100整除,又能被400整除,输出y“是闰年”否则输出y“不是闰年”,然后转到S6
S5:输出y“不是闰年”。
这4个方面是一个程序涉及人员所应具备的知识。
本课程的目的是使同学知道怎样编写一个C程序,进行编写程序的初步训练,因此,只介绍算法的初步知识。
2.1
做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。
计算机算法:计算机能够执行的算法。
计算机算法可分为两大类:
数值运算算法:求解数值;
S8:若deno≤100,返回S4;否则,结束。
【例2.5】对一个大于或等于3的正整数,判断它是不是一个素数。
算法可表示如下:
S1:输入n的值
S2: i=2
S3: n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5
S5: i+1→i
S6:如果i≤n-1,返回S3;否则打印n“是素数”;然后算法结束。
则算法可表示如下:
S1: 1→i
S2:如果gi≥80,则打印ni和gi,否则不打印
S3: i+1→i
S4:若i≤50,返回S2,否则,结束。
【例2.3】判定2000—2500年中的每一年是否闰年,将结果输出。
润年的条件:
1)能被4整除,但不能被100整除的年份;
2)能被100整除,又能被400整除的年份;
非数值运算算法:事务管理领域。
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=1
S2:使i=2
S3:使t×i,乘积仍然放在在变量t中,可表示为t×i→t
S6:y+1→y
S7:当y≤2500时,返回S2继续执行,否则,结束。
【例2.4】求 。
算法可表示如下:
S1: sigh=1
S2: sum=1
S3: deno=2
S4: sigh=(-1)×sigh
S5: term= sigh×(1/deno )
S6: term=sum+term
S7: deno= deno +1
}
printf(“%f”,sum);
}
2.5
自顶向下;
逐步细化;
模块化设计;
结构化编码。
{t=t*i;
i=i+1;}ຫໍສະໝຸດ printf(“%d”,t);
}
【例2.21】求级数的值。
main()
{
int sigh=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{ sigh= -sigh;
term= sigh/ deno;
sum=sum+term;
deno=deno+1;
1.表示相应操作的框;
2.带箭头的流程线;
3.框内外必要的文字说明。
2.4.3
1.顺序结构:
2.选择结构:
3.循环结构
三种基本结构的共同特点:
只有一个入口;
只有一个出口;
结构内的每一部分都有机会被执行到;
结构内不存在“死循环”。
2.4.4
1973年美国学者提出了一种新型流程图:N-S流程图。
顺序结构:
2
一个程序应包括:
对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。
对操作的描述。即操作步骤,也就是算法(algorithm)。
Nikiklaus Wirth提出的公式:
数据结构+算法=程序
教材认为:
程序=算法+数据结构+程序设计方法+语言工具和环境
改进:
S6:如果i≤ ,返回S3;否则打印n“是素数”;然后算法结束。
2.3
有穷性:一个算法应包含有限的操作步骤而不能是无限的。
确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。
有零个或多个输入。
有一个或多个输出。
有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。
对于程序设计人员,必须会设计算法,并根据算法写出程序。
相关文档
最新文档