C语言程序设计第四版PPT 谭浩强
合集下载
C语言程序设计(第四版) 谭浩强 课件 PPT 完整版
语句
printf语句中的“\n‖是换行
符
<
>
C语言程序设计
第/* example1.1 calculate the sum of a and b*/ #include <stdio.h> 预处理命令 /* This is the main program */ void main() 注释 { int a,b,sum; /*定义变量*/ 函数 a=10; b=24; 语句 sum=add(a,b); printf(”sum= %d\n",sum); } printf语句中的“ %d ‖是表
C语言程序设计
第一章 C语言概述
C语言结构特点
函数与主函数
程序由一个或多个函数组成 必须有且只能有一个主函数main(),可以放在程序中任一 位臵 程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。
程序语句
C程序由语句组成 用‚;‛作为语句终止符
注释
C语言程序设计
第一章 C语言概述
Turbo C集成开发环境
配臵要求
UNIX,PC-DOS,MS-DOS,UCDOS操作系统 硬盘容量约2M,448K RAM运行空间
安装Turbo C
创建子目录 Install 若不是可安装盘,将文件拷贝到对应的目录下
TC
*.* *.*
INCLUDE SYS
Alt +x Alt+F ,Q
帮助Help
F1 Ctrl+F1
<
>
C语言程序设计
第一章 C语言概述
常用热键 基本操作:
F10-----调用主菜单 F2------存盘 F3------打开 F1------帮助信息 Alt+F9------Compile Ctrl+F9------Run Alt+F5------User Screen Alt+X ------退出Tc
C语言程序设计第四版PPT 谭浩强
case '9' : y="A";
case '8' : y="B"; case '7' : y="C"; case '6' : y="D"; default : y="E"; } printf("Level:%c\n",y);
注意: 同前;case后的数据类型; 每个case后的break语句; 使用相同语句的分支合并。
printf("It's a positive number\n");
else
printf("less than zero\n");
关系运算符
< <= == !=
> >= 优先级高 优先级低
关系运算符
算术运算→关系运算→赋值运算
优
优
先
先
于
于
例:P.92 L.8
关系表达式
➢用关系运算符连接算术表达式(或 字符/关系/逻辑/赋值表达式)形成
选择结构(分支结构)流程
Y
语句组1
条件
N
语句组2
循环结构流程
条件
N
Y
语句组
第4章 选择结构
选择结构(分支结构)流程YΒιβλιοθήκη 语句组1条件N
语句组2
选择结构实例
P.66 例3.5 一元二次方程 程序存在的问题:用户输入的数据必 须保证b2-4ac≥0,否则调用sqrt函数 会出错。 改进:P.86 例4.1 是否还有不完善之处?
文件名
尽信书,则不如无书
算法在程序中的重要性
case '8' : y="B"; case '7' : y="C"; case '6' : y="D"; default : y="E"; } printf("Level:%c\n",y);
注意: 同前;case后的数据类型; 每个case后的break语句; 使用相同语句的分支合并。
printf("It's a positive number\n");
else
printf("less than zero\n");
关系运算符
< <= == !=
> >= 优先级高 优先级低
关系运算符
算术运算→关系运算→赋值运算
优
优
先
先
于
于
例:P.92 L.8
关系表达式
➢用关系运算符连接算术表达式(或 字符/关系/逻辑/赋值表达式)形成
选择结构(分支结构)流程
Y
语句组1
条件
N
语句组2
循环结构流程
条件
N
Y
语句组
第4章 选择结构
选择结构(分支结构)流程YΒιβλιοθήκη 语句组1条件N
语句组2
选择结构实例
P.66 例3.5 一元二次方程 程序存在的问题:用户输入的数据必 须保证b2-4ac≥0,否则调用sqrt函数 会出错。 改进:P.86 例4.1 是否还有不完善之处?
文件名
尽信书,则不如无书
算法在程序中的重要性
C语言程序设计第四版PPT-谭浩强
文件f2的 文件信息区
文件f3的 文件信息区
文件的基本知识——文件的操作 写文件:打开-写-关闭 读文件:打开-读-关闭
文件的打开
功能:为文件建立相应的信息区(存放 文件信息)和文件缓冲区(暂时存放输入 输出的数据) 函数: fopen(文件名,使用文件方式); 例: fopen("a1.dat","r");
第10章 文件
本章内容
10.1 文件的基本知识 10.2 打开与关闭文件 10.3 顺序读写数据文件 10.4 随机读写数据文件 10.5 文件读写的出错检测
文件的基本知识——输入输出
之前各章中处理的数据 ➢输入:键盘->内存 ➢输出:内存->显示器 实际上也可能是 ➢输入:外部设备->内存(读文件) ➢输出:内存->外部设备(写文件) 操作系统把各种设备都统一作为文件处理
文件
顺序文件的读写——读写字符串
例10.3 从键盘输入3个字符串,排序,把排
序后的字符串写入文件(P.342-343) 读上面写好的文件(P.344)
顺序文件的读写——格式化读写
fprintf(文件指针,格式字符串,输出表列); fscanf (文件指针,格式字符串,输入表列);
例: fprintf (fp,"%d,%6.2f",i,f); fscanf (fp,"%d,%f",&i,&f);
用文件扩展名”
文件的基本知识——流式文件
C语言把文件看作是字符(或字 节)的序列。
文件以“流”的形式在程序与操 作系统间流动。
文件的基本知识——数据的形式
根据数据的组织形式,数据文件可分为 ASCII文件:数据逐个字符的ASCII码 输出到外存,也称文本文件 二进制文件:内存中二进制形式的数据 直接输出到外存
C语言程序设计第四版谭浩强-PPT课件
例: printf("%d",sizeof(int));
浮点型数据(Floating point,即实型) 浮点型常量
两种表示形式 十进制小数:例如 3.14159 指数形式:例如 1.72e3
main( ) { float x; x=23456.789; printf("x=%e",x); }
25string26string字符串结束符占一个字节由系统自动加上源代码中china27字符常量字符串常量定界符非负整数存储要求单个字符的ascii码有效字符和结束标志0的ascii码2829整型intshortlong浮点型floatdoublelongdouble字符型char数据可混合运算运算前先自动转换成同一类型必定转换floatdoublecharint运算对象类型不同时由较低精度向较高精度转换成相同类型精度
常变量
C99新增 存储方式和用法都是变量,但只能在 定义时赋值一次
C语言的数据类型
1.基本类型 整型、浮点型、字符型 2.派生类型 数组,结构体,共用体 3.指针类型 4.空类型 5.枚举型
整型数据(Integer) 整型常量
三种数制的表示形式
十进制(Decimal):例如 八进制(Octal):例如
上周实验题讲解
P.6例1.1 P15习题5 教材例1.3
——增加输入提示,便于用户操作
——也可以不用函数
——多次运行,测试各种顺序的组合
P15习题6
——三个数比较:用max函数比较两次
第3章
顺序程序设计
3.1 最简单的程序结构——顺序结构
数据输入 运算处理
结果输出
顺序结构流程
步骤1 步骤2 步骤3
10 + 'a' – 10.1 * 'b'
浮点型数据(Floating point,即实型) 浮点型常量
两种表示形式 十进制小数:例如 3.14159 指数形式:例如 1.72e3
main( ) { float x; x=23456.789; printf("x=%e",x); }
25string26string字符串结束符占一个字节由系统自动加上源代码中china27字符常量字符串常量定界符非负整数存储要求单个字符的ascii码有效字符和结束标志0的ascii码2829整型intshortlong浮点型floatdoublelongdouble字符型char数据可混合运算运算前先自动转换成同一类型必定转换floatdoublecharint运算对象类型不同时由较低精度向较高精度转换成相同类型精度
常变量
C99新增 存储方式和用法都是变量,但只能在 定义时赋值一次
C语言的数据类型
1.基本类型 整型、浮点型、字符型 2.派生类型 数组,结构体,共用体 3.指针类型 4.空类型 5.枚举型
整型数据(Integer) 整型常量
三种数制的表示形式
十进制(Decimal):例如 八进制(Octal):例如
上周实验题讲解
P.6例1.1 P15习题5 教材例1.3
——增加输入提示,便于用户操作
——也可以不用函数
——多次运行,测试各种顺序的组合
P15习题6
——三个数比较:用max函数比较两次
第3章
顺序程序设计
3.1 最简单的程序结构——顺序结构
数据输入 运算处理
结果输出
顺序结构流程
步骤1 步骤2 步骤3
10 + 'a' – 10.1 * 'b'
谭浩强C程序设计四PPT课件
第四章 最简单的ห้องสมุดไป่ตู้程序设计 --顺序程序设计
教学要求: 1理解数据输入与输出操作和格式 2掌握输入与输出 3掌握用顺序结构来进行程序设计
教学内容: 4.1C语句概述 4.2赋值语句 4.3数据输出 4.4数据输入 4.5程序举例
高级语言程序设计
章顺序程序设计
第四
4.1 C语句概述
C语句作用:用来向计算机系统发出 操作指令
输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息
格式说明: %[修饰符]格式字符 ,用于指定输出格式 普通字符或转义序列:原样输出 格式字符
高级语言程序设计
格式字符:
章顺序程序设计
第四
d,i 十进制整数
int a=-1;printf ( “%d”,a);
-1
x,X 十六进制无符号整数int a=255;printf(“%x”,a);
ff
o u c s e,E f g %%
指八小e不百字单和例数进数带分符一f中形制形符号串字较式无式号本符ipp短浮符浮十身nrr一tii点号点进nn种例输制小整小att例=ff整数数数出3((,““数结bfffmcill=a%iilphan果oonnop4=draiaatttar;%ir例ttntip:nd%aan(输arptadaa==atf)==ir==,\6-=f(6出3ni355515(n“m566,tn;;6“b”;a77pp结7bft%p=i..rr.%=(f4sr%,77nii7%”果i4“(88dann8”(输n{};“99tt9\,),t:;;%ff;)nb“f出pp((p;da()”rr““ruu=A“;ii结iBnp=%%ann,%%nC%sr-dd=ttouta果”cii1ff\3””f,”{}((gn(,n,)b:““,,“nt”;,)aaefabb%%;))%uu)d(=,=fe;;gnp=;”””%a4”sr-d,ii1,,,iub\aagnan=)n)))ntt%;”;;;efdd(\,5”una.55="6,6iu6676,15Ab77n=7A05B5u%)..8t%13C5);7795d3;880\995eun0+;0="0126,5u5)
教学要求: 1理解数据输入与输出操作和格式 2掌握输入与输出 3掌握用顺序结构来进行程序设计
教学内容: 4.1C语句概述 4.2赋值语句 4.3数据输出 4.4数据输入 4.5程序举例
高级语言程序设计
章顺序程序设计
第四
4.1 C语句概述
C语句作用:用来向计算机系统发出 操作指令
输出表:要输出的数据(可以没有,多个时以“,”分隔) 格式控制串:包含两种信息
格式说明: %[修饰符]格式字符 ,用于指定输出格式 普通字符或转义序列:原样输出 格式字符
高级语言程序设计
格式字符:
章顺序程序设计
第四
d,i 十进制整数
int a=-1;printf ( “%d”,a);
-1
x,X 十六进制无符号整数int a=255;printf(“%x”,a);
ff
o u c s e,E f g %%
指八小e不百字单和例数进数带分符一f中形制形符号串字较式无式号本符ipp短浮符浮十身nrr一tii点号点进nn种例输制小整小att例=ff整数数数出3((,““数结bfffmcill=a%iilphan果oonnop4=draiaatttar;%ir例ttntip:nd%aan(输arptadaa==atf)==ir==,\6-=f(6出3ni355515(n“m566,tn;;6“b”;a77pp结7bft%p=i..rr.%=(f4sr%,77nii7%”果i4“(88dann8”(输n{};“99tt9\,),t:;;%ff;)nb“f出pp((p;da()”rr““ruu=A“;ii结iBnp=%%ann,%%nC%sr-dd=ttouta果”cii1ff\3””f,”{}((gn(,n,)b:““,,“nt”;,)aaefabb%%;))%uu)d(=,=fe;;gnp=;”””%a4”sr-d,ii1,,,iub\aagnan=)n)))ntt%;”;;;efdd(\,5”una.55="6,6iu6676,15Ab77n=7A05B5u%)..8t%13C5);7795d3;880\995eun0+;0="0126,5u5)
C语言程序课件ppt第4章选择结构程序设计谭浩强C程序设计第四版
C★
A★
●B
4.2.1 用if语句处理选择结构举例
C★ A ●★ ● B
4.2.1 用if语句处理选择结构举例
C★ A ● ●★ B
#include <stdio.h> int main() { float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b) 如果a>b
{ t=a;
a=b; 将a和b的值互换
b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; }
#include <stdio.h>
int main()
{ float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{ t=a; a=b;
选择结构,用if语句实现的
a && b 真 假 假 假
a || b 真 真 真 假
4.4.1 逻辑运算符及其优先次序
➢逻辑运算符的优先次序
! → && → ||
(!为三者中最高)
➢与其他运算符的优先次序
! 算术运算符 关系运算符
&& 和 || 赋值运算符
(高) (低)
4.4.2 逻辑表达式
➢ 逻辑表达式的值应该是逻辑量“真”或“假” ➢ 编译系统在表示逻辑运算结果时
4.3.1关系运算符及其优先次序
c>a+b a>b==c a==b<c a=b>c
等效于 c>(a+b) 等效于 (a>b)==c 等效于 a==(b<c) 等效于 a=(b>c)
C语言程序设计第四版PPT 谭浩强
i 1 100
问题的扩展: (1) 求 1 ~ 100 间奇数的和
int i,sum=0; for (i=1;i<=100;i=i+2) sum=sum+i; printf("1+3+...+99=%d\n",sum); int i,sum=0; for (i=1;i<=100;i++) if(i%2==1)sum=sum+i; printf("1+3+...+99=%d\n",sum);
do-while语句
do 语句 while (表达式)
假(0)
语句
表达式
真(非0)
语句 表达式
N-S图
流程图
do-while语句
例1:求 n 1 2 3 ... 100
n 1
100
int i=1,sum=0;
do
{ sum=sum+i;
i++;
}while(i<=100);
例4:求
10
n ! 1! 2! 3! ... 10 !
n 1
int i,n, fac,sum=0; for (n=1;n<=10;n++) { fac=1; for (i=1;i<=n;i++) fac=fac*i; sum=sum+fac; } printf ("1!+2!+...+10!=%ld\n",sum);
例6:鸡兔问题
计算机的解决方法——将各种可能情 况逐个试算,找到符合要求的结果
鸡0只,兔H只,则脚有...只≠F 鸡1只,兔H-1只,则脚有...只≠F 鸡2只,兔H-2只,则脚有...只≠ F ...... 鸡C只,兔H-C只,则脚有...只=F,显示结果 ...... 鸡H只,兔0只,则脚有...只≠ F
问题的扩展: (1) 求 1 ~ 100 间奇数的和
int i,sum=0; for (i=1;i<=100;i=i+2) sum=sum+i; printf("1+3+...+99=%d\n",sum); int i,sum=0; for (i=1;i<=100;i++) if(i%2==1)sum=sum+i; printf("1+3+...+99=%d\n",sum);
do-while语句
do 语句 while (表达式)
假(0)
语句
表达式
真(非0)
语句 表达式
N-S图
流程图
do-while语句
例1:求 n 1 2 3 ... 100
n 1
100
int i=1,sum=0;
do
{ sum=sum+i;
i++;
}while(i<=100);
例4:求
10
n ! 1! 2! 3! ... 10 !
n 1
int i,n, fac,sum=0; for (n=1;n<=10;n++) { fac=1; for (i=1;i<=n;i++) fac=fac*i; sum=sum+fac; } printf ("1!+2!+...+10!=%ld\n",sum);
例6:鸡兔问题
计算机的解决方法——将各种可能情 况逐个试算,找到符合要求的结果
鸡0只,兔H只,则脚有...只≠F 鸡1只,兔H-1只,则脚有...只≠F 鸡2只,兔H-2只,则脚有...只≠ F ...... 鸡C只,兔H-C只,则脚有...只=F,显示结果 ...... 鸡H只,兔0只,则脚有...只≠ F
C语言程序设计第四版PPT_谭浩强6章资料
折半查找
int a[11]={5,13,19,21,37,56,64,75,80,88,92}; int index=-1,key,low,high,middle;
scanf("%d",&key); low=0;high=10; while(low<=high) { middle=(low+high)/2; if (key==a[middle]) { index=middle; break; } else if (key>a[middle]) low=middle+1; else high=middle-1; }
二维数组
例6.4 二维数组行列对换(矩阵转置)
例6.5 对于一个二维数组,求最大值及其下
标 经典实例:杨辉三角(第6章习题第6题)
二维数组
本节要点
二维数组的物理存储方式
二维数组的逻辑概念——矩阵
二维数组元素的遍历——双重循环
字符数组
C语言中没有字符串变量,字符串 数据需要使用字符数组保存。
数组名[下标][下标] 例:赋值 a[1][3]=8;
输出 printf("%d",a[2][1]);
二维数组的定义和引用
下面的程序运行时输入 34 56 12 7 9 41 52, 显示结果为______。 int a[2][3], i, j; for (i=0; i<=1; i++) for (j=0; j<=2; j++) scanf("%d", &a[i][j]); for (j=0; j<=2; j++) { for (i=0; i<=1; i++) printf("%d\t", a[i][j]); printf("\n");}
C语言程序设计第四版PPT 谭浩强
第9章 用户建立的 数据类型
本章内容
9.1 结构体类型和结构体变量 9.2 结构体数组 9.3 结构体指针 9.4 用指针处理链表 9.5 共用体类型
9.6 枚举类型
9.7 用typedef命名类型
9.1 结构体(Structure)
概念 不同类型的相关数据组合成一个整 体,以便引用。 例:
电话本程序 P.297
9.1 结构体
一个简单的例子
struct Teacher { char id[4]; char name[10]; int age; char course[20]; };
struct Teacher t1={"0324","Li",40,"C Language"}, t2={"1728","Hu",30,"Data Structure"}; printf("%s teaches %s\n",,t1.course); printf("No: %s teaches %s\n",t2.id,t2.course); t1=t2;
9.2 结构体数组
例子修改——结构体类型数组初始化
struct Teacher { char id[4]; char name[10]; int age; char course[20]; } teac[2]={ {"0324","Li",40,"C Language"}, {"1728","Hu",30,"Data Structure"}};
“函数”习题讲解
函数编写应注意的问题——模块划分的原则: P.203功能要单一,相互影响尽量少。例 7.17是个不好的程序。 初学者常见的习惯:输入、输出与数据处理 运算放在一个函数中。 关于数组(的首地址)作为函数的形参: P.195 数组的大小是否指定全无影响。 通常会定义一个整型的参数,接收实参数组 的大小。
C语言程序设计第四版PPT_谭浩强
冒泡排序 对数组元素a[0]-a[5]升序排序 比较a[5]和a[4],若顺序不符则交换; 比较a[4]和a[3],若顺序不符则交换; 比较a[3]和a[2],若顺序不符则交换; 比较a[2]和a[1],若顺序不符则交换; 比较a[1]和a[0],若顺序不符则交换。
冒泡排序
=》结果:最小的数被换到了a[0]中。 =》对a[1]-a[5]重复上述步骤,将其中最 小的数换到a[1]中。 =》重复上述步骤直至完成排序。
选择排序
for (i=0;i<5;i++)
{ imin=i;min=a[i]; /*求a[i]之后元素的最小值*/
for (j=i+1;j<=5;j++)
if (a[j]<min)
{ min=a[j]; /*变量min记录最小值 */
imin=j;
/*变量imin记录最小值的下标 */
}
temp = a[i];
例:在一维数组中查找给定数据及下标
这是顺序查找法。 还有一种常用的折半 查找法,数据量大且 有序时使用,效率更 高。
折半查找
一维数组的定义和引用
例:排序算法
算法演示 •冒泡排序 •选择排序 •插入排序 •快速排序
冒泡排序
基本思路:依次将数组中相邻两元 素比较,并按要求的顺序交换,从而 将最大/最小的数推至最前或最后;对 余下的数重复上述步骤,最终获得所 需的顺序
一维数组的定义和初始化
一维数组的定义和初始化
一维数组的定义和初始化
int a[5],i; for(i=0;i<5;i++)
printf("%d\n",a[i]);
一维数组的定义、初始化和引用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
条件表达式
表达式1 ? 表达式2 : 表达式3
当表达式1为真时返回表达式2的值,
否则返回表达式3的值
条件运算符和条件表达式
例
int a,b,x; a=5; b=8; x=a>b?a:b; printf("%d",x);
switch语句实现多分支选择结构
switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 ...... case 常量表达式n: 语句n default: 语句n+1 }
if语句
if(条件1) 语句1
else if(条件2) 语句2 else if(条件3) 语句3 ...... else 语句n
例:求一元二次方程的解
输入a, b, c
N Y Y N
a≠0
N
b≠0
b2-4ac≥0 C=0
N Y
x
c b
Y
x1 x2
b b
b
2
4 ac
输出x
任 意
printf("greater than zero or equal to zero\n"); printf("less than zero\n");
printf("It's a negative\n");
if语句
int x; printf("x=");
scanf("%d",&x);
if (x>=0)
>
>=
优先级高 优先级低
关系运算符
算术运算→关系运算→赋值运算 优 优 先 先 于 于 例:P.92 L.8
关系表达式
用关系运算符连接算术表达式(或
字符/关系/逻辑/赋值表达式)形成
关系表达式的值是真(以1表示)
或
假(以0表示)
字符/关系/逻辑/赋值表达式均以数
值形式参加关系运算
关系表达式
C++,C99版本使用
类型符 _Bool
值为 true 和 false
头文件 stdbool.h
if语句
if (条件) 语句
说明:
“条件”是关系表达
if (条件) 语句
else 语句 if (条件) {复合语句} else {复合语句}
式或逻辑表达式,其值 为“真”(非0)或 “假”(0)
语句均要以分号结束,
分别输入正数、负 数、零,判断程序 的运行结果
printf("greater than zero or equal to zero\n"); printf("It's a positive number\n"); else
printf("less than zero\n");
关系运算符
< ==
<= !=
无 解
2a b
2
复数解
4 ac
2a
输出x1, x2
if语句的嵌套
if 语句的嵌套 if (...) if (...) 语句1 else 语句2 else if (...) 语句3 else 语句4
“语句”包括复合语 句
读教材101页代码
条件运算符和条件表达式
条件运算符 ? :
唯一的三目运算符
提醒
数学式10<x≤20在计算机语言中的表达 switch语句的特殊语法格式 表达式的正确书写 库函数的使用(见附录F) 正确的数据类型 十分重要!!! 正确的程序结构
if (90<=x<=100) y="A";
if (80<=x<=89) y="B";
if (70<=x<80) y="C";
注意: scanf函数中的地址运算符; 90<=x<=100的正确表达; char类型,单引号与双引号; 分支的结构与运行步骤。
if (60<=x<70) y="D";
else y="E"; printf("Level:%c\n",y);
N-S图 伪代码 计算机语言
x>0
T F
打印x
打印-x
算法的表达方式
自然语言
流程图
N-S图 伪代码1 计算机语言
如果 x>0 就 打印 x 否则 打印 -x
算法的表达方式
自然语言
流程图
N-S图 伪代码2 计算机语言
if x>0 then print x else print -x
判断下面程序运行时显示的结果: int a=5,b=3; printf("%d\n",a>b); printf("%d\n",(a>3)>(b==3)); printf("%d\n",a>3>b==3); printf("%d\n",a>b>2); printf("%d\n",a-3>(b=2)); printf("%d\n",'a'>'A');
阅读下面的程序,判断编译和运行结果
int x; char y; printf("input x :"); case '8' : y="B";
case '7' : y="C";
case '6' : y="D";
scanf("%d",x);
switch (x/10)
default : y="E";
}
{ case '10' : y="A";
{ }括起的复合语句每句 都以分号结束
if语句
例:P.88 例4.3 三个数从小到大排列
例 求分段函数的值
|x| 3 y x 3x 1 7e x x1 1 x 10 x 10
* 用多个平行的 if 语句表达 * 用 if … else if … else … 表达 * abs,pow,exp函数的使用
算法的表达方式
自然语言
流程图
N-S图 伪代码 计算机语言
算法的表达方式
自然语言
流程图
N-S图 伪代码 计算机语言
如果x是正数,就打印x; 否则打印-x
算法的表达方式
自然语言
T
流程图
N-S图 伪代码 计算机语言
x>0
F
打印x
打印-x
算法的表达方式
自然语言
流程图
逻辑运算符
! && || 非 与 或 优先级
运算规则见表4-2,4-3 例 P.93-94
逻辑表达式
例:P.95-96 闰年的表达
以逻辑运算符连接关系表达式和逻辑
量形成
逻辑表达式的结果是真(以1表示)
假(以0表示)
或
0和1以外的数据(数值、字符等)参加
逻辑运算时,以0为假,非0为真
逻辑变量
阅读下面的程序,判断编译和运行结果
int x,y; scanf("%d",&x); if (x<1) y=x; if (1<=x<10) y=2x-1; if (x>=10) y=3x-1; printf("y=%d",y); float x,y; scanf("%f",&x); if (x<1) y=x; else if (x<10) y=2*x-1; else y=3*x-1; printf("y=%f",y);
printf("%d",y);
注意:y没有被赋值的错误;分支结 束后的语句
阅读下面的程序,判断运行结果
float r,S; scanf("r=%f",&r); if (r>=0) 注意: s=3.14159*r*r; (1)条件后未写{ }造成分支语句不匹配, printf("S=%f",s); (2)变量名大小写问题 ; else printf("radius can not be negative");
三种基本程序结构
顺序结构
选择结构 循环结构
顺序结构流程
步骤1
步骤2
步骤3
选择结构(分支结构)流程
Y
条件
N
语句组1
语句组2
循环结构流程
条件
Y
N
语句组
第4章 选择结构
选择结构(分支结构)流程
Y
条件
N
语句组1
语句组2
选择结构实例
P.66 例3.5 一元二次方程 程序存在的问题:用户输入的数据必 须保证b2-4ac≥0,否则调用sqrt函数 会出错。
算法的表达方式
自然语言
流程图
N-S图 伪代码2 计算机语言
if (x>0) printf("%d", x);
else
printf("%d", -x);
程序流程图常用符号
处理框 判断框 输入/输出框
流程线
结构化程序设计方法
自顶向下 逐步细化 模块化设计 结构化编码
大任务分解为小任务
第2章 算法
算法在程序中的重要性
一个程序包含以下内容
数据的类型与组织形式——数据结构