版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计 主讲教师:崔春雷 电话邮箱:wjq-,一、课程总目标:,1、了解C语言的概念,掌握C程序的组成和格式。 2、掌握C程序的上机操作环境。 3、会读、会编、会调试C程序。,二、C语言中常见关键词:,main 主函数、int 整型、float 浮点型、char 字符型、 printf 输出函数、 scanf 输入函数、if 如果、else 否则 for 循环结构关键字、while 当的时候、switch 转换 case 案例、default 默认、break 中断、continue 中止、继续,C程序中有单词(关键词)、句子(C语句)、段落(程序段)。 C语
2、句是用特定的运算符把要处理的数据连接起来,加上C语句的 结束标志“;” 组成的句子。程序段是几条C语句组合起来完成一定 功能的段落。,C语言程序设计,三、学习方法:,1、牢记关键词。简单、量少,要灵活记忆。,2、牢记数据类型和运算符的分类、特点,以及运算符的运算规则。,3、掌握C语句和表达式的分类以及各自特点。,4、掌握C程序的常见结构和特点,需理解记忆。,5、注意编写C程序时的重要细节。如字母大小写、标点符号的规则。,本书重点章节:2、3、4、5、6、7、8。 难点章节:5、7、8。,C语言程序设计,C语言程序设计,第一章 C语言概述,C语言是一种编程的入门语言,是为了与计算机对话,能让它听
3、懂的 语言。告诉它一些它能认识的运算符、表达式、语句等,让它能明白程序 员的思路。,C程序设计就是通过C这门语言与计算机交流、通信。我们告诉计算 机我们的思路,提前设计好运算步骤,让计算机按我们的思路一步一步计 算、处理数据,最后返回我们所要的结果。如计算1-100之和。(计算机 就是一个聪明、听话,而又很笨的孩子。),1、C语言的发展历史和特点,机器语言,汇编语言,高级语言,面向过程,面向对象,程序设计是数据加工的过程,程序设计关键是定义类,再派生对象,10000000 加 10010000 减,助记符 ADD A,B,C、C+ Delphi等,C语言程序设计,第一章 C语言概述,1972-
4、1973年,美国的丹尼斯里奇为了写unix操作系统,在B语 言的基础上设计出了C语言,后来各种版本经ANSI(美国国家标准 研究所)制定了统一的标准,即现在的C语言标准。,C语言的特点:,1、C语言简洁、灵活,兼有低级语言和高级语言的特点。高级语言中的低 级语言,也成为中级语言。有高级语言的基本结构,又能对位、字节、 地址进行操作。,2、程序设计结构化、模块化。程次分明,便于维护和调试。函数便于调用。,3、功能齐全。有34种运算符,32个关键字,9种控制语句,丰富的数据类型 指针的引入又使其效率更高。,4、可移植性好。语法限制不高,设计自由度高,适用范围大。如可用于DOS、 unix系统等,C
5、语言程序设计,第一章 C语言概述,2、C程序的基本组成和格式,例1、 #include /*包含标准的输入输出函数*/ main() /*主函数*/ printf(“Hello,world!n”); /*输出一句话*/ ,例2、求两数之和。(多次运行,求不同两数之和) main() int a,b,sum; /*定义变量类型*/ scanf(“%d%d”, /*输出计算结果*/ ,C语言程序设计,第一章 C语言概述,C程序特点:,1、C程序是由函数组成的,一个C程序有且只有一个main函数。 2、一个函数由两部分组成:函数首部和函数体。 3、一个C程序总是由main开始执行。 4、C语句以“;
6、”为结束标志,一行可写多个语句,一个语句可写多行。 5、C语言本身没有输入输出语句,C程序的输入输出操作时由库函数 printf和scanf等函数实现的。 6、/*/对C程序注释,程序执行时跳过,不运行。,C语言程序设计,第一章 C语言概述,3、C程序的执行过程(开发过程),开始,编辑,编译,连接,执行,结束,有错?,结果正确?,Y,N,N,Y,源程序 f.c,目标程序 f.obj,可执行程序 f.exe,库函数中的目标程序,1、编辑。得到源程序,纯文本格式 名字由编者确定,扩展名为.c。,2、编译。语法检查,生成二进制目标 程序,扩展名为.obj。,3、连接。连接其他目标函数和库函数 生成扩
7、展名为.exe的可执行文件。,4、执行。在操作系统平台执行.exe的 可执行文件。,5、检查返回结果。若正确,结束程序。 若错误,修改,再编译、连接、执 行,直到得到正确结果。,C语言程序设计,第一章 C语言概述,4、C程序的上机步骤,Turbo C2.0是Borland(宝蓝)公司推出的,它为用户创建了编辑、编译、 连接、连接、跟踪、运行、调试、存储、调用文件等多种功能组合到一个简明 的界面中的集成环境。,步骤:,1、TC2.0的启动及界面熟悉。了解各信息栏的组成和意义。,2、文件的编辑、保存。编辑完成后要修改文件名,保存为 扩展名为.c的文件。按F2保存。,3、编译、执行文件。编译(F9)
8、检查有无语法错误,没有则运行(Ctrl+ F9)文件。有错,则返回编辑栏查找、修改,再编译、运行。,4、查看执行结果。按Alt+F5查看结果。,5、关闭TC。按Alt+X退出TC。,C语言程序设计,第二章 数据类型、运算符与表达式,学习目标: 1、掌握C远的基本数据类型的特点、存储格式。 2、牢记C语言的运算符的种类、优先级和结合性。 3、了解表达式的类型、意义和用法。 4、理解不同数据类型间的转换规则。,1、C的数据类型,计算机的基本功能是进行数据处理。一种语言支持的数据类型越丰富, 它的作用范围就越广。C语言有丰富的数据类型,它不仅可以对基本的数据 类型,整型、字符型等操作,还可以对复杂的
9、数据结构,如链表,树等进行 操作。 数据类型是指一种语言所允许的数据及其操作的集合。特定的一类数据 定义了特定的运算。例如,数值型数据要进行算术运算,字符型要进行连接 运算等。它同时也定义了数据在内存中的存储格式。如,一个整型数在内存 中占2个字节,一个单精度浮点数占4个字节,双精度占8个字节,一个字符占 1个字节。 C程序中对用到的所有数据必须指定其数据类型。,C语言程序设计,第二章 数据类型、运算符与表达式,C语言的数据类型分类如下:,数据类型,基本类型,整型(int) 字符型(char) 实型(浮点型) 枚举型,单精度(float) 双精度(double),构造类型,数组类型 结构体类型
10、(struct) 共用体类型(union),枚举类型,空类型(void),C语言程序设计,第二章 数据类型、运算符与表达式,2、常量与变量,在C语言中,不同类型的数据既可以以常量形式出现,也可以以变量形 式出现。,2.1 常量,常量 即在程序运行过程中,其职不可改变的量。C语言中的常量分为 直接常量和符号常量。 1、直接常量 即常数,也叫常量。包括:整型常量、实型常量、字符型 常量、字符串常量。 (1)整型常量 又称为整数。在C语言中,有十进制、八进制、十六进制 等几种书写形式。 1)十进制整数:由0-9组成。如123、321。 2)八进制:以数字0开头,由0-7组成。如011。 3)十六进制
11、:以0 x开头,由0-9、a-f或者A-F组成。如0 x1D。,说明:整型的存储空间为2个字节,即16个二进制位。取值范围为-215215-1 即-3276832767。若超过这个范围,则使用占8个字节的长整型表示, 在常量后面加L或者l。如22L。,C语言程序设计,第二章 数据类型、运算符与表达式,补充: ASCII码表中常用数值的记忆。 二进制和C语言中几种进制表示形式之间的换算。,二进制-十进制 01000110-0X20+1X21+1X22+1X26+0X27=? 八进制-十进制 0111-1X80+1X81+1X82=? 十六进制-十进制 F5-5X160+FX161=? 二进制-十
12、六进制(用8421码) 11111101-FD-(转换为十进制是多少?) 十进制-十六进制 1234-4 13(D) 2 即0 x4D2 再转换为二进制-010011010010 思考:十进制转换为八进制、二进制?二进制转换为八进制?(用421码) 注:8421码和421码均是大家总结出来的简便算法。,C语言程序设计,第二章 数据类型、运算符与表达式,(2)实型常量 即实数,只能用十进制表示。可用小数形式和指数形式表示。 1)小数形式 由0-9和小数点组成。 如:34.0,.34 , 34.等 注:完整的有三个部分,整数部分,小数点、小数部分。小数点是 不能省略的。34和34.0是不同的。 2
13、)指数形式 由整数部分、小数点、小数部分和指数部分组成。指数部分 是指在E或者e后的整数阶码。 如:0.012可表示为1.2E-2 注:字母E或者e前面必须要有数字且E或者e后面的指数必须为整数。 整数部分或者小数部分可以省略,但不能同时省略,小数点和E(e)及整数阶码可以省略,但不能同时省略。如:23E4, 1.2e-2, 0e0都是合法的实数。而E3,3e0.2,3e,.E3都是不合法的。,注:浮点小数一般为单精度浮点型,占4个字节,有效位数位6-7位,若要 精度较高,超过6-7位,可用双精度浮点型表示,占8个字节,有效位 为16-17位。float的有效位是7位,保留6位有效小数。,C语
14、言程序设计,第二章 数据类型、运算符与表达式,(3)字符型常量 是用单引号括起来的一个字符。一个字符型常量的值是由该字符的ASCII 码来确定的。如A,a等,但是它们是不同的字符常量。 C语言中还允许使用一些特殊形式的字符型常量,即转义字符。它以反斜杠 “”开头的字符序列。如“n”等。 注:转义字符代表一个字符,占一个字节。 0是ASCII码值为0的字符,是字符串常量的结束标志。,例:分析下面程序的执行结果。 main() printf(“thististatbook.n”); printf(“this ibs a book.n”); printf(“”this is a book.”n”);
15、 ,C语言程序设计,第二章 数据类型、运算符与表达式,(4)字符串常量 字符串是由一对双引号括起来的字符序列。如:“why?”,“123”等。 1)字符串长度 指字符串中包含的字符个数。 2)存储方式 C语言编译程序在存放字符串的时候,总是自动在字符串 结尾加上转义字符0,作为其结束标志,所以,存储时,系统分配 的存储空间为字符串长度加1。 注:字符常量和字符串常量是不同的。如a,”a”。在存储时,所占内存字节数不同。,2、符号常量,也可以用一个标识符代表一个常量,该常量为符号常量。 用define来定义。 格式:#define 常量名 常量的值 如:#define HIGH 40 符号常量在
16、其作用域内,值不可改变,也不能再被赋值。习惯上,字 符常量名用大写,变量用小写。 优点:含义清楚,一般用英文单词来作为符号常量名。 方便修改,做到一改全改。,C语言程序设计,第二章 数据类型、运算符与表达式,2.2 变量,变量是指其值可以改变的量。一个变量必须要有一个名字,系统可以通过 变量名来访问变量。变量在程序中使用前,必须先进行定义,即指定变量名和 数据类型,以便编译系统为它分配相应的存储单元。不同类型的变量在内存中 占用不同的存储单元。 变量名是用标识符来标识的,命名变量时要满足标识符的命名规则。标识 符就是一串有效字符序列,它就是一个名字。C语言规定标识符只能由字母、 下划线和数字组
17、成,且开头只能是字母或者下划线。如:sun,e3,d1a2y 注意:大小写字母被认为是不同的字符。所以,s和S被认为是不同的变量 名,代表两个不同的变量。一般来说,变量名用小写字母。 在C语言中,要求对所用到的变量作强制定义,也就是“先定义,后使用”。 目的:(1)不定义就不作为变量名。便于变量名出错 (2)每个变量被指定一个确定的类型,编译时,为其分配相应的存 储单元。如:int i;代表指定i为整型,分配2个字节,以整数存 储。 (3)指定每个变量的类型,这就便于编译时,检查变量的运算是否 合法。如:a,b定义为实型,则不能a%b运算。,C语言程序设计,第二章 数据类型、运算符与表达式,2
18、.2 变量,例子:判断下面程序中的错误。 main() float a,b; a=1;b=2; sum=a+b; c=sum%2; printf(“sum is %cn”,sum); printf(“yushu is %dn”,c); ,C语言程序设计,第二章 数据类型、运算符与表达式,2.3 运算符和表达式,C语言有丰富的运算符和表达式,这也是C语言功能完善的原因。 C语言中运算符按其连接的运算对象的个数不同,可以分为单目运算符, 双目运算符、三目运算符。如:+、+、?:等。 学习C的运算符就要掌握它的优先级和结合性。 碰到多个运算符的时候要知道谁的优先级高,谁的优先级低,先运算谁,后 运算
19、谁。还要知道在运算的时候,运算符的结合性,即明白运算数据的时候是从 左向右运算,还是从右向左运算。 C语言中,包含34种运算符,根据所运算的对象的类型不同,又可以分为7大 类。下面我们分类介绍这些运算符和其构成的表达式。,2.3.1 算术运算符和算术表达式,算术运算符又可以分为基本算术运算符和自增自减运算符。 1、算术运算符 (1)基本算术运算符 有“+”、“-”、“*”、“/”、“%”。如:4+2、4-2、4*2、4/2、4%2.,C语言程序设计,第二章 数据类型、运算符与表达式,2.3 运算符和表达式,(2)自增自减运算符 有自增运算符“+”,自减运算符“-”。,说明:(1)运算除法运算符
20、时,若两个操作数都是整数时,运算结果是整数 (舍去小数部分)若其中有一个是实数,则结果是双精度实数。如:5/2结果 是2, 5.0/2结果是2.5。 (2)求余运算符“%”,又称取模运算符,要求运算对象必须是整数,结 果是求两个整数相除的余数,余数的符号与被除数的符号相同。例:8%3结果 为2, 8%4结果为0,-8%3结果是-2, 8%-3结果2。 (3)自增自减运算符是单目运算符,运算对象必须是变量,不能是常量。 +、-是使变量加一或者减一,结合方向是“从右至左”。如:i+等价于i=i+1。 (4)+、-可以做前置运算(+i,-i),也可以做后置运算(i+,i-)。 在只对变量本身进行加减
21、一,而不考虑表达式时,前置运算和后置运算效果一样。 若要是考虑表达式时,则是有区别的。如a=+i等价于a=i+1,i=i+1;a=i+等价于 a=i,i=i+1。简单的说,就是前置运算是先计算后使用,而后置运算是先使用,后 计算。,C语言程序设计,第二章 数据类型、运算符与表达式,2.3 运算符和表达式,2、算术表达式 用算术运算符或者圆括号把运算对象连接起来、符合C语言语法规则的式子, 称为算术表达式。运算对象包括常量、变量、函数等。 例:a*1/2-3+4 注意:(1)算术运算符的优先级是先乘除后加减。 (2)当优先级相同时,应按照“从左至右”的结合方向运算。,2.3.2 赋值运算符和赋值
22、表达式,1、赋值运算符 赋值运算符就是“=”。它是把一个数据赋给一个变量,如i=1,也可以将一个表 达式的值赋给一个变量,如a=1+2-3。 在赋值运算符之前加上其他运算符就构成了复合赋值运算符。如“+=”、“-=”、 “*=”、“/=”、“%=”、“long m,n; x=3/2+8/3;y=3.0/2+8/3.0; m=1*2*3*4*5*6*7*8*9;n=1L*2*3*4*5*6*7*8*9; printf(x=%f,y=%f,m=%ld,n=%ldn,x,y,m,n); 3/2结果为整数,即为1,赋值给x后,x值为1.000000,3.0/2结果为1.500000, 赋值给y后,结果
23、还是1.500000。1*2*9,结果为长整型,没加L则结果溢出在赋 给m以前就是错误的结果,所以得不到正确结果。,C语言程序设计,第二章 数据类型、运算符与表达式,2.4 数据类型的转换,2.4.2 强制类型转换,当自动类型转换不能满足需求时,可以在表达式中通过强制类型转换运算符 将运算对象强制转换成所需的数据类型。格式为:(类型标识符)表达式 如:(int)2.5%3 (float)10/4 注意: 如果要对整个表达式进行转换,表达式应整个括起来,如(float)(10/4) 强制类型转换时,得到一个所需类型的中间变量,猿类的变量类型没发生 变化,其值也未变化。 优点: (1)可以使一些不
24、合法的运算变成合法的运算。如(int)2.5%3 。 (2)防止丢失整数除法中的小数部分。如: int x=3,y=2;float f;则f=(float)x/y的结果为f=1.500000。,C语言程序设计,第三章 顺序结构程序设计,学习目标: 1、了解C语句。 2、掌握输入输出函数中格式化字符的使用。 3、掌握顺序结构中的基本语句。,3.1 C语句简介,C语言的语句是C程序的基本单位,它编译后相当于一条条指令,从而控制 机器进行相应运算,达到一定的目的。C语句分为表达式语句和流程控制语句, 表达式语句用于描述计算机要执行的操作运算,流程控制语句用于控制运算的执 行顺序。表达式语句有五种基本
25、类型:赋值语句、函数调用语句、控制语句、复 合语句以及空语句。流程控制语句有五类:条件语句、循环语句、结束循环语句、 转向语句、返回语句。 C程序的功能是通过执行语句来实现的,每一条语句都有一定的功能。下面逐 一介绍C语句的五种基本类型。 1、表达式语句 表达式语句由各种表达式加上分号“;”组成。程序中对操作对象的运算处理 大多数是通过表达式语句来实现的。最常用的就是赋值语句。,C语言程序设计,第三章 顺序结构程序设计,3.1 C语句简介,注意: 1)C语言中的赋值符号“=”是一个运算符,别的大多数语言中,赋值符号 不是运算符。 2)在其他多数高级语言中没有“赋值表达式”的概念,作为赋值表达式
26、可 以包括在其他表达式中。例如:if(a=b)0) t=a; 2、函数调用语句 在函数调用后面加上分号“;”就构成了函数调用语句。如scanf();等 3、控制语句 控制语句用于控制程序的流程,以实现程序的各种结构方式。如if语句、 while语句、break语句等。 4、复合语句 把多个语句用大括号“”括起来组成一个语句称为复合语句。在程序中要 把复合语句看成是单条语句。复合语句中的每一条语句都必须以分号结尾,但是在 “”外不能再加分号。如 int a=1,b=2,c;c=a+b; 5、空语句 只由分号组成的语句称为空语句。空语句不执行任何操作,可以作为程序 的转向点和循环语句的循环体。,C
27、语言程序设计,第三章 顺序结构程序设计,3.2 数据的输入,在程序的运行过程中,往往需要用户输入一些数据,而程序程序运算得到的结果 又要输出给用户,所以,在程序设计中,输入输出语句是不可缺少的。 在C语言中,没有专门的输入输出语句,所有的输入输出操作都是由库函数中的 输入输出函数来实现的。所以,调用输入输出函数应在调用前包含stdio.h头文件。,3.2.1 字符输入函数getchar(),其函数格式为:getchar(); 功能:用于接收从输入设备输入的一个字符。 注意:getchar后面的圆括号里没有参数,但是“()”不能省略。 例如:#include “stdio.h” /或者是 mai
28、n() char a; a=getchar();/输入一个字符给a printf(“a=%c”,a); ,C语言程序设计,第三章 顺序结构程序设计,3.2 数据的输入,3.2.2 格式输入函数scanf(),其函数格式为:scanf(“格式控制”,地址表列); 功能:从键盘输入数据,所输入的数据按指定的格式被赋值给相应的输入项。 例如:int a,b;scanf(“%d,%c”, scanf(“a=%d,b=%d”, 运行,输入a=2,b=3 得到结果:a+b=5 检查结果,正确。,C语言程序设计,第三章 顺序结构程序设计,补充:原码、反码、补码(以下数值均用8位二进制表示) 原码 就是二进制
29、定点表示法,即最高位为符号位,“0”表示正,“1”表示负, 其余位表示数值的大小。表示范围 (-127-0 +0127)共256个。 反码 表示法规定:正数的反码与其原码相同;负数的反码是符号位不变,其余位按位取反。表示范围(-127-0 +0127)共256个。 补码 表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。表示范围 (-1280127)共256个。 原码:如+11的原码为00001011,-11的原码就是10001011 。则8位二进制原码的表示范围:-127+127 。注意:数0的原码有两种形式:+0原=(00000000)B -0原=(10000000)B
30、。 但是原码不能直接参加运算,可能会出错。例如数学上, 1+(-1)=0,而在二进制中,原码00000001+10000001=10000010, 换算成十进制为130。显然出错了。 反码:如+11的反码为00001011,-11的反码为11110100。则8位二进制反码的表示范围:-127+127 。注意:数0的反码也有两种形式,即 +0反=00000000B - 0反=11111111B 。 反码直接参加运算,也可能会出错。如反码1+(-1)即为00000001 +11111110=1111 1111,即为-0,显然有问题。,C语言程序设计,第三章 顺序结构程序设计,补码: 1、在计算机系
31、统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。在补码中用(-128)代替了(-0),所以补码的表示范围为: (-1280127)共256个。 3、 “模”是一个计量系统的计数范围,如时钟、计算机等都是这样的计量系统。时钟的模为12,计量范围是0-11(其中12即0)。若时钟指向10,而准确时间为6,如何调整?一种倒拨4个小时,即10-4=6;另一种顺拨8个时,即10+8=10+2+6=6。对于计算机,概念相同,n
32、位计算机,设n=8,则最大能表示数为11111111,再加1,则为100000000(9位),高位会溢出,又变为00000000。即8位二进制系统的模为28。这样减法运算都可以换成加法运算,只需把减数用相应补数表示即可。把补数用到计算机对数的处理上,就是补码。 (计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法 。) 注意: 1、采用补码后,可以方便地将减法运算转化成加法运算,运算过程得到简化。采用补码进行运算,所得结果仍为补码。,C语言程序设计,第三章 顺序结构程序设计,2、与原码、反码不同,数值0的补码只有一个,即 0补=00000000B。 3、若字长为8位,则补码所表
33、示的范围为-128+127;其中,-128的原码即为-0的原码为10000000。进行补码运算时,应注意所得结果不应超过补码所能表示数的范围。 补码和原码的转换过程:补码转换成原码,和原码转换为补码,过程一样。 补码运算方法 :X+Y补 = X补 + Y补 例1:1-1 十进制 换成加法 1+(-1) 1的原码00000001 转换成补码:00000001,-1的原码10000001 转换成补码:11111111 ,00000001+11111111=00000000 转换成十进制为0 例2:-7-(-10) 十进制 (-7+10) -7的补码:11111001 ,10的补码:00001010
34、 11111001+ 00001010=00000011转换成十进制为3 补码的设计目的: (1)使符号位能与有效值部分一起参加运算,从而简化运算规则; (2)使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。 所以,要注意进行转换。 (3)统一+0和-0。原码不同,但是补码相同,为0000 0000。,C语言程序设计,第四章 选择结构程序设计,学习目标: 1、了解选择结构程序的设计思路(算法流程图)。 2、掌握if语句和switch语句(选择结构的用法)。 3、掌握选择结构的嵌套。,4.1 选
35、择结构的设计思路,选择结构,也叫分支结构,是对给定的条件进行判断,并根据逻辑结果选择执行 语句的结构。,表达式,语句序列1,语句序列2,单双分支选择用ifelse,格式:if(条件) 语句序列1;else 语句序列2; 若单双分支不能满足情况,则有多分支选择(if语句嵌套、switch语句)。,真,假,C语言程序设计,第四章 选择结构程序设计,选择结构设计要考虑四大要素: 1、条件是什么?(即寻找合适的条件表达式。) 2、条件为真时,执行什么?(确定语句序列1中的语句。) 3、条件为假时,执行什么?(确定语句序列2中的语句。) 4、汇合点在哪?(确定执行语句序列1或2后应该执行的第一条语句。)
36、,补充:算法流程图 在程序分析的算法设计中,可用算法流程图来详细直观的表示程序的各个步骤, 根据流程图,能准确、快速的写出源程序。 算法流程图的各个操作框说明如下:,起止框,输入输出框,判断框,处理框(处理计算等),流程线,C语言程序设计,第四章 选择结构程序设计,例子:输入2个不同的数,判断并输出较大的数。 根据题意,可画出算法流程图如下:,开始,结束,输入a,b,ab,max=a,max=b,输出max,Y,N,C语言程序设计,第四章 选择结构程序设计,C语言提供了三种形式的if语句,下面分别介绍。 1、单分支选择语句 if 一般形式:if(表达式) 语句; 意义:若表达式为真时,执行语句
37、,否则退出该if语句。 例子:输入两个整数,输出其中较大的数。分析四要素: (1)(条件是什么?)取xy或者xy) max=x; printf(“max=%dn”,max); ,4.2 if语句,C语言程序设计,第四章 选择结构程序设计,2、双分支选择语句 if-else 一般形式:if(表达式) 语句1;else 语句2; 意义:若表达式为真时,执行语句1,否则执行语句2。 例子:输入两个整数,输出其中较大的数。四要素: (1)(条件是什么?)取xy或者xy) max=x; else max=y; printf(“max=%dn”,max); 课本例子4-3在执行完if-else语句后,又执
38、行一次if语句,分析意义是什么?,C语言程序设计,第四章 选择结构程序设计,3、if语句的嵌套 if-else if 一般形式:if(表达式1) 语句1; else if(表达式2)语句2; else if(表达式3)语句3; else if(表达式4)语句4; else 语句n+1; 意义:从表达式1开始依次往下检查表达式的值,直到找到值为真的表达式 i时,执行语句i。若所有表达式值均为假,则最后执行语句n+1。 例:输入3个整数,输出其中最大的数。 main() int a,b,c,max; scanf(“%d,%d,%dn”, ,C语言程序设计,第四章 选择结构程序设计,注意: 当if语
39、句嵌套使用时,会出现if与else配对的问题。C的编译系统的原则是: else总是与它前面且离它最近的尚未配对的if配对。为了避免配对错误, 通常用将if-else语句结构括起来,书写、阅读时条理清晰。 如: (1) if(a=0) if(a0) printf(“a0n”); else printf(“a=0)if(a0) printf(“a0n”); else printf(“a0n”); 分析(1)和(2)程序段中的区别。,4.3 switch语句,if嵌套虽然也能满足多分支选择的需要,但是程序书写复杂,容易出错,所以 可以用switch语句来替代,是程序更加简洁,条理清楚,便于阅读和理解
40、。 switch语句一般格式: switch(表达式) case 常量表达式1:语句组1; case 常量表达式2:语句组2; case 常量表达式n:语句组n; default:语句组n+1; ,C语言程序设计,第四章 选择结构程序设计,功能: 先计算表达式的值,然后与case后的常量表达式的值比较,相等时,执行后面 的语句组,均不等时,则执行default后的语句组。 注意 :(1)default和语句组n+1可以省略。若没有时,当表达式的值和所有常量 表达式值均不等时,将不执行switch中任何语句,跳出switch语句。 (2)switch后面的表达式一般是整数表达式或者字符表达式,c
41、ase后面应 是一个整数或者字符,也可以是不含变量与函数的常数表达式。同一个switch 中的任两个case后面的常量表达式的值不能相同。 (3)switch语句中的case和default出现的次序是任意的。 (4)switch语句执行完某个case后的语句组后,将自动转到该语句后面的 语句组中去执行,直到遇到switch语句的右括号或者break为止。 例: switch(1) case 1:x=1;break; case 2: x=2; break; 分析后面加与不加break有什么不同。 (5)switch结构允许嵌套。,C语言程序设计,第四章 选择结构程序设计,例子:由键盘输入一个成
42、绩,然后输出相应的等级,90-100优(A),80-89良(B) 70-79中(C),60-69及格(D),0-59不及格(E)。 main() int s; scanf(“%dn”, ,C语言程序设计,第五章 循环结构程序设计,学习目标: 1、了解循环结构程序的组成和分类。 2、掌握while语句、do-while语句和for语句的用法、区别。 3、掌握跳出循环语句break和continue,以及它们的区别。,5.1 循环结构程序的组成,循环结构的特点是:在给定的条件成立时,反复执行某个程序段。给定条件就循 环条件,反复执行的程序段叫循环体。 这里重点讲解当型和直到型循环语句。当型(whi
43、le、for)语句是把循环条件放在 循环入口,先判断条件真假,真时执行循环体,假时退出循环。直到型则是先执行循 环体,再判断循环条件,真时继续执行循环体,假时退出循环。 循环三大要素: 1、循环的初始状态。循环以什么情况开始。 2、循环体。每次循环要做什么。由工作部分和修改部分组成。 3、循环控制部分。控制循环的运行和结束。,C语言程序设计,第五章 循环结构程序设计,5.2 while语句,while语句是当型结构,一般格式如下: while(表达式) 循环体 功能:先计算表达式的值,若为真,执行一次循环体。然后再判断表达式的值, 然后执行一次循环体。直到表达式的值为假。即先判断,后执行。 注
44、意:1、若循环体是一个以上语句,要用组成复合语句。 2、循环体内要有修改表达式值得语句,使循环条件逐渐趋向于假。 例1:求1到100之和。/求1到5的平方和。 main() int sum=0,i=1; while(i=100) sum=sum+i; i+; printf(“sum is %dn”,sum); ,C语言程序设计,第五章 循环结构程序设计,例2:编程求2+4+6+100的结果。思考如何修改例1从而得到想求结果?,5.3 do-while语句,do-while语句是直到型结构,一般形式如下: do循环体 while(表达式); 功能:先执行循环体,再计算表达式的值,若为真,则继续执
45、行循环体,直到表达 式值为假,结束循环。即先执行后判断。 例3:求1+2+100的和(用do-while语句实现)。 main() int sum=0,i=1; do sum=sum+i; i+; while(i=100); printf(“sum is %dn”,sum); ,C语言程序设计,第五章 循环结构程序设计,5.4 for语句,注意:while和do-while处理同一问题时,二者可以互相转换,循环体一样,得到就 结果一样。但是,若表达式的值一开始就是假,则结果不同。 如:例子1和例子3中i的初值为101,试分析两种循环的结果。,for语句也是直到型结构,但是其功能更强,使用范围更
46、广,更灵活,完全可以替 代while语句和do-while语句。 一般形式: for(表达式1;表达式2;表达式3 ) 循环体 功能:先计算表达式1的值,再判断表达式2,若为真,则执行循环体,再计算表 达式3,然后再判断表达式2,直到表达式2的值为假则退出循环。通常表达式1用来给 变量赋初值,表达式2用于判断循环是否继续,表达式3用来使循环趋于结束。 例4:求1+2+100的和(用for语句实现)。 main() int sum,i; for(sum=0,i=1;i=100;i+) sum=sum+I; printf(“sum is %dn”,sum); ,C语言程序设计,第五章 循环结构程序
47、设计,例5:求1到5的平方和。 注意:1、for语句能转换为while和do-while语句。 2、for语句循环体可以是基本语句也可以是复合语句,还可以是空语句。 3、for语句中的表达式可以部分省略,但分号不能省略。 4、for后面的圆括号里可以是任意表达式。,5.5 循环控制语句,根据情况需要,有时候循环程序需要改变正常流程,这时候就要用到流程控制语句。 如break和continue语句,即可控制循环程序的执行流程,使其立即终止操作。 1、break语句 一般形式:break; 功能:1)用于在switch语句中case分支,跳出switch结构。 2)用于循环语句,立即终止其所在循环
48、结构。 例6:找出100到300之间第一个能被17整除的数。,C语言程序设计,第五章 循环结构程序设计,main() int i; for(i=100;i=300;i+) if(i%17=0) printf(“%dn”,i); break; 2、 continue语句 一般格式: continue; 功能:中断循环体的本次循环,跳过循环体中尚未执行的语句,立即执行下一次循环。,C语言程序设计,第五章 循环结构程序设计,例7:求100到200之间不能被7整除的数,并输出。 main() int i; for(i=100;i=200;i+) if(i%7=0) continue; printf(“
49、%dn”,i); 注意: break和continue的区别 1、break语句是用来结束整个循环, continue语句是用来结束本次循环,继续 下一次循环。 2、break语句,可以用在switch语句与循环语句中, continue只能用在循环语 句中。,C语言程序设计,第五章 循环结构程序设计,5.6 循环的嵌套,在一个循环的循环体内又包含另一个完整的循环结构称为循环的嵌套。前面所学 3种循环可以互相嵌套。 例8:编程打印输出下面图形 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2
50、3 4 5 6 7 8 9 分析:行列分开,可看成两个循环结构嵌套。共9行,每行数字个数,是其所在行的 位数。,C语言程序设计,第五章 循环结构程序设计,main() int m,n; for(n=1;n=9;n+) for(m=1;m=n;m+) printf(“%-4d”,m); printf(“n”); 注意:1、外层循环应“完全包含”内层循环,不能交叉。 2、内外层循环变量不能同名,以免出错。 3、可用缩进格式来明确嵌套循环的层次关系。,C语言程序设计,第六章 数组,学习目标: 1、掌握一维数组和二维数组的定义、初始化、引用。 2、掌握字符数组的使用。 3、掌握常用字符串处理函数。,数
51、组是构造型数据的一种。数组中存放的是一组数据类型相同、按顺序排列的 数据。这些数据在内存中占相邻的一批内存单元。数组有一个统一的名称为数组名, 每个数组元素的名字是有数组名和其在数组中的位置决定的。 数组按照其表示变量的维数又可以分为一维数组、二维数组、三维数组等。二 维以上的数组被称为多维数组,在形式上以数组名后所带下标的数目决定。,6.1 一维数组,6.1.1 一维数组的定义 一维数数组在形式上,后面只有一个下标。定义形式为: 类型说明符 数组名常量表达式 如 int a10; int表示数组元素的类型为整型,a为数组名,10为元素个数,即数组长度。 中必须是整型类型,可以是常量、符号常量
52、,不能是变量。,C语言程序设计,第六章 数组,说明: 1)数组名的命名规则与变量名相同,遵循标识符的命名规则。 2)数组名后面是方括号,不能是圆括号。 3)常量表达式即数组元素的个数。例如a10中有10个元素,下标从0开始。 a0,a1,a2a9 4)在定义的时候,常量表达式可以是常量和符号常量,不能是变量。 判断以下定义是否正确:int a(20); float b10.0; int xx+5; int cx; 6.1.2 一维数组元素的引用 数组必须先定义,后使用。C语言规定:只能逐个引用数组元素,而不能一次引 用整个数组。 一维数组元素的引用格式:数组名下标 下标可是整型常量、整型变量、
53、整型表达式。若数组长度为x,则数组下标的取 值范围是0 x-1,0为下限,x-1为上限。数组长度作为下标只有在定义的时候出现。 6.1.3 一维数组的初始化 一维数组的初始化就是给一维数组赋初值,格式为: 数据类型 数组名数组长度=值1,值2,值n 数组初始化赋值方式只能用于数组的定义时,定义以后再赋值只能逐个元素赋值。 数组赋初值的初始化有以下几种方法:,C语言程序设计,第六章 数组,(1)完全赋值 int a5=1,2,5,4,7; (2)部分赋初值 int a5=1,2,5; 剩余元素被初始化为0. (3)不指定长度赋初值 int a =5,4,3,6,7,1;根据提供的初值个数自动取长度,此处为6. (4)不赋初值 static int a6;对静态数组和全局型的数组如不赋初值,则系统全部赋0. 例:从键盘输入10个整数,输出最大的那个数。 main() int a10,i,big; for(i=0;ibig) big=ai; printf(“big is %dn”,big); ,C语言程序设计,第六章 数组,6.2 二维数组,6.2.1 二维数组的定义 二维数组是后面有两个下标的数组,定义形式为: 类型说明符 数组名 常量表达式1常量表达式2 如int a34;它是一个3行4列的矩阵数组,元素个数为行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绿化作业安全与技术交底培训课件
- 2026年青海省安全生产月知识考试试题及答案
- 2026年员额检察官考试题及答案全套试题及答案
- 太湖流域农业面源污染负荷评估规范
- 2026年证券金融行业技术革新分析报告
- 2026年宁都县选调县直事业单位工作人员15人考试参考试题及答案详解
- 2027中交广州航道局有限公司秋季校园招聘笔试模拟试题及答案详解
- 江安县总医院2026年第二次公开招聘员额制人员(21人)笔试参考题库及答案详解
- 2025年中国ESG投资发展现状与趋势分析报告
- ISO 877-12025 塑料太阳辐射暴露方法第1部分一般指南标准立项发展报告
- JJG 688-2025 汽车排放气体测试仪检定规程
- 化工园区公共管廊钢结构工程竣工验收报告
- 河北省2026中考语文作文真题解读及范文
- 2026年养老机构管理人员综合能力测试题
- 数据中心运维管理SOP文件
- 《外婆的澎湖湾》课件2025-2026学年湘艺版三年级下册音乐
- 8D报告培训教材
- 《网络与新媒体营销》课件 第四章 新媒体营销思维
- 防范鼠疫应急预案(3篇)
- 产后伤口感染预防
- B站BiliiliWorld招商策划通案
评论
0/150
提交评论