谭浩强C语言全书word版第二章
C语言(谭浩强)第2章数据描述

• • • •
转义字符表
转义字符形式 \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章(谭浩强)

§ 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语言电子课件第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语言程序设计(谭浩强版)第二章

不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
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 程序设计(谭浩强完整版)第二章解析

一般变量都是用匈牙利命名法命名的。 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章

执行时输出 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语⾔程序设计第五版谭浩强课后答案(第⼆章答案)⽬录1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法2. 什么叫结构化的算法?为什么要提倡结构化的算法?3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。
4. ⽤传统流程图表⽰求解以下问题的算法。
5. ⽤N-S图表⽰第4题中各题的算法6. ⽤伪代码表⽰第4题中各题的算法7. 什么叫结构化程序设计?它的主要内容是什么?8. ⽤⾃顶向下、逐步细化的⽅法进⾏以下算法的设计:1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法算法:简⽽⾔之就是求解问题的步骤,对特定问题求解步骤的⼀种描述。
⽐如⽣活中的例⼦:考⼤学⾸先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照⽇期到指定学校报到。
去北京听演唱会⾸先在⽹上购票、然后按时坐车到北京,坐车到演唱会会场。
把⼤象放进冰箱先打开冰箱门,然后将⼤象放进冰箱,关冰箱。
2. 什么叫结构化的算法?为什么要提倡结构化的算法?结构化算法:由⼀些顺序、选择、循环等基本结构按照顺序组成,流程的转移只存在于⼀个基本的范围之内。
结构化算法便于编写,可读性⾼,修改和维护起来简单,可以减少程序出错的机会,提⾼了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。
3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。
结构化程序设计⽅法主要由以下三种基本结构组成:顺序结构:顺序结构是⼀种线性、有序的结构,它依次执⾏各语句模块选择结构:选择结构是根据条件成⽴与否选择程序执⾏的通路。
循环结构:循环结构是重复执⾏⼀个或⼏个模块,直到满⾜某⼀条件位置重新设计基本结构要满⾜以下⼏点:只有⼀个⼊⼝只有⼀个出⼝结构内的每⼀部分都有机会执⾏到结构内不存在死循环因此给出以下复习结构:while型和until型循环复合以及多选择结构4. ⽤传统流程图表⽰求解以下问题的算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
有穷性:一个算法应包含有限的操作步骤而不能是无限的。
确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的、模棱两可的。
有零个或多个输入。
有一个或多个输出。
有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。
对于程序设计人员,必须会设计算法,并根据算法写出程序。