版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.,1,C语言程序设计,.,2,教 学内 容,第一章C语言概述 第二章算法 第三章数据类型、运算符与表达式 第四章最简单的C程序设计 第五章选择结构程序设计 第六章循环控制 第七章数组 第八章函数 第九章预处理命令 第十章指针 第十一章 结构体 第十三章 文件,.,3,前 言,前 言,一、计算机语言,1、机器语言 2、汇编语言 3、高级语言,4、高级语言向机器语言的过渡,机器指令的集合,符号化的机器语言,通用自然的算法语言,.,4,前 言,二、程序与程序设计,完成某一功能的计算机 指令的有序集合,1、程序,2、程序设计,设计、编制、调试程序 的过程,.,5,3、程序设计的基本步骤,(1) 分析
2、问题,(2) 确定解题思路和算法,(3) 编制流程图,(4) 编写源程序,(5) 静态检查,(6) 上机调试,(7) 正式运行,前 言,.,6,本章内容 1.1 C语言发展史 1.2 C语言特点 1.3 简单C程序分析,第一章 C语言概述,返回,.,7,第一章 C语言概述,第一章 C语言概述,1.1 C语言发展史,1960 ALGOL60 (Algorithmic Language),1987 87 ANSI C 1990 ISO C,1972 C (取BCPL第二个字母),1970 B (取BCPL第一个字母),1978 标准C 1983 ANSI C,1967 BCPL (Basic Co
3、mbined,Programming Language),跳转,.,8,第一章 C语言概述,1.2 C语言特点,1、简练、自由、结构化 (32个关键字、9种控制语句),2、运算符丰富(附录)34种,3、数据结构丰富,4、可直接对硬件进行操作,5、目标程序质量高,6、可移植性好,.,9,第一章 C语言概述,1.3 简单C程序分析,例1.1 打印(显示)一串字符。,运行结果: This is an example.,/* example1.1 */ main( ) printf(“This is an example. n”); ,.,10,第一章 C语言概述,例1.2 已知角度值45, 求正弦值
4、的2倍。,/*example 1.2*/ #include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); ,运行结果: Y=1.413650,.,11,第一章 C语言概述,例1.3 已知三角形三边 a, b, c, 求面积。,/*example 1.3*/ #include “math.h” main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, ,输入: 4,5,6 ,输出: P=7.500000 S=9.921567,.,12,第一章 C语
5、言概述,max( int x , int y ) main( ) /*max number*/ int z ; int a , b , c ; if(xy) z=x ; scanf(“%d,%d”, ,例1.4 已知整数 a, b, 求其中的最大数。,.,13,第一章 C语言概述,C程序结构,1、C程序由函数构成,C程序=,一个主函数(main函数) 一个主函数+若干其他函数(子或库),Turbo C有300多个,跳转,3、语句书写自由,后带分号“;”,4、可用 /*/ 对C程序作注释,前一页,.,14,本章内容 2.1 算法的概念 2.4 算法的表示 2.5 结构化程序设计,第二章 算法,返
6、回,.,15,第二章 算法,第二章 算法,程序 = 数据结构 + 算法,程序=数据结构+算法+程序设计方法+语言工具和环境,数据结构:对数据的描述,算法:对操作的描述,#include “math.h” main( ) float x, y; x=45; y=2*sin(x*3.14/180); printf(“Y=%f n”, y); ,.,16,例如: 1+2+3+100=5050 或 100+1+99+2+98+49+51+50= 100+49*100+50=5050,第二章 算法,2.1 算法的概念,算法:为解决一个问题而采取的方法和步骤。,.,17,第二章 算法,2.4 算法的表示(
7、用流程图表示算法),起止框,处理框,判断框,输入/出框,流程线,连接点,注释框,.,18,第二章 算法,例2.1 计算265的平方根,顺序结构,NS图,.,19,第二章 算法,例2.2 打印X的绝对值,分支结构,NS图,X=0,y n,打印x 打印 -x,.,20,第二章 算法,例2.3 计算1到100的和,循环结构,i=100,n,NS图,i=1,s=0,s=s+i,i=i+1,打印s,y,i=1,s=0,s=s+i,i=i+1,打印s,当i=100,.,21,(1)自顶向下 (2)逐步细化 (3)模块化设计 (4)结构化编码,第二章 算法,2.5 结构化程序设计方法(了解内容),结构化程序
8、便于编写、阅读、修改和维护。可以减少程序出错的机会,提高程序的可靠性,保证程序的质量。 结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。,.,22,本章内容 3.1 C的数据类型 3.2 常量与变量 3.3 整型数据 3.4 实型数据 3.5 字符型数据 3.6 变量赋初值 3.8 算术运算符与算术表达式 3.9 赋值运算符和赋值表达式 3.10 逗号运算符和逗号表达式,第三章 数据类型、运算符与表达式,返回,.,23,第三章 数据类型、运算符与表达式,空类型 void(无return的函数),C数据类型,基本类型,构造
9、类型,指针类型,整型 实型 字符型 枚举型,数组型 结构体型 共用体型,单精度 双精度,第三章 数据类型、运算符与表达式,3.1 C的数据类型,.,24,第三章 数据类型、运算符与表达式,3.2 常量与变量,一、常量,1、整型常量 0和正负整数,4、字符串常量“”括起来的字符串,5、符号常量 #define 符号名 常量,2、实型常量,3、字符型常量,跳转,.,25,第三章 数据类型、运算符与表达式,#define PI 3.1415926,例3.2 定义一个符号常量 PI,其值为,.,26,第三章 数据类型、运算符与表达式,二、变量,1、变量名以标识符命名,由字母、数字或下划线组成 首字符为
10、字母或下划线 用来标识变量、符号常量、数组、函数、文件等,标识符,例:sum good123 student_name,.,27,第三章 数据类型、运算符与表达式,2、变量的定义,用变量定义语句定义变量及其类型,(1) 变量定义语句的格式,类型关键字 变量名或赋值表达式表;,实型,字符型,(2) 类型关键字,整型,基本型 int 短整型 short 长整型 long 无符号型 unsigned,单精度型 float 双精度型 double,char,.,28,第三章 数据类型、运算符与表达式,(3) 说明, 必须在程序执行部分之前对程序 中的所有变量进行定义, C语言中整型和字符型数据通用,可
11、在定义变量的同时给其赋初值,例: int a=3, b=4, c=5 ; float x, y, z=0.5; char w=a;,变量名不能用关键字, 变量区分大小写,.,29,第三章 数据类型、运算符与表达式,(4) 举例3.3,#define PI 3.1415926 #include “ math.h” main() float x , y ; x=67 ; y=2*sin(x*PI/180) ; printf(“y=%f” , y ) ; ,返回,.,30,第三章 数据类型、运算符与表达式,1、常量: 十进制 567 ,-789 ,0 八进制 0567, -0753 十六进制 0 x
12、567 , -0 xa1 2、变量: int i , j ; i=10 ; j= -10 ;,3.3 整型数据,.,31,第三章 数据类型、运算符与表达式,3、整型变量数的表示范围:(-3276832767) 4、整型变量的分类:,有符号基本整型 signed int 无符号基本整型 unsigned int 有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int 无符号长整型 unsigned long int,.,32,第三章 数据类型、运算符与表达式,a,0 1 1 1 1 1 1 1 1 1 1
13、1 1 1 1 1,b,5、无符号和有符号数的比较: int a ; (-3276832767) unsigned int b ; (065535),符号位,数据位,32767,65535,21521421321221121029282726252423222120,32768、16384、8192、4096、2048、1024 ,.,33,第三章 数据类型、运算符与表达式,举例3.4 main() int a , b , c , d ; unsigned int u ; a=12 ; b= -24 ; u=10 ; c=a+u ; d=b+u ; printf(“a+u=%d , b+u=%
14、dn” , c , d ) ; 运行结果: a+u=22 , b+u= -14,.,34,第三章 数据类型、运算符与表达式,a,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,6、整型数据的溢出:,符号位,32767,a+1,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,符号位,-32768,.,35,第三章 数据类型、运算符与表达式,举例3.5 main() int a , b ; a=32767 ; b=a+1 ; printf(“a=%d , b=%dn” , a , b ) ; 运行结果: a=32767 , b= -32768,.,36,第三章 数据
15、类型、运算符与表达式,7、整型常量的类型 使用整型常量时应注意以下几点: 在(-3276832767)范围内的整数赋给int型或long型变量 如: int a ; long b ; a=0 xb4 ; b=12 ; 在(-21474836482147483647)范围内的整数赋给long型变量 如: long b ; b=50000 ; 如果机器中短整型和基本整型所占字节数相同,则同等对待 如: int a ; short b ; a=0576 ; b=a ; 常量无unsigned型,赋值时注意溢出问题 一个整型常量后面加一个 l 或 L则认为是long 型常量(虚实对应) 如: int
16、a ; long b ; a=1234 ; b=12L ;,.,37,第三章 数据类型、运算符与表达式,1、常量:小数形式 .567 ,-789. ,0.0 , 5.0 指数形式 123e4 , -753E-5 (输出时规范化 1.23000e+06) 2、变量:float x ; double y ; long double z ; x=3.14159 ; y=7.86e12,3.4 实型数据(浮点数),.,38,第三章 数据类型、运算符与表达式,main( ) float a , b ; a=123456.789e5 ; b= a+20 ; printf(“a=%f , b=%fn” ,
17、a , b ) ; 运行结果: a=12345678848.000000 , b= 12345678848.000000,3、实型数据的舍入误差 举例3.6,.,39,第三章 数据类型、运算符与表达式,4、实型常量的类型 许多编译系统均将实型常量按照双精度数处理,结果存入单精度变量,降低了运算速度,可以在实型常量的后边加一个 f 或 F 以表示单精度数。 如:float f ; f=2.45678 f * 4523.65 f ; 5、单精度变量有6 7位有效数字(10-37 1038) 双精度变量有15 16位有效数字(10-307 10308),.,40,第三章 数据类型、运算符与表达式,1
18、、常量: (a) a、 x、 ?、 $ (b) n 、 t 、 (c) 101、 x41 (d) 0 或000 ASCII值为0的空操作字符 2、变量: char c1 , c2 ; c1=a ; c2=b ; 3、内存中的存储形式,c1 97 0110 0001,c2 98 0110 0010,八进制,十六进制,3.5 字符型数据,A,.,41,第三章 数据类型、运算符与表达式,4、字符型数据的使用 举例3.7 main() char c1 , c2 ; c1=97 ; c2=98 ; printf(“c1=%c , c2=%cn” , c1,c2 ) ; printf(“c1=%d , c
19、2=%dn” , c1,c2 ) ; 运行结果: c1=a , c2= b c1=97,c2=98,.,42,第三章 数据类型、运算符与表达式,举例3.8 main() char c1 , c2 ; c1=a ; c2=b ; c1=c1-32 ; c2=c2-32; printf(“c1=%c , c2=%cn” , c1,c2 ) ; printf(“c1=%d , c2=%dn” , c1,c2 ) ; 运行结果: c1=A , c2=B c1=65, c2=66,.,43,第三章 数据类型、运算符与表达式,举例3.9 main() int i ; char c ; i=a ; c=97
20、 ; printf(“c=%c , c=%dn” , c , c ) ; printf(“i=%c , i=%dn” , i , i ) ; 运行结果: c=a , c=97 i=a , i=97,.,44,第三章 数据类型、运算符与表达式,5、字符串常量 “How do you do.”、“CHINA”、“a”、“$123.45” 注意:(1)没有字符串变量(可用字符数组存储) (2)字符串常量在内存中的存储形式,(3)在输出语句中的应用 printf(“How do you do.”) ; printf(“c=%c , c=%dn” , c , c ) ;,.,45,第三章 数据类型、运算
21、符与表达式,int a=3 ; float f=3.14 ; char c=a ; int a ,b=3 ,c ; int a=3 ,b=3 ,c=3 ; 注意:变量的初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋予初始值的。,3.6 变量赋初值,.,46,第三章 数据类型、运算符与表达式,3.8 算术运算符与算术表达式,一、C运算符简介(13类),算术运算符 + - * / % + - - 关系运算符 = = != 逻辑运算符 ! float x ; x=3.6 ; i=(int)x ; printf(“x=%f , i=%dn” , x , i ) ; 运行结果: x=3.60
22、0000 , i=3,.,51,第三章 数据类型、运算符与表达式,四、自增、自减运算,1、运算规则,+i -i 使用前使i值加(减) 1 i+ i- 使用后使i值加(减) 1,2、注意,(1) 只能用于变量,(2) 右结合方向,(3) 使用时谨防出错,.,52,第三章 数据类型、运算符与表达式,3、例,.,53,第三章 数据类型、运算符与表达式,3.9 赋值运算符和赋值表达式,一、赋值运算符及其操作,= 将一个表达式的值赋给一个变量,二、赋值表达式, ,说明:(1) 发生类型转换(自学60-61页) (2) 右结合,例:x= -b/(2*a) a=b=c=5 a= (b=4)+(c=6) 那么
23、a=5=b=c?,.,54,第三章 数据类型、运算符与表达式,三、复合赋值运算,复合赋值运算符=运算符+赋值号,.,55,第三章 数据类型、运算符与表达式,3.10 逗号运算符和逗号表达式,1、逗号表达式,表达式1,表达式2,表达式n,2、运算规则,从左到右依次计算各表达式的值,以 表达式n的值作为最终值(其优先级最低),.,56,第三章 数据类型、运算符与表达式,举例3.11 main() int i ; float f=7.2 ; printf(“i=%d n” ,(f+=4 , i=f) ; printf(“f=%f n” , f ) ; 运行结果: i=11 f=11.200000,.
24、,57,本章内容 4.1 C语句概述 4.2 赋值语句 4.3 I/O的概念及在C语言中的实现 4.4 字符数据的输入/输出 4.5 格式输入与输出,第四章 最简单的C程序设计,返回,.,58,第四章 最简单的C程序设计,4.1 C语句概述,第四章 最简单的C程序设计,C语句,控制语句(条件、分支、循环) 函数调用语句(函数加分号) 表达式语句(表达式加分号) 空语句(一个单独的分号) 复合语句(用 将若干语句括起),.,59,第四章 最简单的C程序设计,4.2 赋值语句,语句格式:赋值表达式;,例如:if ( ( a=b ) 0 ) t=a ; if ( ( a=b ) ) x=a; if
25、(a=b ) y=a; 在 if 后面的小括号内必须是表达式,.,60,C 程序最基本的成分是语句 目前我们已掌握的语句: 变量说明语句: int a,b,c; 表达式语句: x+y; 特别地: a=5; 赋值语句,.,61,可以编写简单程序如: main() int x,y; x=5; y=2*x*x+3*x-1; 该程序语法上完整,但还缺少输出。,.,62,数据的输出 用输出函数实现,其中的两种输出函数: 1.putchar 函数 (字符输出函数) 用于输出一个字符。 如: putchar (a); putchar (100); char c=b; putchar (c);,.,63,例:
26、输出单词Boy的完整程序: #include “stdio.h” 注意该语句的作用 main() char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); ,.,64,2. printf函数(格式输出函数) 任意类型、任意格式、任意个数。 例如: int a=100,b=56; printf(“a=%d,b=%d”,a,b); 普通字符 格式说明 格式控制 输出表列 输出结果:a=100,b=56 “%” 后的字符称格式字符,不同格式字符对应不同的数据类型。,.,65,d格式符:按整数格式输出 几种用法: %d 不指
27、定宽度,按实际宽度输出 %md 按指定宽度输出,m为宽度 %ld 用于输出长整型数,.,66,例: int a=125,b=453; long c=65535; printf(“a=%d,b=%5d,c=%ld”,a,b,c); 输出结果: a=125,b= 453,c=65535,.,67,c格式符:用于输出字符 char c=A; printf(“c=%c,%c”,c,B); 输出结果:c=A,B 输出对象既可以是字符变量、字符常量,还可以是整型表达式。,.,68,如: int a=100; char b=A; printf(“n%d,%c”,a,a); printf(“n%c,%d”,b
28、,b); 输出结果: 100,d A,65,.,69,完整前面的程序:,main() int x,y; x=5; y=2*x*x+3*x-1; printf(“n y=%d”,y); ,.,70,例4.1 已知三角形三边 a, b, c, 求面积,#include “math.h” main( ) float a, b, c, p, s; scanf(“%f, %f, %f ”, ,第四章 最简单的C程序设计,.,71,第四章 最简单的C程序设计,例4.2 已知整型变量x,y的值分别是3和5, 试将它们的值互换。,int x=3, y=5, z; z=x; x=y; y=z;,y,3,5,x,
29、.,72,第四章 最简单的C程序设计,4.3字符数据的输入/输出,2、语句功能:从指定设备,读一个字符 输出c的值(字符),1、语句格式,输入:getchar( ); 输出:putchar(c);,字符变量,.,73,第四章 最简单的C程序设计,例4.3 输入一个字符并把它输出出来,#include “stdio.h” main( ) char c; c=getchar( ); putchar(c); ,.,74,第四章 最简单的C程序设计,1、语句格式,输入 scanf(格式控制,地址表列); 输出 printf(格式控制,输出表列);,2、语句功能,按格式控制描述的格式给地址表列中的量 输
30、入值或输出输出表列中各量的值,3、格式控制,“”括起来的一串格式字符和其它字符,4.4 格式输入与输出,.,75,第四章 最简单的C程序设计,4、格式字符,指定输出宽度在格式符中插入:m.n 例: %10d %10.4f %12.5e,.,76,本章内容 5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 if 语句 5.4 switch 语句 4.5 格式输入与输出,第五章 选择结构程序设计,返回,.,77,第五章 逻辑运算和判断选取控制,第五章 选择结构程序设计,5.1 关系运算符和关系表达式,算术运算 关系运算 赋值运算,高,低,.,78,第五章 逻辑运算和判断选取控
31、制,二、关系表达式,2、关系表达式的值,1 真 0 假,.,79,第五章 逻辑运算和判断选取控制,5.2 逻辑运算符和逻辑表达式,一、运算符与优先级,! 算术运算 关系运算 else x=0;,思考题: 上式去掉括号后 m=ab 否则,判断 e3 的值, 其值非0执行语句3;否则,. 判断em 的值,其值非0执行语句m ;否则,执行语句n,.,85,第五章 逻辑运算和判断选取控制,例5.1 从键盘输入两个整型数,输出最大数。,main() int a ,b ; scanf(“%d,%d”, ,.,86,第五章 逻辑运算和判断选取控制,例5.1 从键盘输入两个整型数,输出最大数。,main()
32、int a ,b ; scanf(“%d,%d”, ,.,87,第五章 逻辑运算和判断选取控制,例5.2 输入两个整型数,按大小输出。,main() int a ,b ,temp ; scanf(“%d,%d”, ,.,88,第五章 逻辑运算和判断选取控制,例5.3 输入互不相等的三个数,按从小到大 顺序输出它们。,分析:设已知的三个数为a, b, c。 (1)可直接通过逻辑表达式和条件语句 设计程序。 (2)可通过条件语句和互换变量值设计 程序,即经过处理后使: abc,.,89,第五章 逻辑运算和判断选取控制,方法(1):,main( ) float a, b, c; scanf(“%f
33、%f %f ”, ,.,90,第五章 逻辑运算和判断选取控制,方法(2):,main( ) float a, b, c, t; scanf(“%f %f %f ”, ,.,91,例5.4 求一元二次方程 ax2+bx+c=0 的解,第五章 逻辑运算和判断选取控制,.,92,第五章 逻辑运算和判断选取控制,#include main( ) float a, b, c, d, x1, x2; scanf(“%f %f %f ”, ,.,93,第五章 逻辑运算和判断选取控制,例5.5某运输公司吨公里基本运费为p,根 据距离s的远近计费标准如下: s250km没有折扣 250 s500 2% 折扣 5
34、00 s1000 5% 折扣 1000 s2000 8% 折扣 2000 s300010%折扣 3000 s 15%折扣 根据货物重量w和运距s,求运费f。,返回,.,94,第五章 逻辑运算和判断选取控制,main( ) float p,s,w,d,f; scanf(“%f %f %f ”, ,.,95,第五章 逻辑运算和判断选取控制,三、if 语句的嵌套,嵌套 if 的一般形式,if ( ) if ( ) 语句1 else 语句2 else if ( ) 语句3 else 语句4,内嵌 if,内嵌 if,注意:else 总是与它上面最近的 if 配对,.,96,第五章 逻辑运算和判断选取控制
35、,if ( ) if ( ) 语句1 else if ( ) 语句2 else 语句3,内嵌 if,if ( ) if ( ) 语句1 else if ( ) 语句2 else 语句3,内嵌 if,if ( ) if ( ) 语句1 else 语句2,if ( ) if ( ) 语句1 else 语句2,.,97,第五章 逻辑运算和判断选取控制,分析:a=0 不是二次方程。 b2-4ac=0 有两个相等实根。 b2-4ac0 有两不等实根。 b2-4ac0 有两共轭复根。,#include “math.h” main( ) float a,b,c,d,x,x1,x2,xr,xi; scanf(
36、“%f %f %f ”,编程:,例5.6 求一元二次方程 ax2+bx+c=0 的解,.,98,第五章 逻辑运算和判断选取控制,求x1、x2,x,求xr、xi,x1、x2,xr、xi,NO!,d=0,d0,求x,y,y,n,n,y,n,a=0,开 始,a,b,c,end,.,99,第五章 逻辑运算和判断选取控制,if ( fabs(a)0 ) x1=(-b+sqrt(d)/(2*a); x2=(-b -sqrt(d)/(2*a); printf(“Two real roots:%f,%f ”,x1,x2); else xr= -b/(2*a); xi=sqrt(-d)/(2*a); print
37、f(“Complex roots:%f,%f ”, xr,xi); ,.,100,第五章 逻辑运算和判断选取控制,四、条件运算符与条件表达式,3、优先级,算术 关系 逻辑运算(!除外) 条件运算 赋值运算,高,低,右结合,.,101,第五章 逻辑运算和判断选取控制,(1)输出x和y当中的最大值 z=xy ? x : y ; printf(“max=%d”,z); 或 printf(“max=%d”,xy?x:y); 或 xy?printf (“%d”,x) : printf (“%d”,y);,举例:,(2)ab?a:b+1等价于ab?a:(b+1)而不是(ab?a:b)+1 (3)ab?a:
38、cd?c:d等价于ab?a:(cd?c:d) (4)xy?1:5.6 表达式的值的类型取高的 (5)ch=(ch=A,.,102,第五章 逻辑运算和判断选取控制,5.4 switch 语句,.,103,第五章 逻辑运算和判断选取控制,三、break 语句,使流程跳出switch结构, 终止switch语句的执行。,.,104,第五章 逻辑运算和判断选取控制,例5.7 用switch语句设计“例5.5运费程序”,跳转,s 1 d=0 1 s 2 d=0.2 2 s 4 d=0.05 4 s 8 d=0.08 8 s 12 d=0.1 12 s d=0.15,.,105,第五章 逻辑运算和判断选取
39、控制,main( ) float p, w, s, d,f; int c; scanf(“%f”, case 4 :,case 5 : case 6 : case 7 : d=0.08; break; case 8 : case 9 : case 10: case 11: d=0.1; break; case 12: d=.15; break; f=p*w*s*(1-d); printf(“f=%15.2f ”, f); ,.,106,第五章作业,第111页 5.3 、 5.5、 5.7,上机调试作业,第111-112页 5.6、 5.7,第五章 逻辑运算和判断选取控制,.,107,第五章 逻
40、辑运算和判断选取控制,习题5.5 已知x,求分段函数值y,main() float x, y; scanf(“%f”, ,程序1:,.,108,第五章 逻辑运算和判断选取控制,main() float x, y; scanf(“%f”, ,程序2:,.,109,第五章 逻辑运算和判断选取控制,习题5.6,分析:设百分制成绩为x, 成绩等级为y,.,110,第五章 逻辑运算和判断选取控制,习题5.10,分析:设坐标为(x, y), 高度为h 设:a=(x-2) + (y-2) 1 b=(x+2) + (y-2) 1 c=(x+2) + (y+2) 1 d=(x-2) + (y+2) 1,2,2,
41、2,2,2,2,2,2,.,111,本章内容 6.1 概述 6.2 goto语句 6.3 while语句 6.4 do-while语句 6.5 for语句 6.6 循环的嵌套 6.7 几种循环的比较 6.8 break语句和continue语句,第六章 循环控制,返回,.,112,第六章 循环控制,第六章 循环控制,C 循环控制,if - goto循环(6.2) while循环(6.3) do - while循环(6.4) for循环(6.5),6.1 概述,.,113,第六章 循环控制,6.2 goto语句及其构成的循环,一、goto语句,.,114,第六章 循环控制,二、用法,1、与if语
42、句联合使用构成循环,2、用来实现从多重循环体内转出,L1: if(e) 循环体 goto L1; (当型循环),L2: 循环体 if(e) goto L2; (直到型循环),.,115,第六章 循环控制,例6.1 求 s=1+2+3+.+n 的值。,main( ) int i=1, sum=0, n; scanf(“%d”, ,main( ) int i=1, sum=0, n; scanf(“%d”, ,.,116,第六章 循环控制,6.3 while语句“当型”循环,一、语句格式,while(e)循环体,二、执行过程(先判断后执行),当表达式 e 值为非0时,执行循环体,然后重复执行whi
43、le语句;当e 的值为0 时,结束循环,执行后继语句。,单语句或复合语句,.,117,第六章 循环控制,例6.2 求 s=1+2+3+.+n 的值(用while循环n=100)。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s=0, n; scanf(“%d”, ,.,118,第六章 循环控制,6.4 do-while语句“直到型”循环,一、语句格式,do 循环体 while(e);,二、执行过程(先执行后判断),先执行do后的循环体,然后判断表达式e 的值,若为非0,重复执行循环体,直到while中的表达式e 为0,结束循环。
44、,单语句或复合语句,.,119,第六章 循环控制,例6.3 求 s=1+2+.+n 的值(用do-while循环n=100)。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s=0, n; scanf(“%d”, ,.,120,第六章 循环控制,6.5 for语句及其构成的循环,二、执行过程,1、计算表达式1。 2、判断表达式2。 若非0,执行循环体,转3; 否则,结束循环,转4。 3、计算表达式3。转2。 4、执行for语句的下一条语句。,.,121,第六章 循环控制,三、说明,例6.4 求 s=1+2+.+n 的值(用for循
45、环n=100)。,main( ) int i, s=0, n; scanf(“%d”, ,.,122,第六章 循环控制,2、for语句中的三个表达式均可省略 注意:(1) 分号不能省略。 (2) 应保证循环正确执行。,main( ) int i=1, s=0, n; scanf(“%d”, ,main( ) int i=1, s=0, n; scanf(“%d”, ,.,123,第六章 循环控制,例6.5 给一年级的小学生出10道100以内的加法练习题。,分析:1、出题 2、回答 3、判断对错,#include “stdlib.h” main( ) int i , x , y , z ; ra
46、ndomize(); for(i=1; i=10; i+) x=random(99); y=random(99); printf(“%d+%d=”, x , y ); scanf(“%d”, ,思考:1、做对几题 2、总成绩,#include “stdlib.h” main( ) int i ,x ,y ,z ; int count=0 ,score=0 ; randomize(); for(i=1; i=10; i+) x=random(99); y=random(99); printf(“%d+%d=”, x , y ); scanf(“%d”, ,.,124,第六章 循环控制,例6.6
47、求Fibonacci数列:1, 1, 2, 3, 5, 8, .的前30项。,分析:f1=f2=1, fn=fn-1+f n-2 (n=3) (注:一行打印3个数字),main( ) long i=1, j=1, k ; int n ; printf(“%8ld%8ld”, i , j) ; for(n=3; n=30; n+) k=i+j ; printf(“%8ld”, k) ; if(n%3= =0) printf(“n”) ; i=j ; j=k ; ,.,125,第六章 循环控制,例6.7 求分数序列:1/2,2/3,3/5,5/8,8/13, 13/21, .的前20项之和。,ma
48、in() int k ; float i=1 , j=2 , s=0; for(k=1 ; k=20 ; k+) s=s+i/j ; j=i+j ; i=j-i ; printf(“sum=%10.6fn ”, s); ,.,126,第六章 循环控制,1、循环的嵌套概念对各种循环结构是一样的, 即某一循环的循环体内包含另一循环结构。,2、各种循环结构可以互相嵌套。,for-while嵌套 for( ; ; ) . while( ) . .,6.6 循环的嵌套多重循环,.,127,第六章 循环控制,1、各种循环结构可以互相替代,但不提倡使用 用goto构成的循环。,2、在while和do-whi
49、le语句构成的循环体中必须 有使循环趋于结束的语句,如i+。,6.7 几种循环的比较,3、在while和do-while语句构成的循环中,循环 变量的初始化必须在循环之前完成。,4、在while、do-while和for语句构成的循环中, 可以用break和continue跳出或结束本次循环,.,128,第六章 循环控制,6.8 break语句和continue语句,一、break语句,1、用来跳出switch结构。,2、用来跳出当前循环。,循 环,break;,.,129,第六章 循环控制,例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一项的值
50、小于10-8为止。,#include “math.h” main() long i=1; double pi=0; while(i*i=1e8) pi=pi+1.0/(i*i); i+; pi=sqrt(6.0*pi); printf(“ pi=%10.6fn ”, pi);,6.9程序举例,.,130,第六章 循环控制,例6.8 利用公式 2/6=1-2 +2-2 +3-2 +4-2 +. 求的 近似值,直到最后一项的值小于10-8为止。,#include “math.h” main() long i ; double pi=0; for( i=1 ; i=1e8) break; pi=pi
51、+1.0/(i*i); pi=sqrt(6.0*pi); printf(“ pi=%10.6fn ”, pi) ; ,.,131,第六章 循环控制,例6. 9 打印100以内个位数为6,且能被3整除的数。,main() int i , j ; for(i=0;i=9;i+) j=i*10+6; if(j%3!=0) continue; printf(%d , j ); ,可以省略,.,132,第六章 循环控制,例6.10 写出下列程序的运行结果。,main() int i , j , a=0 ; for ( i=0 ; i2 ; i+ ) for ( j=0 ;j4 ;j+ ) if ( j%
52、2 ) break ; a+ ; a+; printf (%dn,a) ; ,.,133,第六章 循环控制,例6.11 打印99表。,1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56
53、8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81,.,134,第六章 循环控制,例6.11 打印99表。,main() int i , j ; for ( i=1 ; i=9 ; i+ ) for ( j=1 ; j=i ;j+ ) printf ( “%d*%d=%-3d”,j , i, i*j ) ; printf (n) ; ,.,135,第六章 循环控制,例6.12 百鸡百钱问题。 公鸡一只5元,母鸡一只3元,小鸡三只1元,用100元买一百只鸡,问公鸡、母鸡、小鸡各多少只?,设:公鸡x只、母鸡y只、
54、小鸡z只 列等式: x+y+z=100 15*x+9*y+z=300,.,136,第六章 循环控制,例6.12 百鸡百钱问题。,main() int x , y , z ; for ( x=1 ; x=20 ; x+ ) for ( y=1 ; y=33 ; y+ ) for ( z=1 ; z=100 ; z+ ) if(x+y+z=100 ,.,137,第六章 循环控制,例6.13 求e x的台劳级数展开式的前n项之和。 e x=1+x+ + + (-x),x2 2!,x3 3!,xn-1 (n-1)!,main() float x, s=1,t=1 , f=1 ; int i, n; s
55、canf(“%f,%d”, ,.,138,第六章 循环控制,例6.14 求素数问题(单个或多个)。,main() int i , m ; scanf(“%d”, ,.,139,第六章 循环控制,f(x),x1,f(x1),x2,f(x2),.,140,第六章 循环控制,例6.15 用牛顿迭代法求代数方程e x-x=0的实根。,#include“math.h” main() float f1 , f0 , x1=-2 , x0 ; do x0=x1; f0=exp(-x0)-x0; f1=-exp(-x0)-1; x1=x0-f0/f1; while(fabs(x1-x0)1e-6); prin
56、tf ( “%fn”,x1) ; ,.,141,第六章作业,上机调试作业,第129页 6.2,6.8, 6.14,第129页 6.2, 6.4 , 6.6, 6.8,第六章 循环控制,.,142,本章内容 7.1 一维数组 7.2 二维数组 7.3 字符数组,第七章 数组,返回,.,143,第七章 数组,第七章 数组,7.1 一维数组,.,144,第七章 数组,例: int a10; float b5; 定义一维整型数组 a和实型数组b a数组中的元素是:a0, a1, a2, a3, a4, a5, a6, a7, a8, a9; b数组中的元素是: b0, b1, b2, b3, b4,.
57、,145,第七章 数组,例7.1 求 s=a1+a2+a10,main( ) int i; float s=0, a10; for(i=0; i10; i+) scanf(“%f ”, ,.,146,第七章 数组,四、一维数组的初始化,1、在定义数组时,给数组元素赋初值,例: int a6=1,2,3,4,5,6;,3、未赋初值的数组,各元素值不确定。,4、数组的大小由初始化的数据个数决定 。 例: int a =1,2,3;,5、数组中全部元素初始化为0 。 例: int a6=0;,.,147,第七章 数组,例7.2 求Fibonacci数列的前30项。(一行三个),main( ) long f30=1,1; int i; for(i=2; i30; i+) fi=fi-1+fi-2; for(i=0; i30; i+) if(i%3=0) printf(“n”) ; printf(“%8ld”, fi) ; ,.,148,第七章 数组,例7.3 已知一组数(n个),找出其中最大者。,main( ) int i, n ; float a20,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 炼焦煤制备工岗前基础在岗考核试卷含答案
- 区块链应用操作员操作规程强化考核试卷含答案
- 三月三扫墓请假条
- 2025年半柔半刚射频同轴电缆项目合作计划书
- 2026年智能门窗光伏供电片项目可行性研究报告
- 2025年江苏省镇江市中考物理真题卷含答案解析
- 2025年四川省资阳市中考物理真题卷含答案解析
- 2025年临床核心制度培训考核试卷(含答案)
- 2025年地质勘探员安全生产知识定期考核题目及答案
- 选矿工技能巩固考核试卷及答案
- 地坪漆施工方案范本
- 2025宁波市甬北粮食收储有限公司公开招聘工作人员2人笔试参考题库及答案解析
- 2026年国有企业金华市轨道交通控股集团招聘备考题库有答案详解
- 2025年电子工程师年度工作总结
- 2026年吉林司法警官职业学院单招职业技能笔试备考题库带答案解析
- 2025年高职第三学年(工程造价)工程结算与审计测试题及答案
- 2024年曲阜师范大学马克思主义基本原理概论期末考试真题汇编
- 医院消毒技术培训课件
- 江苏省电影集团招聘笔试题库2026
- 《机械创新设计》课件-多功能播种机整体结构设计
- 增殖放流效果评估体系
评论
0/150
提交评论