3、C语言第3章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应当是含糊的(多义性),应是十分明确无误的。 3.有0个或多个输入。 4.有一个或多个输出。 5.有效性 算法中的每一个步骤都应当有效的执行,
并得到确定的结果。
3.3 算法的表示方法
(1) 自然语言描述法 (2) 传统的流程图表示 常用符号有: (3) N-S流程图表示 (4) 伪代码表示算法 (5) 计算机语言表示算法
float a,b,c,s,area; scanf(“%f%f%f”,&a,&b,&c);
计算area=s*(sa)*(sb)*(sc) s=(a+b+c)/2.0;
结果输出
area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“a=%f b=%f c=%f s=%f”,a,b,c,s);
一条完整的C语句必须以“;”结束。 “;”是 一个语句不可缺少的一部分。
1. 控制语句:完成一定的控制功能。
C 有9种控制语句:
⑴if( ) ~ else ~
(条件语句)
⑵ for( ) ~
(循环语句)
⑶ while( ) ~
(循环语句)
⑷ do ~ while( ) (循环语句)
⑸ continue
结合性:自左向右
关系运算符的优先次序
与其它运算符优先级的比较:
算术运算符 (高) 关系运算符 赋值运算符 (低)
例如: c=d>a+b 等效于:c=(d>(a+b))
3.7.1.2 关系表达式
1. 什么是关系表达式?
如:(a>b)>(b<c) 、‘a’<‘b’ 、x>y 、s+f>d
2. 关系表达式的值
{ y=x1*x1+x2 ; printf("y=%d",y) ; } 不能加“;” 不能省略
说明:
(1)复合语句中的每一个语句还可以是复合语句;
(2)复合语句尽管可由多个语句组合,但它只相当于一 个语句,在任何单一语句可以存在的地方,复合语句都可 以存在。
(3)在复合语句内,不仅可以有执行语句,还可以有定 义部分,定义部分应该出现在可执行语句的前面。
算法举例4: 用计算机语言表示算法 求 1-1/2 + 1/3 –1/4 +…+ 1/99 –1/100。
S1: 1 s S2: 1 sum S3: 2 d S4: (-1)*s s S5: s*(1/d) t S6: sum+t sum S7: d+1 d
main() { int s=1; float d=2.0 , sum=1.0, t; while (d<=100)
3.6 顺序结构程序设计
(顺序结构)
(选择结构)
(循环结构)
特点:程序按语句从上到下的排列顺序依此执 行,每条语句必须执行且只能执行一次, 没有执行不到或执行多次的语句。
例如:已知圆柱体半径6米,高7米,求体积。
#define PI 3.1415 main( ) {
float r , h , s , v ; r=6 ; h=7 ; s=PI*r*r ; v=s*h ; printf(“V=%f\n”, v); }
(结束本次循环语句)
⑹ break (中止执行switch或循环语句)
⑺ switch
(多分支选择语句)
ห้องสมุดไป่ตู้⑻ goto
(转向语句)
⑼ return
(从函数返回语句)
2. 函数调用语句
由一次函数调用加一个“ ; ”构成。 如:printf(“Hello World!”) ;
函数调用
分号
3. 赋值语句
由表达式加上“ ; ”构成。
算法举例3 : 用伪代码表示算法:用介于自然语言和计算 机语言之间的文字和符号来描述算法
BEGIN 1 =>i while(i 50) { input ni和gi i+1=>i } 1 =>i while(i 50) { if (gi >=80) print ni和gi i+1=>i }
END
运算结果∶逻辑值 1——“真” ,0—— “假”
如: 设 a=3, b=2, c=1 求下面关系表达式 的值:
c>b (a-b) = = 1 b+c<a
值为0 值为1 值为0
如果关系运算对象的类型不同,也要先进行类型转换。
3.7.2逻辑运算符和逻辑表达式
3.7.2.1 逻辑运算符
3种逻辑运算符: ① ! (逻辑非) ②&& (逻辑与) ③ || (逻辑或)
(高) 优先级 (低)
如: !a a||b a&&b
a为真,则!a为假。 a、b之一为真,则a||b为真。 a、b 同时为真,则 a&&b 为真。
与其它运算符优先级的比较:
! 算术运算符 关系运算符 && 和 || 赋值运算符
(高) 例如:c=d>a+b&&a>b
等效于: c=((d>(a+b))&&(a>b))
例3.1 输入三角形的三条边,求三角形的面积。
分析:已知∶三角形的三条边 a,b,c。 求解∶三角形的面积area。 计算公式∶ 设 s=(a+b+c)/2 area= s* (s a )* (s b )* (s c )
开始 给a,b,c赋值
#include <math.h> main() {
计算s=(a+b+c)/2
(低)
3.7.3 逻辑表达式
1. 什么是逻辑表达式?
用逻辑运算符将逻辑运算对象连结起来的式子。
如:(a>b)&&(b<c) 、!a||a>b
2. 逻辑表达式的值
运算对象∶以数值非0为真、0为假
运算结果∶逻辑值(只有假为0、真为1两种取值)
如: 5>3 && 2 || 8<4 值为 1
‘b’&&’d’
S2:2 i ( i 作为除数)
S3: n 被 i 除,得余数 r S4: 如果 r 等于 0 , 表示 n 能 被 i 整除,则打印 n “不是素 数”,算法结束;否则执行S5
S5:i+1 i
S6: 如果 i n-1, 返回S3;否则,打印 n “是素数”,算法结束。
算法举例2:求 1-1/2 + 1/3 –1/4 +…+ 1/99 –1/100。 S1: 1 sign S2: 1 sum S3: 2 deno S4: (-1)*sign sign S5: sign*(1/deno) term S6: sum+term sum S7: deno+1 deno S8: 若deno 100 返回S4;否则算法结束。
{ s= -s; t=s/d; sum=sum+t; d=d+1;
} printf(“%f”,sum); }
S8: 若d 100 返回S4;否则算法结束。
3.4 小结
(1)算法是程序的灵魂,计算机程序设计的实质是算法的设计 。 (2)C语言算法的特点是: ① 有穷性 ② 确定性 ③ 有0个或多个输入 ④ 有一个或多个输出 ⑤ 有效性 (3) 算法的表示 ① 用自然语言表示 ② 用流程图表示算法,三种最基本的程序设计算法
如:x+4*y; 算术表达式语句 4*7,4+8; 逗号表达式语句 x=4*7; 赋值表达式语句(赋值语句)
4. 空语句
由一个 “ ; ”构成。 即: ;
作用:①程序转向点; ② 什么也不做的循环体。 while(i<=11);
5. 复合语句
用 { } 括起的一组语句 。 如:if (x1>x2)
值为1
注意事项:
(1)代数式不等式0<x<5必须写成 (x>0)&&(x<5),而不能直接写成0<x<5。 (2)C语言允许直接对数或字符进行逻 辑运算。例如!5,结果为0。5&&‘c’, 结果为1。因为字符‘c’的ASCII为非0 值,非0值与非0值作与运算,结果为 真。
3.7.4 选择结构语句
起止框 输入/输出框 判断框
处理框 流程线 连接点
结构化程序设计的三种基本机构 一、顺序结构
N-S结构流程图
A
A
B
B
(b)
(a)
先执行A操作,再执行B操作,两者是顺序执行关系。
二、选择结构
真
假
P
A
B
P
真
假
A
B
(a)
(b)
当P条件为真时,执行A模块,否则执行B模块。
三、循环结构 1.当型循环结构
程序包括:
(1)对数据的描述
数据结构
(2)对数据处理的描述
算法
算法(algorithm)是对特定问题求解步骤 的一种描述。
可将程序总结为:
程序=算法+数据结构+程序设计方法+ 语言工具和环境
3.2 算法的特征
C语言算法的主要特点如下: 1.有穷性 一个算法应该包含有限的操作步骤,而不
能是无限的。 2.确定性 算法中的每一个步骤应当是确定的,而不
假
P
真
A
当P条件成立 时,反复执行 A,直到P为假
。
当当P为P为真真
A
(a)
(b)
2.直到型循环结构
A
假 P 真
A 直到P为真
(b) (a)
先执行A操作,再判断P是否为假,若P为假,再执 行A,直到P为真为止。
算法举例1:对一个大于2的正整数,判断它是不是一个素数。 方法:将 n (其中n >2) 作为被除数, 将2 到(n-1) 各个整数轮 流作为除数,如果都不能被整除,则n为素数。 算法表示如下: S1:输入n的值
/*输入一个三位数*/ /*将x的符号存入c4中*/ /*求三位数的绝对值*/ /*获得个位数字,加48后转换为对应的字符*/ /*获得x的前两位*/ /*获得十位数字,加48后转换为对应的字符*/ /*获得百位数字,加48后转换为对应的字符*/ %c ”,c4,c1,c2,c3);
运行情况: -345 -345
3.7.4.1 if 语句 1. 单分子选择
2. if (表达式) 语句
执行过程: 当表达式的值为“真”
(非零)时,执行语句, 否则,不执行语句。
如: if ( x > y ) z = x;
2. 双分子语句
if (表达式) 语句1 else 语句2
执行过程: 当表达式的值为“真”
35c语句介绍一c程序结构c程序源程序文件1源程序文件2源程序文件n??????预处理命令全局变量声明函数1函数n??????函数首部函数体局部变量声明执行语句二c语句概述c语句分类
第3章 基本算法
本章要点: ➢算法的特征 ➢算法的表示方法 ➢程序设计的基本算法 ➢掌握程序的基本结构
3.1 程序与算法
运行情况: a=1,b=3,c=2 x1=-1.000000 x2=-2.000000
例3.4 输入一个三位数,依次输出该数的符号和百号,十位,个 位数字 。
#include<stdi.h> #include<math.h> main() {
char c1,c2,c3,c4; int x; scanf(“%d”,&x); c4=(x>=0?’+’:’-’); x=abs(x); c3=x%10+48; x=x/10; c2=x%10+48; c1=x/10+48; printf(“%c %c %c }
输出c2 结束
#include <stdio.h>
main()
{
char c1,c2;
c1=getchar(); /*键盘输入一个大写字母*/
printf(“%c,%d\n”,c1,c1);
c2=c1+32;
printf(“%c,%d\n”,c2,c2);
}
输入:A
输出:A,65
a,97
例3.3 求ax2+bx+c=0的根,a,b,c由键盘输入,设 b2-4ac>0
结束
printf(“area=%f”,area); }
例3.2 从键盘输入一个大写字母,要求改用小写字母输出。
分析:已知∶字符变量c1为大写字母。 求解∶将字符变量c2中放入相应的小写字母。 计算公式∶c2=c1+32 (小写改成大写字母?)
开始 输入一大写字母
放入c1中 输出c1 计算c2=c1+32
为:顺序结构,选择结构和循环结构。
3.5 C语句介绍
一、C程序结构
C程序
源程序文件1
源程序文件2 • • • • • • 源程序文件n
预处理命令 全局变量声明 函数1 • • • • • •
函数n
函数首部 函数体
局部变量声明 执行语句
二、C语句概述
C语句分类: 1.控制语句 2.函数调用语句 3.赋值语句 4.空语句 5.复合语句
3.7 选择结构
本节要点 ➢关系运算符与关系表达式 ➢逻辑运算符与逻辑表达式 ➢条件运算符与条件表达式 ➢if语句 ➢switch语句 本章难点 ➢if语句的嵌套 ➢switch语句的使用
3.7.1 关系运算符和关系表达式
3.7.1.1 关系运算符
6 种关系运算符: ①< (小于) ②<= (小于或等于) ③> (大于) ④>= (大于或等于) ⑤== (等于) ⑥!= (不等于)
#include <math.h> main() {
float a,b,c,disc,x1,x2,p,q; scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(”x1=%f x2=%f",x1,x2); }
并得到确定的结果。
3.3 算法的表示方法
(1) 自然语言描述法 (2) 传统的流程图表示 常用符号有: (3) N-S流程图表示 (4) 伪代码表示算法 (5) 计算机语言表示算法
float a,b,c,s,area; scanf(“%f%f%f”,&a,&b,&c);
计算area=s*(sa)*(sb)*(sc) s=(a+b+c)/2.0;
结果输出
area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“a=%f b=%f c=%f s=%f”,a,b,c,s);
一条完整的C语句必须以“;”结束。 “;”是 一个语句不可缺少的一部分。
1. 控制语句:完成一定的控制功能。
C 有9种控制语句:
⑴if( ) ~ else ~
(条件语句)
⑵ for( ) ~
(循环语句)
⑶ while( ) ~
(循环语句)
⑷ do ~ while( ) (循环语句)
⑸ continue
结合性:自左向右
关系运算符的优先次序
与其它运算符优先级的比较:
算术运算符 (高) 关系运算符 赋值运算符 (低)
例如: c=d>a+b 等效于:c=(d>(a+b))
3.7.1.2 关系表达式
1. 什么是关系表达式?
如:(a>b)>(b<c) 、‘a’<‘b’ 、x>y 、s+f>d
2. 关系表达式的值
{ y=x1*x1+x2 ; printf("y=%d",y) ; } 不能加“;” 不能省略
说明:
(1)复合语句中的每一个语句还可以是复合语句;
(2)复合语句尽管可由多个语句组合,但它只相当于一 个语句,在任何单一语句可以存在的地方,复合语句都可 以存在。
(3)在复合语句内,不仅可以有执行语句,还可以有定 义部分,定义部分应该出现在可执行语句的前面。
算法举例4: 用计算机语言表示算法 求 1-1/2 + 1/3 –1/4 +…+ 1/99 –1/100。
S1: 1 s S2: 1 sum S3: 2 d S4: (-1)*s s S5: s*(1/d) t S6: sum+t sum S7: d+1 d
main() { int s=1; float d=2.0 , sum=1.0, t; while (d<=100)
3.6 顺序结构程序设计
(顺序结构)
(选择结构)
(循环结构)
特点:程序按语句从上到下的排列顺序依此执 行,每条语句必须执行且只能执行一次, 没有执行不到或执行多次的语句。
例如:已知圆柱体半径6米,高7米,求体积。
#define PI 3.1415 main( ) {
float r , h , s , v ; r=6 ; h=7 ; s=PI*r*r ; v=s*h ; printf(“V=%f\n”, v); }
(结束本次循环语句)
⑹ break (中止执行switch或循环语句)
⑺ switch
(多分支选择语句)
ห้องสมุดไป่ตู้⑻ goto
(转向语句)
⑼ return
(从函数返回语句)
2. 函数调用语句
由一次函数调用加一个“ ; ”构成。 如:printf(“Hello World!”) ;
函数调用
分号
3. 赋值语句
由表达式加上“ ; ”构成。
算法举例3 : 用伪代码表示算法:用介于自然语言和计算 机语言之间的文字和符号来描述算法
BEGIN 1 =>i while(i 50) { input ni和gi i+1=>i } 1 =>i while(i 50) { if (gi >=80) print ni和gi i+1=>i }
END
运算结果∶逻辑值 1——“真” ,0—— “假”
如: 设 a=3, b=2, c=1 求下面关系表达式 的值:
c>b (a-b) = = 1 b+c<a
值为0 值为1 值为0
如果关系运算对象的类型不同,也要先进行类型转换。
3.7.2逻辑运算符和逻辑表达式
3.7.2.1 逻辑运算符
3种逻辑运算符: ① ! (逻辑非) ②&& (逻辑与) ③ || (逻辑或)
(高) 优先级 (低)
如: !a a||b a&&b
a为真,则!a为假。 a、b之一为真,则a||b为真。 a、b 同时为真,则 a&&b 为真。
与其它运算符优先级的比较:
! 算术运算符 关系运算符 && 和 || 赋值运算符
(高) 例如:c=d>a+b&&a>b
等效于: c=((d>(a+b))&&(a>b))
例3.1 输入三角形的三条边,求三角形的面积。
分析:已知∶三角形的三条边 a,b,c。 求解∶三角形的面积area。 计算公式∶ 设 s=(a+b+c)/2 area= s* (s a )* (s b )* (s c )
开始 给a,b,c赋值
#include <math.h> main() {
计算s=(a+b+c)/2
(低)
3.7.3 逻辑表达式
1. 什么是逻辑表达式?
用逻辑运算符将逻辑运算对象连结起来的式子。
如:(a>b)&&(b<c) 、!a||a>b
2. 逻辑表达式的值
运算对象∶以数值非0为真、0为假
运算结果∶逻辑值(只有假为0、真为1两种取值)
如: 5>3 && 2 || 8<4 值为 1
‘b’&&’d’
S2:2 i ( i 作为除数)
S3: n 被 i 除,得余数 r S4: 如果 r 等于 0 , 表示 n 能 被 i 整除,则打印 n “不是素 数”,算法结束;否则执行S5
S5:i+1 i
S6: 如果 i n-1, 返回S3;否则,打印 n “是素数”,算法结束。
算法举例2:求 1-1/2 + 1/3 –1/4 +…+ 1/99 –1/100。 S1: 1 sign S2: 1 sum S3: 2 deno S4: (-1)*sign sign S5: sign*(1/deno) term S6: sum+term sum S7: deno+1 deno S8: 若deno 100 返回S4;否则算法结束。
{ s= -s; t=s/d; sum=sum+t; d=d+1;
} printf(“%f”,sum); }
S8: 若d 100 返回S4;否则算法结束。
3.4 小结
(1)算法是程序的灵魂,计算机程序设计的实质是算法的设计 。 (2)C语言算法的特点是: ① 有穷性 ② 确定性 ③ 有0个或多个输入 ④ 有一个或多个输出 ⑤ 有效性 (3) 算法的表示 ① 用自然语言表示 ② 用流程图表示算法,三种最基本的程序设计算法
如:x+4*y; 算术表达式语句 4*7,4+8; 逗号表达式语句 x=4*7; 赋值表达式语句(赋值语句)
4. 空语句
由一个 “ ; ”构成。 即: ;
作用:①程序转向点; ② 什么也不做的循环体。 while(i<=11);
5. 复合语句
用 { } 括起的一组语句 。 如:if (x1>x2)
值为1
注意事项:
(1)代数式不等式0<x<5必须写成 (x>0)&&(x<5),而不能直接写成0<x<5。 (2)C语言允许直接对数或字符进行逻 辑运算。例如!5,结果为0。5&&‘c’, 结果为1。因为字符‘c’的ASCII为非0 值,非0值与非0值作与运算,结果为 真。
3.7.4 选择结构语句
起止框 输入/输出框 判断框
处理框 流程线 连接点
结构化程序设计的三种基本机构 一、顺序结构
N-S结构流程图
A
A
B
B
(b)
(a)
先执行A操作,再执行B操作,两者是顺序执行关系。
二、选择结构
真
假
P
A
B
P
真
假
A
B
(a)
(b)
当P条件为真时,执行A模块,否则执行B模块。
三、循环结构 1.当型循环结构
程序包括:
(1)对数据的描述
数据结构
(2)对数据处理的描述
算法
算法(algorithm)是对特定问题求解步骤 的一种描述。
可将程序总结为:
程序=算法+数据结构+程序设计方法+ 语言工具和环境
3.2 算法的特征
C语言算法的主要特点如下: 1.有穷性 一个算法应该包含有限的操作步骤,而不
能是无限的。 2.确定性 算法中的每一个步骤应当是确定的,而不
假
P
真
A
当P条件成立 时,反复执行 A,直到P为假
。
当当P为P为真真
A
(a)
(b)
2.直到型循环结构
A
假 P 真
A 直到P为真
(b) (a)
先执行A操作,再判断P是否为假,若P为假,再执 行A,直到P为真为止。
算法举例1:对一个大于2的正整数,判断它是不是一个素数。 方法:将 n (其中n >2) 作为被除数, 将2 到(n-1) 各个整数轮 流作为除数,如果都不能被整除,则n为素数。 算法表示如下: S1:输入n的值
/*输入一个三位数*/ /*将x的符号存入c4中*/ /*求三位数的绝对值*/ /*获得个位数字,加48后转换为对应的字符*/ /*获得x的前两位*/ /*获得十位数字,加48后转换为对应的字符*/ /*获得百位数字,加48后转换为对应的字符*/ %c ”,c4,c1,c2,c3);
运行情况: -345 -345
3.7.4.1 if 语句 1. 单分子选择
2. if (表达式) 语句
执行过程: 当表达式的值为“真”
(非零)时,执行语句, 否则,不执行语句。
如: if ( x > y ) z = x;
2. 双分子语句
if (表达式) 语句1 else 语句2
执行过程: 当表达式的值为“真”
35c语句介绍一c程序结构c程序源程序文件1源程序文件2源程序文件n??????预处理命令全局变量声明函数1函数n??????函数首部函数体局部变量声明执行语句二c语句概述c语句分类
第3章 基本算法
本章要点: ➢算法的特征 ➢算法的表示方法 ➢程序设计的基本算法 ➢掌握程序的基本结构
3.1 程序与算法
运行情况: a=1,b=3,c=2 x1=-1.000000 x2=-2.000000
例3.4 输入一个三位数,依次输出该数的符号和百号,十位,个 位数字 。
#include<stdi.h> #include<math.h> main() {
char c1,c2,c3,c4; int x; scanf(“%d”,&x); c4=(x>=0?’+’:’-’); x=abs(x); c3=x%10+48; x=x/10; c2=x%10+48; c1=x/10+48; printf(“%c %c %c }
输出c2 结束
#include <stdio.h>
main()
{
char c1,c2;
c1=getchar(); /*键盘输入一个大写字母*/
printf(“%c,%d\n”,c1,c1);
c2=c1+32;
printf(“%c,%d\n”,c2,c2);
}
输入:A
输出:A,65
a,97
例3.3 求ax2+bx+c=0的根,a,b,c由键盘输入,设 b2-4ac>0
结束
printf(“area=%f”,area); }
例3.2 从键盘输入一个大写字母,要求改用小写字母输出。
分析:已知∶字符变量c1为大写字母。 求解∶将字符变量c2中放入相应的小写字母。 计算公式∶c2=c1+32 (小写改成大写字母?)
开始 输入一大写字母
放入c1中 输出c1 计算c2=c1+32
为:顺序结构,选择结构和循环结构。
3.5 C语句介绍
一、C程序结构
C程序
源程序文件1
源程序文件2 • • • • • • 源程序文件n
预处理命令 全局变量声明 函数1 • • • • • •
函数n
函数首部 函数体
局部变量声明 执行语句
二、C语句概述
C语句分类: 1.控制语句 2.函数调用语句 3.赋值语句 4.空语句 5.复合语句
3.7 选择结构
本节要点 ➢关系运算符与关系表达式 ➢逻辑运算符与逻辑表达式 ➢条件运算符与条件表达式 ➢if语句 ➢switch语句 本章难点 ➢if语句的嵌套 ➢switch语句的使用
3.7.1 关系运算符和关系表达式
3.7.1.1 关系运算符
6 种关系运算符: ①< (小于) ②<= (小于或等于) ③> (大于) ④>= (大于或等于) ⑤== (等于) ⑥!= (不等于)
#include <math.h> main() {
float a,b,c,disc,x1,x2,p,q; scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(”x1=%f x2=%f",x1,x2); }