C程序设计教程(中)清华PPT课件
合集下载
谭浩强C程序设计第三版清华课件第4章简单程序
21
4.5 格式输入与输出
(1) d格式符。用来输出十进制整数。
几种用法: ① %d:按十进制整型数据的实际长度输出。 ② %md:m为指定的输出字段的宽度。如果数据的位数小于m,
则左端补以空格,若大于m,则按实际位数输出。 例: printf(″%4d,%4d″,a,b);
若a=123,d=12345,则输出结果为 123,12345 ③ %ld:输出长整型数据。 例: long a=135790;/* 定义a为长整型变量*/ printf(″%ld″,a);
9
4.2 赋值语句
•赋值语句是由赋值表达式加上一个分号构成 例:a=100 赋值表达式
a=100; 赋值语句
•条件中不能含有赋值符号,但是赋值表达式可以
包含于条件表达式中
例:if(a=b)
t=a;
错误
if((a=b)>0) t=a;
正确
C程序设计(第三版)
10
4.2 赋值语句
问题:c语言中的赋值语句于其他高级语言 的赋值语句有什么不同点
C程序设计(第三版)
13
4.3 数据输入输出的概念及在C 语言中的实现
(三).在使用系统库函数时,要用预编译命令 “#include”将有关的“头文件”包括到用户源 文件中.
例如:在调用标准输入输出库函数时,文件开头应
该有:
头文
件
#include “stdio.h”
或:
#include <stdio.h>
右侧,左补空格。 ⑤ %-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m自
动取n值。
C程序设计(第三版)
28
4.5 格式输入与输出
C语言程序设计_课件_第六章(适于清华谭浩强版)
int data[5]={1,2,3,4,5};
注意
(1) 允许初始化一部分元素,而不是全部。 int data[5]={1,2}; (2) 初始化数组时,允许省略数组的长度。 int data[]={1,2,3,4,5}; 与int data[5]={1,2,3,4,5};是完全等价的。 (3) 初始化数组时,不能对整个数组初始化。 例如,int data[5]=1;
程序段一: #Байду номын сангаасefine Size 5 main() { int a[Size],b[Size+10]; /*正确 … } 程序段二: main() { int n=5; int data[n]; /*错误 …… }
*/
*/
6.2.2 一维数组的引用 引用数组单元的一般形式为: 数组名[下标] 数组下标可以是整型变量或整型表达式, 但不能是浮点型的变量或浮点型表达式;并且 下标不能大于[数组长度-1],因为超过部分没 有被定义过,是不能正确使用的。 图。 例如:data[4]、data[i+j]、data[i++]都是 合法的引用方式。
地址二维数组在概念上是二维的,可以说 是数组的数组,二维数组的下标在行和列两个方 向变化。但是,计算机的内存是连续编址的,也 就是说存储器单元是按一维线性排列的。那么, 如何按照地址的顺序存放二维数组呢?一般有两 种方式来存储二维数组,第一种称为按行排列, 方法是先存储完第一行中的每个元素,再存放下 一行的每个元素;第二种称为按列排列,方法是 先存储完第一列中的每个元素,再存放下一列的 每个元素。C语言的编译系统采用按行排列。
每个数组在使用之前都需要定义。 定义数组的语法是: 数据类型说明符 数组名[数组长度];
C++语言程序设计(清华大学)ppt课件
引用 必须先声明,后使用。 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[2*3]
4
例6. 1一维数组的声明与引用
数 #include <iostream>
组
using namespace std;
int main()
{int A[10],B[10];
int i;
指 指针名=地址
针
“地址”中存放的数据类型与指针类型必须相符。
向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可 以赋值为整数0,表示空指针。
指针的类型是它所指向变量的类型,而不是指针本身数据值的类型, 任何一个指针本身的数据值都是unsigned long int型。
允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象 的地址。
Point(id Move(int x,int y);
int GetX() {return X;}
int GetY() {return Y;}
private:
int X,Y;
};
#endif
24
//6-2.cpp
#include<iostream>
变量 j
声明 例:static int i; static int *i_pointer=&i;
指向整型变量的指针
3010
2000
变量 i_pointer
引用 例1:i=3; 例2:*i_pointer=i;
i_pointer 2000
*i_pointer
3
i
2000 29
指针变量的初始化
指 语法形式
对形参数组的改变会直接影响到实参数17例62使用数组名作为函数参数主函数中初始化一个矩阵并将每个元素都输出然后调用子函数分别计算每一行的元素之和将和直接存放在每行的第一个元素中返回主函数之后输出各行元素的和
C语言程序设计清华大学郑莉PPT课件
象 的 方 法
第18页/共702页
面向对象的基本概念
面 — — 多 态 性 • 多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行 向 为 。 这 使 得 同 一 个 属 性 或 行 为 在 一 般 类 及 其 各 个 特 殊 类 中 具 有 不 同 的 语 义 。
• 例如:
对 数 的 加 法 - > 实 数 的 加 法 象- > 复 数 的 加 法 的 方 法
第19页/共702页
面向对象的软件工程
面 • 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括 : 向 • 面向对象的分析(OOA) 对 • 面向对象的设计(OOD)
• 面向对象的编程(OOP)
面向对象的语言
计 算 机
语 言 的
发 展
• 出发点: • 更直接地描述客观世界中存在的事物(对象)以及它们之间的关 系。
• 特点: • 是高级语言。 • 将客观事物看作具有属性和行为的对象。 • 通过抽象找出同一类对象的共同属性和行为,形成类。 • 通过类的继承与多态实现代码重用
第5页/共702页
程序设计方法的发展历程
面 — — 面 向 对 象 的 方法 • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体 ——对象。 向 • 对同类型对象抽象出其共性,形成类。 对 • 类通过一个简单的外部接口,与外界发生关系。 象 • 对象与对象之间通过消息进行通讯。
的 方 法
第11页/共702页
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:
第18页/共702页
面向对象的基本概念
面 — — 多 态 性 • 多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行 向 为 。 这 使 得 同 一 个 属 性 或 行 为 在 一 般 类 及 其 各 个 特 殊 类 中 具 有 不 同 的 语 义 。
• 例如:
对 数 的 加 法 - > 实 数 的 加 法 象- > 复 数 的 加 法 的 方 法
第19页/共702页
面向对象的软件工程
面 • 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括 : 向 • 面向对象的分析(OOA) 对 • 面向对象的设计(OOD)
• 面向对象的编程(OOP)
面向对象的语言
计 算 机
语 言 的
发 展
• 出发点: • 更直接地描述客观世界中存在的事物(对象)以及它们之间的关 系。
• 特点: • 是高级语言。 • 将客观事物看作具有属性和行为的对象。 • 通过抽象找出同一类对象的共同属性和行为,形成类。 • 通过类的继承与多态实现代码重用
第5页/共702页
程序设计方法的发展历程
面 — — 面 向 对 象 的 方法 • 将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体 ——对象。 向 • 对同类型对象抽象出其共性,形成类。 对 • 类通过一个简单的外部接口,与外界发生关系。 象 • 对象与对象之间通过消息进行通讯。
的 方 法
第11页/共702页
向 • 是现实世界中一个实际存在的事物。
• 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
对 • 是构成世界的一个独立单位,具有:
清华《C语言程序设计》2语句和循环ppt
else printf(“%d”,y); }
2021/8/24 C语言程序设计
22
2222
第 三 章
语 注意:不管例是、单若分变量支已还正是确定多义分,支有以,下如程果序段语句 句 由多个语句构成,必须要加上{}构成复合语句;
否则,要不程i序nt 存a=3在,b=语5,c法=7;错误,要不就结果错误。
b=t
2021/8/24 C语言程序设计
27
2277
第 三 章
语 句
例、输入三个数a,b,c,要求按由小到大的顺序输出。
If a>b 将a和b对换 If a>c 将a和c对换 If b>c 将b和c对换
a>b y
n a>c n
y a和b交换 a和c交换
b>c y c和b交换
2021/8/24 C语言程序设计
y=2*x;
if ( x < 0 ) y = 3 - x ;
printf(“y= %6.2f”, y );
}
2021/8/24 C语言程序设计
21
假 (0)
2211
第 三
章 (2)双分支选择语句
语 句
格式:if(表达式) 语句1 else
语句2
Y 条件
#include<stdio.h> main() 语句1
2021/8/24 C语言程序设计
9
99
第
三
章
语 句
主要内容
一、关系运算符和关系表达式 二、逻辑运算符和逻辑表达式 三、if语句 四、witch语句 五、程序举例
2021/8/24 C语言程序设计
10
1100
第
清华大学C 课程PPT课件
• 引入了类的机制,最初的C++被称为“带类
语 的C” 言 • 1983年正式取名为C++ 概 • 从1989年开始C++语言的标准化工作 述 • 于1994年制定了ANSI C++标准草案
• 于1998年11月被国际标准化组织(ISO)批 准为国际标准。2003年发布了C++标准第二 版,成为目前的C++
j = 50000;
i = j;//将unsigned short赋值给signed short变量
cout <<" The short int is:"<< i <<endl; //整型数值溢出
cout <<" The short unsigned int is:"<< j<<endl;
return 0; }
15
第15页/共99页
基 数据类—型整型数据及取值范围
本
数 类型
说明符 位数 数值范围
据 短整
short 16 -32768~32767
类 基本
int
32 -231~(231-1)
型 长整
long
32 -231~(231-1)
和 无符号
表 unsigned short 16 0~65535
达 式
unsigned int unsigned long
赋值运算符和—赋值—表达赋式值表达式举例 基
本 数 据
a=5
表达式值为5
a=b=c=5 表达式值为5,a,b,c均为5
类
a=5+(c=6) 表达式值为11,a为11,c为6
C语言程序设计教程ppt课件(2024)
打印九九乘法表
使用嵌套的for循环打印九九乘法表。
23
04
数组与字符串处理
2024/1/30
24
一维数组定义和操作
2024/1/30
01
一维数组定义
类型说明符 数组名
[常量表达式];
02
一维数组初始化
在定义数组时对数 组元素赋以初值;
04
一维数组操作
包括赋值、输入输
03
出、排序、查找等
。
一维数组引用
do-while循环
与while循环类似,但至少会执行一次 循环体。
示例
int i = 0; do { printf("%d ", i); i; } while (i < 10);
语法
do { // code to be executed } while (condition);
2024/1/30
19
赋值运算符
包括赋值运算符(=)和复合赋 值运算符(+=、-=、*=、/=、 %=),用于为变量赋值或进行 运算后赋值。
12
类型转换与运算顺序
2024/1/30
类型转换
当不同类型的数据进行运算时,需要进行类型转换,包括自 动类型转换和强制类型转换。自动类型转换由编译器自动完 成,而强制类型转换需要使用类型转换运算符。
0。
free函数
用于释放已分配的内存空间 ,避免内存泄漏。
2024/1/30
36
指针在数组、字符串等数据结构中应用
指针与数组
数组名本质上是一个指向数组首元素的指针;通过指针可 以访问和修改数组元素。
指针与字符串
字符串在C语言中以字符数组的形式存储,指针可以方便 地操作字符串。
使用嵌套的for循环打印九九乘法表。
23
04
数组与字符串处理
2024/1/30
24
一维数组定义和操作
2024/1/30
01
一维数组定义
类型说明符 数组名
[常量表达式];
02
一维数组初始化
在定义数组时对数 组元素赋以初值;
04
一维数组操作
包括赋值、输入输
03
出、排序、查找等
。
一维数组引用
do-while循环
与while循环类似,但至少会执行一次 循环体。
示例
int i = 0; do { printf("%d ", i); i; } while (i < 10);
语法
do { // code to be executed } while (condition);
2024/1/30
19
赋值运算符
包括赋值运算符(=)和复合赋 值运算符(+=、-=、*=、/=、 %=),用于为变量赋值或进行 运算后赋值。
12
类型转换与运算顺序
2024/1/30
类型转换
当不同类型的数据进行运算时,需要进行类型转换,包括自 动类型转换和强制类型转换。自动类型转换由编译器自动完 成,而强制类型转换需要使用类型转换运算符。
0。
free函数
用于释放已分配的内存空间 ,避免内存泄漏。
2024/1/30
36
指针在数组、字符串等数据结构中应用
指针与数组
数组名本质上是一个指向数组首元素的指针;通过指针可 以访问和修改数组元素。
指针与字符串
字符串在C语言中以字符数组的形式存储,指针可以方便 地操作字符串。
C语言程序设计教程ppt课件完整版pptx
C语言的应用领域
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
计算机系统基本概念
计算机系统的组成 操作系统的基本概念 计算机中的数与编码
编程环境与工具安装配置
01
常见的C语言编程环境
02
安装与配置C语言编译器
使用集成开发环境(IDE)进行C语言编程
03
第一个C程序:Hello, World!
01
C程序的基本结 构
02
编写Hello, World!程序
应用场景
适用于需要根据特定条件提前终 止循环或跳过某些循环操作的情 况。
04 函数与模块化设计
函数定义和调用
01
函数定义
包括函数名、参数列表、返回值 类型和函数体等部分,用于描述 函数的功能和实现细节。
函数调用
02
03
函数声明
通过函数名和参数列表来调用函 数,实现相应功能并获取返回值 。
在使用函数之前,需要对函数进 行声明,以便编译器识别函数的 存在和调用方式。
THANKS FOR WATCHING
感谢您的观看
指针运算符
包括取地址运算符&和取值运算符*,分别 用于获取变量的内存地址和通过指针访问内 存中的数据。
动态内存分配函数(malloc, free)使用方法
malloc函数
用于在堆区动态分配指定大小的内存空间,并返回 分配内存的起始地址。
free函数
用于释放之前通过malloc函数分配的内存空间,防 止内存泄漏。
动态规划思想
动态规划是一种在数学、计算机科学和经济学中 使用的,通过把原问题分解为相对简单的子问题 的方式来求解复杂问题的方法。动态规划常用于 优化重叠子问题的计算。
回溯与分支限界法
回溯法是一种通过探索所有可能的候选解来找出 所有解的算法,而分支限界法是一种通过剪枝来 减少搜索空间的优化算法。回溯与分支限界法常 用于解决组合优化问题。
《C程序设计》清华大学出版社 PPT教程 第1章
1)启动Visual C++,选择“文件”菜单中的“新建” 命令,选择“文件”标签中的“C++ Source File” 选项。
2)选择源程序存放的目录和输入源程序名,单击 “确定”。 3)在编辑器中编写源程序。
4)单击F7或“编译”中的“重建全部”编译源程 序,若编译通过,单击“执行”,在DOS屏上看 结果,任按一键返回编辑器。 35
• 目标程序:
• 也称为"结果程序",是源程序通过翻译程序 加工以后所生成的程序。
• 翻译程序:
• 是指一个把源程序翻译成等价的目标程序的 程序。
15
基本术语
——三种不同类型的翻译程序
• 汇编程序:
其任务是把用汇编语言写成的源程序,翻译成机器语言形式 的目标程序。
• 编译程序:
若源程序是用高级程序设计语言所写,经翻译程序加工生成 目标程序,那么,该翻译程序就称为“编译程序”。
5
C高级语言程序设计
课程目标
• 掌握C语言的语法规则 • 掌握程序设计的基本思想和方法,养成良 好的程序设计习惯。 • 会运用编程工具进行程序的设计与实现。 • 会读、会编、会调试C程序
6
第一章
7
主要内容
计算机语言的发展
程序开发过程 C语言概述
8
计算机语言的发展
运算器 控制器 存储器 输入设备 输出设备
常用的有Turbo C 2.0、Turbo C++ 3.0、Visual C++6.0、Dev5.0等。
Turbo C++ 3.0:是一个集成环境,它具有方便、直观 和易用的界面,虽然它也是DOS环境下的集成环境,但 是可以把启动Turbo C++ 3.0 集成环境的DOS执行文件 tc.exe生成快捷方式,也可以用鼠标操作。
《C程序设计教程》PPT课件
Biblioteka 19精选PPT10
gs_a对象
name
A类
A类数据成员
B类 对象
对象 成员
semesterHours
内存
average
结构
advisor
B对象成员
qualifierGrade
精选PPT
11
性质差异
继承(A继承B)
派生类A定义中看不到基类B的定义
派生类A对象中含基类B的成员
基类B中的private成员不能在派生类A中访问
精选PPT
4
10.2 访问父类成员
继承父类成员 父类成员在内存结构中存在于子类对象中, 所以父类成员在一定条件下可以被子类代 码或外部代码访问
类内访问控制
私有
保护
公有
精选PPT
5
类内访问控制
访问属 public
性
继承
public
public
protecte private d
protecte private d
圆的设计:圆点,半径,面积,周长,圆 的移动,半径的修改
新增成员:半径,面积计算,周长计算,移动 操作,半径修改操作
继承设计
圆是一个半径不为0的点。
组合设计
圆里有一个类型为Point的圆点
精选PPT
13
10.6 多继承概念
多继承结构 基类成员名冲突 基类分解
精选PPT
14
多继承结构
protected protected protecte private d
private private private private
精选PPT
6
10.3 派生类的构造
缺省构造 自定义构造 拷贝构造与赋值 对象构造顺序
gs_a对象
name
A类
A类数据成员
B类 对象
对象 成员
semesterHours
内存
average
结构
advisor
B对象成员
qualifierGrade
精选PPT
11
性质差异
继承(A继承B)
派生类A定义中看不到基类B的定义
派生类A对象中含基类B的成员
基类B中的private成员不能在派生类A中访问
精选PPT
4
10.2 访问父类成员
继承父类成员 父类成员在内存结构中存在于子类对象中, 所以父类成员在一定条件下可以被子类代 码或外部代码访问
类内访问控制
私有
保护
公有
精选PPT
5
类内访问控制
访问属 public
性
继承
public
public
protecte private d
protecte private d
圆的设计:圆点,半径,面积,周长,圆 的移动,半径的修改
新增成员:半径,面积计算,周长计算,移动 操作,半径修改操作
继承设计
圆是一个半径不为0的点。
组合设计
圆里有一个类型为Point的圆点
精选PPT
13
10.6 多继承概念
多继承结构 基类成员名冲突 基类分解
精选PPT
14
多继承结构
protected protected protecte private d
private private private private
精选PPT
6
10.3 派生类的构造
缺省构造 自定义构造 拷贝构造与赋值 对象构造顺序
谭浩强C程序设计(第三版)清华课件第9章_预处理
•
16、提出一个问题往往比解决一个更 重要。 因为解 决问题 也许仅 是一个 数学上 或实验 上的技 能而已 ,而提 出新的 问题, 却需要 有创造 性的想 像力, 而且标 志着科 学的真 正进步 。2021/6/29202 1/6/29J une
•
17、儿童是中心,教育的措施便围绕 他们而 组织起 来。202 1/6/292 021/6/2 92021/6/29202 1/6/29
printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v); }
8
运行情况如下:
input radius: 4↙
说明:
1=25.1328 s=50.2655 v=150.7966
(1) 宏名Biblioteka 般习惯用大写字母表示,以便与变量名相 区别。但这并非规定,也可用小写字母。
• 经过预处理后程序可由编译程序对预处理后的 源程序进行通常的编译处理,得到可供执行的 目标代码。
4
基本概念
• C语言与其他高级语言的一个重要区别是可以 使用预处理命令和具有预处理的功能。
C提供的预处理功能主要有以下三种:
1.宏定义
2.文件包含
3.条件编译
这些功能分别用宏定义命令、文件包含命令 、条件编译命令来实现。为了与一般C语句相 区别,这些命令以符号“#”开头。例如: #define #include
• 这个标识符(名字)称为“宏名”。
• 在预编译时将宏名替换成字符串的过程称为“宏展 开”。#define是宏定义命令。
6
•
9、要学生做的事,教职员躬亲共做; 要学生 学的知 识,教 职员躬 亲共学 ;要学 生守的 规则, 教职员 躬亲共 守。20 21/6/29 2021/6/29Tues day , June 29, 2021
清华《C语言程序设计》1概述和数据类型ppt
级语言与数据结构的基本思想,初步学会运用计算机语言解决
实际问题、培养学生程序设计逻辑思想,并为今后进一步使用
其他面向对象的可视化开发工具,开发管理信息系统等应用程
序打下基础。
C语言程序设计
5
第
一
章
C 课程目标:
语
言 简
❖熟记C语言的基本概念
介
❖熟悉C-FREE的上机操作环境
❖会读、会编、会调试C程序
第 一 章
C 语 言 简 介
C语言程序设计
1
第
一 章
C 教材、参考书与课时安排
语
言
– 教材
简
介
C语言程序设计 唐国民 编著 清华大学出版社
– 参考书
C程序设计 谭浩强 清华大学出版社
C高级实用程序设计 王士元 清华大学出版 社
– 课时安排
授课 :60学时
C语言程序设计
2
第
一
章
– 上机安排
C 语
• 上机地点:1幢四楼计算机机房431
• 1987年,ANSI公布了新标准——87 ANSI C。
• 1990年,国际标准化组织接受了87 ANSI C为ISO
C 的标准(ISO9899—1990)。
• 1994年,ISO又修订了C语言标准。
• 目前流行的C语言编译系统大多是以ANSI C为基础
进行开发的。
C语言程序设计
13
第
一 章
二、
– 认真、独立、按时完成并提交作业
– 重视上机实践,有效利用宝贵的上机时间
C语言程序设计
4
第
一
章 一、 C语言程序设计在计算机科学与技术专业中的作用与地位
C语言程序设计_课件_第三章(适于清华谭浩强版)
初学者经常会混淆关系运算符“ 初学者经常会混淆关系运算符“==”和赋值 和赋值 运算符“ , 因此要注意区分这两个运算符。 运算符 “ =”, 因此要注意区分这两个运算符 。 例3.3 #include "stdio.h" void main() { int x,y,z1,z2; x=2 ;y=2 ; z1=(x=y); z2=(x==y); printf("%d,%d\n",z1,z2); }
逻辑运算的规则与二进制的位逻辑是相 似的。 似的。 逻辑运算的规则下表: 逻辑运算的规则下表:
A 逻辑真 逻辑真 逻辑假 逻辑假 B 逻辑真 逻辑假 逻辑真 逻辑假 !A 逻辑假 逻辑假 逻辑真 逻辑真 !B 逻辑假 逻辑真 逻辑假 逻辑真 A&&B 逻辑真 逻辑假 逻辑假 逻辑假 A||B 逻辑真 逻辑真 逻辑真 逻辑假
注意: 注意:
算术表达式应能正确的表达数学公式。 算术表达式应能正确的表达数学公式。 例如: 例如:数学表达式是 3+x 2a 相应的C语言表达式应该是什么呢? 相应的C语言表达式应该是什么呢? 算术表达式的结果应该不超过其所能表示的 数的范围。例如,最大的整型数是32767 32767, 数的范围。例如,最大的整型数是32767, 那么,32767+ 就不会是正确的结果。 那么,32767+3就不会是正确的结果。而 32767L+ 的结果是正确的,因为32767 L+3 32767L 32767L+3的结果是正确的,因为32767L是长 整型数。 整型数。
3.4不同数据类型数据间的混合运算 3.4不同数据类型数据间的混合运算
自动转换 强制转换 赋值表达式的类型转换
自动转换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21世纪高等学校计算机教育实用规划教材
C 程序设计教程(中)
朱小菲 主 编 清华大学出版社
第5章循环结构 第6章数组 第7章指针
清华大学出版社
第5章 循环结构
一 5.1循环的ห้องสมุดไป่ตู้成 二 5.2循环语句
三 5.3循环的嵌套 四 5.4循环应用实例
5.1 循环的构成
【例5.1】判断某一正整数是否能够被3整除。
5.2.3 for语句
▪ 它的一般形式为: • for(表达式1;表达式2;表达式3) 语句
表达式1:循环的初始条件,一般为赋值表达式,给循 环的控制变量赋初值;
表达式2:循环条件,该表达式的值为逻辑量,一般为 关系表达式或逻辑表达式;
表达式3:循环的步长,一般为赋值表达式。 语句:循环体,当有多条语句时,必须使用复合语句。
循环体 步长 循环条件
do~while语句N~S结构化流程图
【例5.5】计算sin(x)=x-x3/3!+x5/5!x7/7!+…直到最后一项的绝对值小于10-7时 为止。
n=3,sum=0 输入x t=x
sum=sum+t
t=t*(-x*x)/(n-1)*n n=n+2
fabs(t)>=1e-7 输出sum
输入m
m%3==0
1
0
能被3整除
不能被3整除
N~S结构化流程图
【例5.2】找出100以内能被3整除的正整数。
初始条件
循环条 件 成立
循环体
不成立
步长
循环以后的其他语句
循环流程图
5.2 循环语句
▪ 5.2.1 while语句 • while语句是当型循环语句,一般形式为: • while(表达式) 语句;
max=i; printf("Max is %d\n",max); }
5.2.4 break和continue
▪ 1.break语句 • break语句的一般形式为: • break;
【例5.8】判断某个一位数是否在一个不高于四位的 整数中出现。
main() {
int m,n; int flag=1; scanf("%d%d",&m,&n); while(m!=0) {
}
5.2.5三种语句的选用
▪ 1.while和do~while语句的区别
• while语句对作为循环条件的表达式求值和验证在执行循环体之前, 而do-While语句对作为循环条件的表达式求值和验证在执行循环体 之后。对于do-while语句,它的循环体至少被执行一次。
1
n%3==0 0
sum=sum+n
n++ 输出sum
例5.4 N~S结构化流程图
main() {
int n=1,sum=0; while(n<=100) {
if(n%3==0) sum=sum+n; n++; } printf("%d\n",sum); }
5.2.2 do~while语句
▪ do~while的一般形式为: do 语句 while<表达式>;
【例5.9】输出1~1000之间能被3,5,7同 时整除的数。
main()
{
int n;
for(n=1;n<=1000;n++)
{
if (n%3!=0) continue;
if (n%5!=0)
continue;
if(n%7!=0) continue;
printf("%8d",n);
}
printf("\n");
#include <stdio.h> #include <math.h> main ( ) { int m,n,i,t,max;
printf("Please input m,n :"); scanf("%d%d",&m,&n); if(m>n) t=n; else t=m; for(i=1;i<=t;i++) if(m%i==0&&n%i==0)
例如:找出100以内能被3整除的正整数。 main() {
int m=1; while(m<=100)
{ if(m%3==0)
printf("%8d",m); m=m+1; } }
【例5.3】求n!
n=1,s=1 输入m n<=m s=s*n n++ 输出s
例5.3 N~S结构化流程图
main() {
例5.5 N~S结构化流程图
#include "math.h" #include "stdio.h" main() {
float sum=0,t,x,n=3; printf("please input x :"); scanf("%f",&x); t=x; do {
sum=sum+t; t=t*(-x*x)/((n-1)*n); n=n+2; }while(fabs(t)>=1e-7); printf("sin(%f)=%f\n", x,sum); }
for语句的几种格式
▪ for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。 ▪ (1)for( ; ;) 语句; ▪ (2)for( ;表达式2;表达式3) 语句; ▪ (3)for(表达式1;表达式2;) 语句; ▪ (4)for(i=1,j=n;i<j;i++,j--) 语句;
【例5.7】求两个正整数的最大公约数
int n=1,m; long int s=1; printf("please input m:"); scanf("%d",&m); while(n<=m) {
s*=n; n++; } printf("%d!=%ld\n",m,s); }
【例5.4】求100以内能被3整除的数之和
n=1
sum=0 n<=100
【例5.6】计算自然数1到n的平方和。
#include <stdio.h> main ( ) {
int i,n; float sum=0; printf("please input n :"); scanf("%d",&n); for(i=1;i<=n;i++) sum+=i*i; printf("1*1+2*2 ... %d*%d=%f\n",n,n,sum); }
if(n==m%10) {flag=0;break;}
m=m/10; } if(flag==0)
printf("Yes!\n"); else
printf("No!\n"); }
2.continue语句
▪ 一般格式是: • continue;
执行了continue语句, 程序就跳过循环体中位 于该语句后的所有语句, 提前结束本次循环周期 并开始新一轮循环。
C 程序设计教程(中)
朱小菲 主 编 清华大学出版社
第5章循环结构 第6章数组 第7章指针
清华大学出版社
第5章 循环结构
一 5.1循环的ห้องสมุดไป่ตู้成 二 5.2循环语句
三 5.3循环的嵌套 四 5.4循环应用实例
5.1 循环的构成
【例5.1】判断某一正整数是否能够被3整除。
5.2.3 for语句
▪ 它的一般形式为: • for(表达式1;表达式2;表达式3) 语句
表达式1:循环的初始条件,一般为赋值表达式,给循 环的控制变量赋初值;
表达式2:循环条件,该表达式的值为逻辑量,一般为 关系表达式或逻辑表达式;
表达式3:循环的步长,一般为赋值表达式。 语句:循环体,当有多条语句时,必须使用复合语句。
循环体 步长 循环条件
do~while语句N~S结构化流程图
【例5.5】计算sin(x)=x-x3/3!+x5/5!x7/7!+…直到最后一项的绝对值小于10-7时 为止。
n=3,sum=0 输入x t=x
sum=sum+t
t=t*(-x*x)/(n-1)*n n=n+2
fabs(t)>=1e-7 输出sum
输入m
m%3==0
1
0
能被3整除
不能被3整除
N~S结构化流程图
【例5.2】找出100以内能被3整除的正整数。
初始条件
循环条 件 成立
循环体
不成立
步长
循环以后的其他语句
循环流程图
5.2 循环语句
▪ 5.2.1 while语句 • while语句是当型循环语句,一般形式为: • while(表达式) 语句;
max=i; printf("Max is %d\n",max); }
5.2.4 break和continue
▪ 1.break语句 • break语句的一般形式为: • break;
【例5.8】判断某个一位数是否在一个不高于四位的 整数中出现。
main() {
int m,n; int flag=1; scanf("%d%d",&m,&n); while(m!=0) {
}
5.2.5三种语句的选用
▪ 1.while和do~while语句的区别
• while语句对作为循环条件的表达式求值和验证在执行循环体之前, 而do-While语句对作为循环条件的表达式求值和验证在执行循环体 之后。对于do-while语句,它的循环体至少被执行一次。
1
n%3==0 0
sum=sum+n
n++ 输出sum
例5.4 N~S结构化流程图
main() {
int n=1,sum=0; while(n<=100) {
if(n%3==0) sum=sum+n; n++; } printf("%d\n",sum); }
5.2.2 do~while语句
▪ do~while的一般形式为: do 语句 while<表达式>;
【例5.9】输出1~1000之间能被3,5,7同 时整除的数。
main()
{
int n;
for(n=1;n<=1000;n++)
{
if (n%3!=0) continue;
if (n%5!=0)
continue;
if(n%7!=0) continue;
printf("%8d",n);
}
printf("\n");
#include <stdio.h> #include <math.h> main ( ) { int m,n,i,t,max;
printf("Please input m,n :"); scanf("%d%d",&m,&n); if(m>n) t=n; else t=m; for(i=1;i<=t;i++) if(m%i==0&&n%i==0)
例如:找出100以内能被3整除的正整数。 main() {
int m=1; while(m<=100)
{ if(m%3==0)
printf("%8d",m); m=m+1; } }
【例5.3】求n!
n=1,s=1 输入m n<=m s=s*n n++ 输出s
例5.3 N~S结构化流程图
main() {
例5.5 N~S结构化流程图
#include "math.h" #include "stdio.h" main() {
float sum=0,t,x,n=3; printf("please input x :"); scanf("%f",&x); t=x; do {
sum=sum+t; t=t*(-x*x)/((n-1)*n); n=n+2; }while(fabs(t)>=1e-7); printf("sin(%f)=%f\n", x,sum); }
for语句的几种格式
▪ for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。 ▪ (1)for( ; ;) 语句; ▪ (2)for( ;表达式2;表达式3) 语句; ▪ (3)for(表达式1;表达式2;) 语句; ▪ (4)for(i=1,j=n;i<j;i++,j--) 语句;
【例5.7】求两个正整数的最大公约数
int n=1,m; long int s=1; printf("please input m:"); scanf("%d",&m); while(n<=m) {
s*=n; n++; } printf("%d!=%ld\n",m,s); }
【例5.4】求100以内能被3整除的数之和
n=1
sum=0 n<=100
【例5.6】计算自然数1到n的平方和。
#include <stdio.h> main ( ) {
int i,n; float sum=0; printf("please input n :"); scanf("%d",&n); for(i=1;i<=n;i++) sum+=i*i; printf("1*1+2*2 ... %d*%d=%f\n",n,n,sum); }
if(n==m%10) {flag=0;break;}
m=m/10; } if(flag==0)
printf("Yes!\n"); else
printf("No!\n"); }
2.continue语句
▪ 一般格式是: • continue;
执行了continue语句, 程序就跳过循环体中位 于该语句后的所有语句, 提前结束本次循环周期 并开始新一轮循环。