




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 C语言概述本章主要内容:1.1 C语言简介1.2 C语言程序结构1.3 C语言程序的执行(重点)1.4 VC+运行C程序说明(重点)本章教学要求:了解C语言的基本特点 熟悉C程序的基本结构掌握使用VC+运行C语言程序的方法步1.1 C语言简介1.1.1 C语言的发展史C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言1983年由美国国家标准局(American National Standards Institute,简称ANSI)开始制定C语言标准,于1989年12月完成,并在1990年春天发布,称之为ANSI C,有时也被称为 C89 或 C90。第1章
2、C语言概述1.1 C语言简介1.1.1 C语言的特点1简洁紧凑、灵活方便2运算符丰富 3数据类型丰富4表达方式灵活实用 5允许直接访问物理地址,对硬件进行操作 6生成目标代码质量高,程序执行效率高 7可移植性好 第1章 C语言概述1.2 C语言程序结构我们通过一个简单的例子说明C语言程序的结构。【例1-1】#include int main( )/*主函数:求两数之和*/ int a,b,sum;/*定义三个变量a,b,sum*/ a=2;b=4;/*给a、b赋值*/ sum=a+b;/求和的结果赋给sum printf(%d +%d =%d,a,b,sum);/输出sum的值 return
3、0;第1章 C语言概述1.2 C语言程序结构C语言程序的结构:(1)C程序是由函数构成的,每一个函数完成相对独立的功能。一个程序可以由多个函数组成,但至少包含一个函数,即main函数,它称为主函数,程序总是从main函数开始执行,并在main函数中结束的。(2)C语言程序通常使用英文小写字母书写,只有符号常量或其他特殊用途的符号才使用大写。应该注意的是,C语言对大小写是区分的,它们代表着不同的字符。(3)C语言程序是由一条条语句组成的,每个语句都具有规定的语法格式和特定的功能。上面程序中,printf()是输出变量数值的函数调用语句;a=2是赋值语句。(4)C语句以分号(;)结束,分号是语句不
4、可缺少的组成部分。第1章 C语言概述1.2 C语言程序结构C语言程序的结构:(5)C语言程序中,一个语句可以占用多行,一行也可以有多个语句。(6)C语言程序中使用大括号“”和“”来表示程序的结构层次范围。一个完整的程序模块要用一对大括号括起来,以表示该程序模块的范围。应该注意的是,左大括号“”和右大括号“”应该成对使用。(7)为了增加程序的可读性,可以使用适量的空格和空行。但是,变量名、函数名和C语言保留字中间不能加入空格。除此之外的空格和空行可以任意设置,C语言编译系统是不会理会这些空格和空行的。(8)可以用*或 / 对C程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注
5、释,以增加程序的可读性。第1章 C语言概述1.3 C语言程序的执行1.3.1 C程序调试步骤1编辑编辑是建立或修改C源程序文件的过程,并以文件的形式存储在磁盘上,C源程序文件的扩展名为“.c”。 2编译与连接编译是通过编译器将源程序转换为机器代码,生成目标程序的过程。在C语言源程序的编译过程中,可以检查出程序中的语法错误。连接是把一个C语言应用程序与所用到的库函数以及其他目标程序连接为一个整体,生成可执行文件(*.exe)的过程。3运行生成的可执行文件,既可在编译系统环境下运行,也可以脱离编译系统直接执行。4其他操作修改系统路径;调试程序;打开源程序等。 第1章 C语言概述1.3 C语言程序的
6、执行1.3.1使用Visual C+调试C语言程序1. 启动Visual C+6.0开发环境第1章 C语言概述1.3 C语言程序的执行1.3.1使用Visual C+调试C语言程序2. 建立C语言源程序文件第1章 C语言概述1.3 C语言程序的执行1.3.1使用Visual C+调试C语言程序3.编辑C语言程序的内容第1章 C语言概述1.3 C语言程序的执行1.3.1使用Visual C+调试C语言程序4.建立并运行可执行程序(1)在“组建”菜单中单击“编译”,建立目标文件。(2)在“组建”菜单中单击“组建”,建立可执行程序。第1章 C语言概述1.3 C语言程序的执行1.3.1使用Visual
7、 C+调试C语言程序4.建立并运行可执行程序根据错误信息提示对源程序文件进行修改之后,再重新对源文件进行编译、构建,即可建立可执行文件。(3)在“组建”菜单中单击“执行”,运行程序,就会弹出一个窗口,显示程序的运行结果第1章 C语言概述1.3 C语言程序的执行1.3.1使用Visual C+调试C语言程序5. 关闭程序如果想在不关闭软件的情况下,编辑运行另外一个程序,需要关闭上一次运行的工作空间,方法是选择“文件”菜单中的“关闭工作空间”命令,这样才能再编辑、编译一个新的程序,否则即使新建了一个新的C语言源程序文件,新编辑了一个程序,但仍然会编译上一次的那个程序,所以一定要关闭工作空间。另外,
8、创建C程序文件时,可以更改程序的存放位置。写好程序以后,也可以依次按Ctrl+F7、F7、Ctrl+F5三对组合键编译并运行程序。第1章 C语言概述1.4 VC+运行C程序说明1.4.1编辑程序在编辑过程中,当输入一个C语言的关键字时,Visual C+系统自动将其设定为蓝色字体以示区别。如果输入了一个块结构语句(如for(i=0;i10;i+)、while(n (大于) = (大于等于) b, x=2, ab字符的比较是按ASCII码值的大小进行比较。因此,ab的结果为0。第2章 数据类型、运算符和表达式2.6 数据的基本运算2.6.4 逻辑运算符和逻辑表达式1逻辑运算符C语言提供了三种逻辑
9、运算符:&(逻辑与)| (逻辑或)! (逻辑非)第2章 数据类型、运算符和表达式2.6 数据的基本运算2.6.4 逻辑运算符和逻辑表达式2优先级和结合性逻辑运算符的优先级由高到低依次为: ! & |与其它运算符相比,&和|运算符低于关系运算符,!高于算术运算符。即:! 算术运算符 关系运算符 & | 赋值运算符逻辑运算符的结合性为“左结合”。第2章 数据类型、运算符和表达式2.6 数据的基本运算2.6.4 逻辑运算符和逻辑表达式3逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子称为逻辑表达式。例如:a&b, a|b, (x0)&(y0)说明:(1)若x=1,y=2,则(x0)&(y0)
10、的值为1。(2)a,b,c三数中a为最大的条件是:(ab)&(ac)。(3)若a=4,则!a的值为0。在逻辑运算中,将非零值认作为1,因此它的逻辑非值就是0。第2章 数据类型、运算符和表达式2.6 数据的基本运算2.6.5 逗号运算符C语言提供一种特殊的运算符逗号运算符,它将两个表达式连接起来。如:3+5,6+9称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,表达式n逗号表达式的求解过程是:先求解表达式1的值,再求表达式2的值。整个逗号表达式的值是最后那个表达式的值。第2章 数据类型、运算符和表达式2.7 混合运算2.7.1 系统自动转换整型、单精度型、双精度型数据可以混合运算。前
11、已述及,字符型数据可以与整型通用,因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。例如: 10+ a+1.5-8765.1234+ b是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。第2章 数据类型、运算符和表达式2.7 混合运算2.7.2 强制类型转换可以使用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)a(将a转换成double类型)(int)(x+y)(将x+y的值转换成整型)(float)(5%3)(将5%3的值转换成float类型)其一般形式为:(类型名)(表达式)第2章 数据类型、运算符和表达式2.7 混合运算2.7.2
12、强制类型转换第2章 数据类型、运算符和表达式本章结束!第3章 顺序结构程序设计本章主要内容:3.1 格式化输出printf()(重点)3.2 格式化输入scanf()(重点)3.3 字符的输入输出3.4 顺序结构程序设计举例本章教学要求:熟悉顺序结构程序设计的特点 掌握格式化输入输出函数的使用方法3.1 格式化输出printf()3.1.1 printf的一般格式格式:printf(格式控制,输出表列);1格式控制 格式控制是用双引号括起来的字符串,它包括格式说明和普通字符两部分。(1)格式说明 格式说明由“%”和格式字符组成,它的作用是说明计算机中的数值将以何种形式显示在屏幕上。第3章 顺序
13、结构程序设计3.1 格式化输出printf()(2)普通字符 普通字符是需要原样输出的字符。如:x=、y= 。普通字符的使用使输出结果更加清晰、易懂。比如,输出结果x=5就比只输出5更容易使人理解。例如: float x; printf(x=%fn,x);第3章 顺序结构程序设计3.1 格式化输出printf()2 输出表列 输出表列是需要输出的数据,它可以是常量、变量或表达式,各输出项之间以逗号作为间隔。执行printf函数时输出项将按格式符指定的格式输出。【例3-1】分析下列程序的执行结果。第3章 顺序结构程序设计3.1 格式化输出printf()3.1.2 格式字符C语言中的格式字符主要
14、有以下几种,如表3-1所示。第3章 顺序结构程序设计3.1 格式化输出printf() 1输出整型数据的格式字符d:按整型数据的实际长度输出。md:m为指定的输出宽度。若数据位数小于m,当m为正数时,则左端补空格;当m为负数时,则右端补空格。若数据位数大于m,按实际位数输出。ld:用于输出长整型数据。o:以八进制数形式输出。x:以十六进制数形式输出。u:以无符号型整数形式输出。第3章 顺序结构程序设计3.1 格式化输出printf()【例3-2】#include int main() int a,b; a=123,b=12345; printf(*%d*,*%d*n,a,b); printf(
15、*%5d*,*%4d*n,a,b); printf(*%-5d*,*%-4d*n,a,b); return 0;第3章 顺序结构程序设计3.1 格式化输出printf()【例3-3】#include int main() long x; x=123456; printf(%ldn,x); return 0;程序运行结果:123456第3章 顺序结构程序设计3.1 格式化输出printf()【例3-4】 #include int main() int a,b,c; a=10;b=010;c=0 x10; printf(%d,%o,%xn,a,b,c); printf(%d,%d,%dn,a,b,
16、c); return 0; 程序运行结果:10,10,1010,8,16第3章 顺序结构程序设计3.1 格式化输出printf()【例3-5】#include int main() unsigned int a; a=4294967295; printf(%u,%dn,a,a); return 0;程序运行结果:4294967295,-1第3章 顺序结构程序设计3.1 格式化输出printf()2输出实型数据的格式字符f:以小数形式输出实数,保留6位小数。m.nf:输出数据共占m位,其中有n位小数,小数点占1位。如果数据长度小于m,则左端补空格,即数据右对齐;-m.nf: 当数据长度小于m时,
17、右端补空格,即数据左对齐。【例3-6】第3章 顺序结构程序设计3.1 格式化输出printf()【例3-7】 #include int main() float x=123.456; printf(%fn,x); printf(*%-10.3f*n,x); printf(*%10.1f*n,x); return 0;第3章 顺序结构程序设计3.1 格式化输出printf()【例3-8】#include int main() float r=2.5,s; s=3.14*r*r; printf(s=%fn,s); printf(s=%.2fn,s); return 0;第3章 顺序结构程序设计3.
18、1 格式化输出printf() 3输出字符型数据的格式符c:输出单个字符。mc:按指定宽度m输出字符。若m为正值,则输出字符右对齐;若m为负值,则输出字符左对齐。【例3-9】第3章 顺序结构程序设计3.1 格式化输出printf() 4输出字符串的格式符s:按实际长度输出字符串。ms:按指定宽度m输出字符串。当m为正数时,字符串右对齐输出;m为负数时,字符串左对齐输出;如果m小于字符串长度,则按实际长度输出。m.ns:只输出字符串的前n个字符,共占m列。当m为正数时,字符串右对齐输出;m为负数时,字符串左对齐输出。【例3-10】第3章 顺序结构程序设计3.2 格式化输入scanf()3.2.1
19、 scanf的一般格式格式:scanf(格式字符,地址表列); 例如:scanf(%d,&a);说明:(1)“地址表列”是变量的内存地址,它是通过对变量的“求地址”运算得到的,“”就是求地址运算符。(2)scanf函数也使用格式符,格式符的作用是表示用户想要将输入的文本转换为何种形式存储在内存中。第3章 顺序结构的程序设计第3章 顺序结构程序设计3.2 格式化输入scanf()3.2.2 scanf的用法1整型、实型数据的输入scanf(“%d,%d,%d”,&a,&b,&c);scanf(%d%d%d,&a,&b,&c); 如果格式符之间以逗号间隔,则输入的数据间也要以逗号间隔。 比如,要给
20、变量a、b、c分别赋值1、2、3,则在执行时输入数据如下: 1,2,3第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-11】#include int main()int a,b;float c,d;scanf(%d,%d,&a,&b);scanf(%f,%f,&c,&d);printf(%d,%d,%.1f,%.1fn,a,b,c,d); return 0;第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-12】#include int main()float a,b;scanf(%f%f,&a,&b);printf(a=%.1f b=%.1fn,a,b); re
21、turn 0;程序运行结果:2.5凵 2.6a=2.5 b=2.6第3章 顺序结构程序设计3.2 格式化输入scanf()(3)scanf(a=%d,b=%d,&a,&b); 若要给a、b分别赋值为1、2,则运行时输入: a=1,b=2【例3-13】#include int main()int a,b,c,d;scanf(a=%d,b=%dn,&a,&b);scanf(c:%d,d:%d,&c,&d);printf(%d %d %d %dn,a,b,c,d); return 0;第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-14】#include int main()int
22、a;printf(输入年龄:);scanf(%d,&a);printf(年龄:%dn,a); return 0;程序运行结果:输入年龄:10年龄:10第3章 顺序结构程序设计3.2 格式化输入scanf()2字符型数据的输入scanf(%c,%c,%c,&a,&b,&c); 在字符输入时,如果scanf中的格式符间以逗号间隔,输入数据时,字符间也以逗号间隔。scanf(“%c%c%c”,&a,&b,&c); 在字符输入时,如果scanf中的格式符间没有间隔,输入数据时,字符要连续输入。第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-15】#include int main()c
23、har a,b,c;scanf(%c,%c,%c,&a,&b,&c);printf(%c%c%cn,a,b,c); return 0;第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-16】#include int main()char a,b,c;scanf(%c%c%c,&a,&b,&c);printf(%c%c%cn,a,b,c); return 0;程序运行结果:youyou第3章 顺序结构程序设计3.2 格式化输入scanf()【例3-17】编写程序,求圆面积。分析:圆面积的计算公式为:s=r2,因为键盘上不能输入,所以用3.14代替。第3章 顺序结构程序设计3.3 字
24、符的输入输出getchar()和putchar()3.3.1 getchar函数格式:变量=getchar();【例3-18】第3章 顺序结构程序设计3.3 字符的输入输出getchar()和putchar()3.3.2 putchar函数格式:putchar(c);【例3-19】第3章 顺序结构程序设计3.4 顺序结构程序设计举例【例3-20】求一元二次方程ax2+bx+c=0的根。 分析: 要用计算机解方程,必须给出求解方程的算法,对于一元二次方程ax2+bx+c=0来说,就是要给出求根公式。给公式中的变量赋值,计算机就可以求出方程的根了。 因为求根公式中用到了平方根函数sqrt(x),所
25、以程序必须将数学头文件:math.h包含到程序中。第3章 顺序结构程序设计3.4 顺序结构程序设计举例 【例3-21】输入任意三个整数,求和及平均值。分析: 编写该程序时,有两个地方需要注意: 定义变量时,平均值变量aver要定义为实型,不能定义为整型,否则误差太大。求平均值时,sum除以实数3.0,而不是除以整数3,如果除数和被除数都是整数,那么商也将是一个整数,这样也会造成误差大的错误。第3章 顺序结构程序设计3.4 顺序结构程序设计举例 【例3-22】从键盘输入一个小写字母,将其转换为大写字母输出。分析: 大写字母的ASCII码值等于小写字母的ASCII码值减32。 第3章 顺序结构程序
26、设计3.4 顺序结构程序设计举例 【例3-23】输入三角形的三条边,求三角形面积。三角形面积的计算公式为:分析: 为简单起见,设输入的三条边a、b、c能构成三角形,所以读者运行程序时,给变量的赋值必须保证三边长的值可以构成三角形,否则运行结果将是错误的。 第3章 顺序结构程序设计3.4 顺序结构程序设计举例 【例3-24】在屏幕上用“*”画出一个三角形。程序如下:#include int main() printf( *n); printf( *n); printf( *n); printf( *n); printf( *n); return 0; 第3章 顺序结构程序设计本章结束!第4章 选
27、择结构程序设计本章主要内容:4.1 if 语句(重点)4.2 switch语句4.3 选择结构程序设计举例(重点)本章教学要求:了解选择结构的特点 熟悉选择结构程序设计的一般方法 掌握 if 语句和 switch 语句的使用方法 4.1 if语句 if 语句也称为条件语句,它根据一个条件的真和假有选择地执行或不执行某个语句。C语言提供了三种形式的if语句,可以实现单分支选择结构、双分支选择结构和多分支选择结构。4.1.1 复合语句复合语句是用一对大括号“ ”括起来的一组语句。 复合语句的一般形式为: 说明部分; 语句部分; 第4章 选择结构程序设计4.1 if语句注意: 复合语句中的右大括号“
28、”后面没有分号; 一个复合语句在语法上等价于单个语句,凡一个语句能够出现的地方都能出现复合语句,换句话说,复合语句在逻辑上是一个语句; 复合语句中说明部分的变量,其作用域只限于该复合语句内部,在复合语句外无意义; 后面将要介绍的if子句和else子句以及while、for的循环体,在语法上均看作为单个语句,若需要多个语句,必须写成复合语句的形式。另外,函数体语法上也是一个复合语句,但复合语句可以嵌套,而函数体中不可以嵌套函数。第4章 选择结构程序设计4.1 if语句4.1.2 单分支 if 语句格式: if(表达式) 语句;功能:先计算表达式的值,如果表达式的值为真(非0值),则执行其后的语句
29、,否则,跳过该语句,执行if语句的后续语句。其流程图如图4-1所示。第4章 选择结构的程序设计4.1 if语句说明:(1)表达式通常是关系表达式或逻辑表达式,也可以是任意类型的表达式(如整型、实型、字符型等)。在if语句的判断中只要表达式的值为非0,就执行表达式后面的语句。(2)表达式两侧的圆括号不能省略。(3)格式中的语句可以是单个语句,也可以是复合语句。如: if(ac,则交换其值,使得bc。这样就得到了由小到大的顺序。 由于篇幅所限,这里程序只运行了一次,理论上,要测试程序正确,需要验证程序的每一个分支。对于本例,需要把a、b、c排序的三种情况都测试一次,才能证明程序是正确的。 第4章
30、选择结构程序设计4.1 if语句4.1.3 双分支 if 语句格式: if(表达式) 语句1; else 语句2;功能:先计算表达式的值,当表达式的值为真(非0值),则执行语句1;否则执行语句2。其流程图如图4-2所示。第4章 选择结构程序设计4.1 if语句说明:(1)if 和else 是C语言的关键字,且else 不是独立的语句,它是if语句的一部分。使用时else必须与if成对使用,共同组成一条if-else 语句。(2)“语句1”称为if子句 ,“语句2”称为else子句,它们可以是单个语句或是复合语句。(3)在此形式的if语句中,无论if子句或else子句形式上多么复杂,它们都是if
31、或else的子语句,分别代表双分支选择结构的分支之一,不要把子语句理解为独立的语句。第4章 选择结构程序设计4.1 if语句【例4-4】输入三个整数,输出最大值。分析:假设三个数为a、b、c,先求出a和b中的大者,再将其和c比较,就可得出三数中的最大值。思考:如果程序中if(mc),该分支的语句将如何变化?请读者自行修改练习,并比较两种用法。第4章 选择结构程序设计4.1 if语句4.1.4 多分支 if 语句格式:if(表达式1) 语句1;else if(表达式2) 语句2;else if(表达式3) 语句3;else if(表达式n) 语句n;else 语句n+1;功能:依次判断表达式的值
32、,如果其中一个表达式的值非0,则执行相应的语句,然后跳出整个if语句继续执行后续语句。如果所有的表达式都为0,则执行语句n+1,然后执行后续语句。其流程图如图4-3所示。第4章 选择结构程序设计4.1 if语句说明:(1)无论有多少分支的if-else if语句,它们都是一个if语句,在分析程序时尤其要注意这点,不要把一个多分支if语句理解为多个语句。(2)最后一个else常作为缺省条件,即当前面的条件表达式测试都失败时,则执行语句n+1。【例4-6】输入一个百分制成绩,要求输出其对应的五级制的等级,即90分以上为A,8089为B,7079为C,6069为D,60分以下为E。思考:如果程序中i
33、f(mc),该分支的语句将如何变化?请读者自行修改练习,并比较两种用法。第4章 选择结构程序设计4.1 if语句4.1.5 条件运算符 ?: C语言提供一种简单方式来表示if-else 语句的一种形式。这被称为条件表达式,使用条件运算符“?:”实现,格式:表达式1 ?表达式2 :表达式3功能:如果表达式1为真(非0),整个条件表达式的值等于表达式2的值,否则,整个条件表达式的值等于表达式3的值。第4章 选择结构程序设计4.2 switch语句switch语句的功能与if-else if类似,都是用来解决多分支选择问题的。但是,在某些情况下,switch语句使用更加方便。 4.2.1 switc
34、h语句格式: switch(表达式) case 常量表达式1: 语句序列1; case 常量表达式2: 语句序列2; case 常量表达式n: 语句序列n; default:语句序列; 第4章 选择结构程序设计4.2 switch语句switch语句的执行过程: 先计算switch表达式的值,然后将该值与各case后面的常量表达式的值进行比较。当其值与某一常量表达式的值相同时,就从该case后面的语句开始执行,直到switch语句结束时为止;若其值与所有的常量表达式的值都不相同,就执行default后面的语句,若不存在default,则程序继续执行switch语句之后的语句。第4章 选择结构程
35、序设计4.2 switch语句说明:(1)switch表达式是选择条件,可以为任何类型。(2)case后面的常量表达式是值为常数的表达式,通常为常量或符号常量。类型必须和switch表达式的类型相同;(3)switch语句中的所有case常量表达式的值必须各不相同;(4)每个case(称为一种情况)下可以有零或多个语句,有多个语句时可以不加。(5)当switch找到与表达式相匹配的case时,将从该case开始,执行其后的所有分支,直到switch语句结束。如果希望程序只执行与表达式相匹配的case,其它不执行,则需要使用break语句。break语句的作用是,使程序的执行跳出switch语句
36、,执行switch语句后面的语句。第4章 选择结构程序设计4.2 switch语句【例4-7】运行下列程序,熟悉switch的用法。第4章 选择结构程序设计4.2 switch语句【例4-8】运行下列程序,写出运行结果。第4章 选择结构程序设计4.2 switch语句【例4-9】从键盘输入两个实数和一个四则运算符(、)执行相应的运算并输出运算结果。第4章 选择结构程序设计4.2 switch语句4.2.2 switch 和if-else 在解决多分支选择问题时,用switch或者用if-else通常是没有一定之规的。如果选择是基于求实型变量或表达式的值,就不能使用switch。如果变量必须落入
37、某个范围,也不能很方便地使用switch。这样写是很简单的: if(变量1&变量0:两个不等实根; b2-4ac=0:两个相等实根; b2-4ac0:两个共轭复根。第4章 选择结构程序设计4.3 选择结构程序设计举例【例4-11】输入三角形的三条边,求三角形面积。三角形面积的计算公式为:分析: 第3章曾经做过这道题,当时要求运行程序时输入的三边长必须能够构成一个三角形,否则程序将出现错误。构成三角形的条件是任意两边之和大于第三边,现在使用条件语句可以很方便地解决这个问题。第4章 选择结构程序设计4.3 选择结构程序设计实例【例4-12】编写程序,将百分制成绩转换为五级制成绩。转换方法: 成绩9
38、0分:优 80成绩90分:良 70成绩80分:中 60成绩70分:及格 成绩60分:不及格第4章 选择结构程序设计4.3 选择结构程序设计举例【例4-13】输入年月日,判断其为该年度的第几天。分析: 以2015年8月29日为例,要判断这一天是2015年的第几天,需要将前7个月的天数求和,再加29。所以,switch(m-1)结构从case 7分支进入,一直向下执行,直到case 0为止,求出了1-7月份天数的累加和,再加上8月份的天数,正好是241天。2月份是个特殊的月份,要判断是否为闰年。第4章 选择结构程序设计本章结束!第5章 循环结构程序设计本章主要内容:5.1 for 语句(重点)5.
39、2 while 语句(重点)5.3 do-while 语句5.4 break 和 continue 语句5.5 多重循环(重点)5.6 循环结构程序设计举例本章教学要求:了解循环结构的概念 熟悉循环结构程序设计的方法 掌握while、do-while、for循环控制语句的使用方法。 5.1 for 语句本节主要介绍循环结构的概念以及循环结构程序能解决的问题。 循环结构的概念定义:循环是指在所设计的程序中,有条件地反复执行某一段程序的现象。循环结构是结构化程序设计中一种很重要的结构,又称为重复结构。循环的特点:在给定条件成立时,反复执行某个程序段,直到条件不成立为止。给定的条件称为循环条件,反复
40、执行的程序段称为循环体。循环结构的分类:当型循环结构和直到型循环结构。 循环条件和循环体设置不好,很可能得不到预期的结果,甚至出现死循环。 第5章 循环结构程序设计5.1 for 语句5.1.1 for语句的格式for语句的一般格式为:for(表达式;表达式;表达式) 语句;其中:表达式1: 为循环变量赋初值表达式2: 为循环继续的条件表达式3: 为循环变量的增值语句: 又被称为循环体,它是当表达式2为真(非0)时要重复执行的语句,它可以由一条语句或复合语句组成。 第5章 循环结构程序设计5.1 for 语句5.1.2 for语句的执行过程(1)计算表达式1的值,给循环变量赋初值,表达式仅在进
41、入for语句时执行一次。(2)判断表达式2的值,若其为“真”(非0),则执行循环体语句,然后转到第(3)步;若其为“假”(0),则结束循环,执行for语句的下一条语句。(3)计算表达式3的值。表达式3改变循环变量的值,它在每次执行完循环体语句之后,都要被执行一次。然后返回第(2)步继续执行。 for语句的执行过程流程图如图5-1所示。第5章 循环结构程序设计5.1 for 语句第5章 循环结构程序设计5.1 for 语句说明:(1)for语句的使用非常灵活,它的三个表达式可以省略1个或2个,也可以3个都省略,但间隔符“;”必须保留。例如:下列程序段把i=1提到for语句之前,省略了表达式1。
42、int i=1;s=0; for( ;i=100 ;i+) s=s+I;例如:下列两个程序段均为死循环,因为表达式2的值永远为真。(2)在for语句中,表达式1和表达式3都可以是一项或是多项,多于一项时,各项之间用“,”分隔,形成逗号表达式。 第5章 循环结构程序设计5.1 for 语句5.1.3 for语句的用法【例5-1】编程计算s=1+2+3+.+100,用for语句实现。 依照此程序,请读者自行完成下列编程题: 计算:s=1+3+5+.+99 计算:s=1+2+3+.+n第5章 循环结构程序设计5.1 for 语句【例5-2】编程求n!。分析:n!=1*2*3*n。求阶乘时需要赋初值为
43、1,不能是0,因为0乘任何数都是0如果n值较大,n!可能溢出,应将结果变量说明为float或double类型。第5章 循环结构程序设计5.1 for 语句【例5-3】把100200之间能被7整除的数输出。分析:能被7整除的数是:x%7=0#include int main() int i;for(i=100;i=200;i+) if(i%7=0) printf(%5d,i);printf(n);return 0;第5章 循环结构程序设计5.2 while语句5.2.1 while语句的格式while语句的一般格式为: while(表达式) 语句;其中:(1)“表达式”是循环条件,可以为任何类型
44、表达式,表达式必须用( )括起来;(2)“语句”又被称为循环体,为C语言中的任何一种语句(包括复合语句、if语句、case 语句)。第5章 循环结构程序设计5.2 while语句5.2.2 while语句的执行过程while语句的执行过程如下:(1)计算表达式的值,并判断其为“真”(非0)或“假”(0)。(2)若表达式的值为“真”,则执行循环体语句,然后返回到while语句重复第(1)步;若表达式的值为“假”,则结束循环,执行while语句的下一语句。while语句的执行过程如图5-2所示。第5章 循环结构程序设计5.2 while语句说明:(1)while语句的特点是:先判断表达式,后执行循
45、环体语句。如果第一次判断表达式的值为“假”,则循环体语句一次也不执行。(2)循环体语句可以是一条语句,也可以是复合语句。(3)循环结构由循环条件和循环体语句构成,在循环体中应该包含使循环趋向于结束的语句,否则会形成死循环。程序中应避免出现死循环。第5章 循环结构程序设计5.2 while语句5.2.3 while语句的用法【例5-5】输出一行数字0 1 2 3 4,要求每个数字中间空3格。#include int main()int i;i=0;while(i5) printf(%4d,i+);printf(n);return 0; 第5章 循环结构程序设计5.2 while语句【例5-6】将
46、输入的正文复制到输出,每次一个字符。分析:以 E0F 为结束标志的字符流称为一个正文,可以包含空白字符,例如空格 和换行字符n。键入 Ctrl+z则 getchar 函数返回文件结束字符 EOF。程序中:c=getchar(); while(c!=EOF) putchar(c); c=getchar(); 可简化为:while(c=getchar()!=EOF) putchar(c);第5章 循环结构程序设计5.2 while语句【例5-7】输入一行字符,分别统计出其中英文字母、空格、数字的个数。第5章 循环结构程序设计5.3 do-while语句5.3.1 do-while语句的格式do-w
47、hile语句的一般格式为:do 语句;while(表达式);其中:(1)语句部分可以是简单语句或复合语句;(2)表达式是循环条件,可以是任何类型表达式,表达式必须用()括起来。第5章 循环结构程序设计5.3 do-while语句5.3.2 do-while语句的执行过程do-while语句的执行过程如下:(1)执行循环体语句;(2)计算表达式的值,判断其为“真”(非0)或“假”(0)。若为“真”,则返回第1步,继续执行循环体;若为“假”,则结束循环,执行do-while语句的下一语句。do-while语句的执行过程如图5-3所示。第5章 循环结构程序设计5.3 do-while语句说明:(1)
48、do-while语句和while都能实现循环控制,while结构的程序通常都可以转换成do-while结构;(2)do-while语句与while语句的区别是:while语句先判断循环条件是否满足,如果满足再执行循环体,因此有可能一次也不执行循环体;而do-while语句是先执行一次循环体,然后再判断循环条件是否满足,因此,循环体至少要执行一次。因此,do-while语句通常用于那些至少要执行一次循环的情况。(3)do-while循环体中一定要有能使条件表达式值趋于0的操作,否则会出现死循环。第5章 循环结构程序设计5.3 do-while语句5.3.3 do-while语句的用法【例5-9】
49、计算: 直到最后一项的绝对值小于10-6为止。分析:这是一个求级数和问题,方法是依次计算每一项,并将该项与前面各项之和累加,如果某项绝对值小于10-6(反映精度),则求和结束,否则,重复上述过程。从式子的第二项起,每一项都是前一项乘以一个因子: (-x2)/(n*(n-1) (n=3,5,7,9,)如果用t表示每一项的值,则: t=t*(-x2)/(n*(n-1) (n=3,5,7,9,)第5章 循环结构程序设计5.3 do-while语句5.3.4 三种循环语句比较 当程序中需要用到循环语句时,选择哪个语句和个人使用习惯有关,但一般来说有以下一些流行的风格。(1)for语句适合循环次数已知的
50、情况。(2)while语句适合循环次数不确定,但已知循环条件。(3)do-while语句与while语句可以互通使用,但do-while更适合于至少循环一次的情况。第5章 循环结构程序设计5.4 break和continue语句5.4.1 break语句格式:break;功能:结束循环,执行循环语句的下一语句。break语句只能用于下面两种情况:(1)出现在循环语句的循环体中,当循环条件还未变为假时提前结束循环语句的执行(强行退出循环)。(2)出现在switch语句中,使程序中途退出switch语句,即跳过break语句之后直到switch语句体结束的所有语句。除上述两处外,其他位置均不能出现
51、break语句。第5章 循环结构程序设计5.4 break和continue语句【例5-10】编写程序,用循环计算圆面积,如果输入非数字半径则结束循环。第5章 循环结构程序设计5.4 break和continue语句5.4.2 continue语句格式:continue;功能:终止循环体的本次执行,控制转移到循环体的末尾,循环是否继续取决于循环条件是否满足。continue语句只能出现在循环语句的循环体中。例如:for(i=0;i10;i+) ch=getchar(); if(ch=n) continue; putchar(); 第5章 循环结构程序设计5.5 多重循环5.5.1 多重循环的格
52、式多重循环的格式如下:while(表达式) for( 表达式1;表达式2;表达式3 ) 以上循环就构成了双重循环。三种循环语句(for、while、do-while)均可以互相嵌套形成多重循环结构。需要注意,内外层循环是完整的,相互之间不允许交叉。第5章 循环结构程序设计5.5 多重循环5.5.2 多重循环的执行过程下面以一个双重循环的程序为例,说明多重循环的执行过程。【例5-11】写出下列程序的运行结果。 本例中:i 循环称为外层循环,控制输出几行j 循环称为内层循环,控制一行输出几列第5章 循环结构程序设计5.5 多重循环5.5.3 多重循环的使用【例5-12】编程计算:s=1!+3!+5
53、!第5章 循环结构程序设计5.5 多重循环【例5-13】求Fibonacci数列:1,1,2,3,5,8, 的前40项。分析:Fibonacci的规律是:数列从第3项开始,每项都是其前两项之和。即: a=1;b=1; a=a+b;b=a+b; a=a+b;b=a+b; 第5章 循环结构程序设计5.5 多重循环【例5-14】打印下列图形: ABCDEF BCDEF CDEF DEF EF F第5章 循环结构程序设计5.6 循环结构程序设计举例【例5-15】任意10个数,求正数的个数及正数和。第5章 循环结构程序设计5.6 循环结构程序设计举例【例5-16】输出三位数中的“水仙花数”。 水仙花数是
54、指一个3位数 ,其各位数字的 3次幂之和等于该数本身。例如,153是一个“水仙花数”,153=13+53+33分析:本题的关键是要分离出3位数的百位、十位和个位数字。第5章 循环结构程序设计5.6 循环结构程序设计举例【例5-17】将一张100元的人民币换成10元、5元和1元的零钞,一共有几种兑换方法。分析:因为50元最多只能有2张,20元最多有5张,10元最多有10张,也可以一张也没有,所以三个循环的范围分别是:02、05、010第5章 循环结构程序设计5.6 循环结构程序设计举例【例5-18】百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马
55、各多少。分析:符合本题输出的条件: 马的总数等于100; 货的总数等于100; 小马数必须是偶数。第5章 循环结构程序设计5.6 循环结构程序设计举例【例5-19】打印下列图形: * * * *分析:本题需要用到双重循环,外层循环(i循环)控制打印4行,内层循环(j循环)控制打印列,每列2*i-1个。k循环用于打印每行的前导空格。第5章 循环结构程序设计本章结束!第6章 数组本章主要内容:6.1 数组的概念6.2 一维数组(重点)6.3 二维数组(重点)6.4 字符数组 本章教学要求:了解数组中数据的存储方法 熟悉数组的概念、数组元素的表示方法掌握数组的编程方法6.1 数组的基本概念本节介绍数
56、组的定义和数组程序设计要解决的问题。 6.1.1 数组解决的问题类型相同的一组数的存储类型相同一组数的处理通过对下标的控制实现对数组的处理: 循环变量控制下标 处理的数组映射到下标如:40个学生成绩的存储 100个整数的排序第6章 数组6.1 数组的基本概念本节介绍数组的定义和数组程序设计要解决的问题。 6.1.2 数组的基本概念数组就是计算机内存中的一块连续的存储区域,用来存储数据类型相同的一组数据。数组通过数组名来表示。数组名的命名规则与变量名相同。数组名就代表整个数组的首地址,即第一个数组元素的地址。 数组中的成员称为数组元素,数组是通过数组元素访问它的每个成员的。数组元素是一个具体的变
57、量,也称为下标变量。数组元素的表示形式为:数组名下标 使用:数组遵循先定义后使用的原则,未定义的数组不能使用。数组元素如同其它基本变量一样,可以被赋值,也可以在表达式中使用。分类:根据数组下标的多少,数组可分为一维数组和多维数组。 第6章 数组6.2 一维数组本节主要介绍一维数组的定义和使用。 6.2.1 一维数组的定义1一维数组的定义形式一维数组是指带一个下标的数组,用来存储一组类型相同的数据。定义形式 :类型说明符 数组名常量表达式; 注意:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数组元素的个数,也称为数组的长度。 第6章 数组6
58、.2 一维数组6.2.1 一维数组的定义1一维数组的定义例如:int a10; float b20,s40; 说明:数组名也是标识符,其命名规则要符合标识符的规定。常量表达式表示数组元素的个数,其值必须大于等于1。常量表达式中可以包括常量和符号常量,但不能包含变量。定义数组时,数组长度可以用符号常量表示。 一个数组定义语句中可以定义多个相同类型的数组,也可以和其他相同类型的变量一起定义,用“,”隔开。 第6章 数组6.2 一维数组6.2.1 一维数组的定义2一维数组元素的引用一维数组元素的引用形式:数组名下标例如:int a5数组a有5个数组元素:a0、a1、a2、a3、a4。注意:不能使用数
59、组元素a5,其下标已越界。说明:下标表示该元素在数组中的位置,它可以是整型常量、整型变量或整型表达式。如:a3、ai+j、ai+。 C语言规定,数组元素下标从0开始,最大下标为数组长度减1。数组元素可以像一个独立的简单变量来使用。如:a0=a1+a2-a5-1; 第6章 数组6.2 一维数组6.2.1 一维数组的定义3一维数组的存储形式数组是有序的同类数据的集合,它在计算机内部的存储也是有序的。在编译时,系统根据数组的定义为数组分配一个连续的存储区域,数组元素按下标由小到大的次序连续存放,下标为0的元素排在前面,每个元素占据的存储空间大小与同类型的简单变量相同。例如:int a5a数组中每个元
60、素在内存占4个字节的存储空间,各元素连续存放的示意图如图6-1所示。 第6章 数组6.2 一维数组6.2.2 一维数组的使用1一维数组的初始化数组初始化赋值是指指在定义数组的同时对数组元素赋初始值。将各数组元素的初值写在花括号“”中,用逗号隔开。数组初始化是在编译阶段进行的,这样可以减少运行时间,提高运行效率。初始化格式:类型名 数组名元素个数=初始值列表;(1)对全部元素赋初值。例如:int a10= 0,1,2,3,4,5,6,7,8,9 ;各数组元素的初始值依次为:a0=0、a1=1、a2=2、a3=3、a4=4、a5=5、a6=6、a7=7、a8=8、a9=9。 也可以不指定数组的长度
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超市招标方案(3篇)
- 同城排水检修方案(3篇)
- 2025至2030新鲜草莓行业产业运行态势及投资规划深度研究报告
- 2025至2030中国矿物吸声板行业产业运行态势及投资规划深度研究报告
- 会计专业导论结课论文
- 小学心理健康教育宣传
- 实践报告1500字大学格式
- 国防教育的论文题目
- 初中数学教学研究的心得体会
- 期刊和期刊论文
- API-650-1钢制焊接石油储罐
- 小学数学四年级(下册)教师用书
- 医学影像科-山东省临床重点专科评分标准(试行)
- 重庆市沙坪坝区2021-2022学年三年级下学期期末综合检测语文试题(无答案)
- 篮球--传切配合(纵切)课件.ppt
- 《消防安全培训资料》word版
- 绘就“行走的思政课”
- 临床技术操作规范重症医学分册(共41页)
- 《苏东坡传》精美(课堂PPT)
- 化学计量学基础
- 签约仪式背景
评论
0/150
提交评论