C语言程序设计实用教程.ppt

上传人:小飞机 文档编号:5426423 上传时间:2023-07-05 格式:PPT 页数:151 大小:604KB
返回 下载 相关 举报
C语言程序设计实用教程.ppt_第1页
第1页 / 共151页
C语言程序设计实用教程.ppt_第2页
第2页 / 共151页
C语言程序设计实用教程.ppt_第3页
第3页 / 共151页
C语言程序设计实用教程.ppt_第4页
第4页 / 共151页
C语言程序设计实用教程.ppt_第5页
第5页 / 共151页
点击查看更多>>
资源描述

《C语言程序设计实用教程.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程.ppt(151页珍藏版)》请在三一办公上搜索。

1、,C语言程序设计实用教程,第1章 C 语言概述,第2章 数据及其运算,第3章 程序的流程控制,第4章 数组,第5章 模块化程序设计,第6章 结构体、共用体和枚举类型,第7章 文件,第8章 综合实训,目录,C语言发展及特点,Turbo C的操作环境,VC+6.0的操作环境,简单的C程序介绍,C程序的上机执行过程,第1章 C 语言概述,本章小结,返回,1.1 C语言发展及特点,返回,1C语言的发展C语言是在早期的B语言的基础上发展起来的。1960年出现的ALGOL-60是一种面向问题的语言,过于抽象,难以描述系统,没有得到真正的推广。1963年由英国剑桥大学推出了CPL(Combined Prog

2、ramming Language)语言。1967年英国剑桥大学的Matin Richards对CPL作了简化,推出了BCPL(Basic Combined Programming Language)语言。1970年由美国贝尔实验室的Ken Thompson设计的B语言又对BCPL进一步简化。1972年至1973年,贝尔实验室的在B语言基础上设计出了C语言,取BCPL中的第二个字母来命名。1990年国际标准化组织ISO(International Standard Organization)接受87 ANSI C为ISO C的标准(ISO 98991990)。,返回,2C语言的特点(1)语言简洁

3、、紧凑,使用方便、灵活。(2)数据类型丰富。C语言的数据类型包括整型、实型、字符型、枚举型、结构体、共用体、数组和文件类型、指针类型、空类型等。(3)运算符丰富。一共有44种运算符。(4)函数是程序的主体。(5)语法检查不太严格,程序书写自由度大。(6)C语言允许直接访问物理地址。(7)生成的目标代码质量高,程序执行效率高。(8)可移植性好。,1.1 C语言发展及特点,1.2 Turbo C运行环境,返回,1Turbo C的系统配置Turbo C只要求很少的系统资源。它仅占用384KB内存,其系统文件占用的磁盘空间不到3MB。Turbo C一般要求微机有两个驱动器(一个硬盘驱动器和一个软盘驱动

4、器),对显示器无特殊要求,也不要求有鼠标器。Turbo C是基于DOS平台的C编译系统,要求在计算机上安装DOS2.0或更高的DOS版本。2进入Turbo C在Windows操作系统下,进入Turbo C环境可以用以下两种方法进行操作。(1)可以在桌面上选择“开始”菜单中的“所有程序”,选择“附件”中的“命令提示符”,(2)通过“资源管理器”找到文件夹TC中的tc.exe文件,双击该文件名,即可进入Turbo C环境。,1.2 Turbo C运行环境,返回,Turbo C操作界面,1.3 Visual c+6.0运行环境,返回,打开VC6环境,选择VC6运行程序,1.3 Visual c+6.

5、0运行环境,返回,VC6操作环境,1.3 Visual c+6.0运行环境,返回,“新建”对话框,1.4 简单的C程序介绍,返回,例1-1 一个简单的C程序示例。main()printf(This is a C program.n);运行结果:This is a C program.说明:main()表示主函数。每个C程序都必须有一个且只有一个main()函数。函数体由大括号括起来。printf()是C语言的输出函数。n是转义字符,表示换行符。语句最后有分号;。,1.4 简单的C程序介绍,返回,例1-2 求两个数的和。#include stdio.h/*文件包含*/main()/*主函数*/i

6、nt a,b,c;/*定义变量,int表示整型*/a=4;/*给变量赋值*/b=6;c=a+b;printf(sum=%dn,c);/*调用输出函数printf()输出结果*/运行结果:sum=10说明:使用变量时要先定义再使用。printf()是系统函数,包含在stdio.h头文件中。由于printf()函数经常使用,因此文件包含可以省略,如:例1-1。/*/表示注释,非执行部分。,1.4 简单的C程序介绍,返回,例1-3 通过自定义函数实现计算三个数的平均值。#include stdio.h float average(float x,float y,float z)/*自定义函数头部定义

7、部分*/float aver;/*定义变量,float表示实型*/aver=(x+y+z)/3;return(aver);/*函数通过return语句返回函数值*/main()float a,b,c,ave;a=3.5;b=4.6;c=7.9;ave=average(a,b,c);/*调用自定义函数average(),同时将a,b,c的值传给x,y,z,得到函数的值赋给变量ave*/printf(average=%f,ave);运行结果:average=5.333333说明:程序中可以使用系统函数,也可以使用自定义函数。return是函数返回语句,没有返回值时可以省略,返回,从上面的程序可以看

8、出以下几点:(1)一个C程序可以由多个文件构成,每个文件可以由几个函数构成。每个函数完成一个特定的功能,它由一组语句组成。自定义函数的一般形式:函数返回值类型 函数名(函数形参表)声明部分执行部分return 表达式;(2)一个完整的C程序必须有一个主函数,名为main(),(3)程序中用到的变量要先定义后使用。(4)由#开头的行称为宏定义或文件包含,末尾无分号。(5)语句必须以分号(;)结束。(6)可以用/*/对C程序中的任何部分作注释,以增强程序的可读性。可以在任何允许插入空格符的地方插入注释,但注释不能嵌套。(7)C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf()和pr

9、intf()等来完成。,1.4 简单的C程序介绍,1.5 C程序的执行过程,返回,1程序执行过程,键盘输入源程序 f.c磁盘文件 f.obj f.exe 结果,2常见错误分析(1)语法错误。(2)逻辑错误。(3)运行错误。,本章小结,本章主要介绍了C语言的发展、C语言的特点、C语言的运行环境、简单的C程序的组成、C程序的运行过程。通过本章的学习,使学生对C语言有个大致的了解,熟悉C语言的运行环境,了解如何使用C语言编写简单的程序来解决实际问题。,返回,关系运算,逻辑运算,位运算,第2章 数据及其运算,本章小结,返回,数值型数据的特征,数据常量,数据变量,算术运算,返回,2.1 数值型数据的特征

10、,返回,1数值的表示形式定点表示和浮点表示是C语言基本数据类型的重要特征。凡不带指数部分的数称为定点数。如:3.14,10,-12等。整数都属于定点数。如果数值以指数形式表示,小数点的位置可以是浮动的,称之为浮点数形式。在C语言中采用科学记数法,即e或E加或减一个整数的方法来表示,如:31.4E-1。2整数的有符号类型与无符号类型数值是以补码形式存放的。一个正数的补码就是该数的二进制数,负数补码的求解过程为:先取该数的绝对值;然后以二进制数的形式表示;再对其按位取反;然后末尾加1。无符号数的含义是指最高位不表示符号,也是数值的一部分。因此,无符号的整数与有符号的整数差别比较大。如:-12的存储

11、形式如果表示无符号数,则为65524。注意:在C语言中,实数都是有符号数。,2.2 常量与变量,返回,常量分为不同的数据类型,如整型常量、实型常量、字符常量和字符串常量等。整型常量整型常量即是整数,包括正整数、负整数和0。在语言中整型常量有三种表示形式:十进制整数:有效数字为09。如20、-123。八进制整数:有效数字为07,且以0开头。如020表示八进制数20。十六进制整数:有效数字为09和af(或AF),且以0 x开头。如0 x20表示十六进制数20,等价于十进制数32。浮点型常量浮点型常量也称“浮点数”,即实型常量,也就是带小数点的数 浮点型常量有两种表示形式:十进制小数形式。由正、负号

12、、数字09和小数点组成 指数形式(或称科学记数法)。由正、负号、数字09、小数点和字母e(或E)组成,它的表示形式为:men或mEn,表示m10n,,2.2 数据常量,返回,字符常量用一对单引号括起来的一个字符称为字符常量。如:a、7、#等。以“”开头的字符序列,称为“转义字符”,用来表示一些难以用一般形式表示的字符。,2.2 常量与变量,2.2 数据常量,返回,字符串常量字符串常量是用一对双引号括起来的一个字符序列。字符序列中含有字符的个数称为字符串的长度。说明:字符串常量在存储时除了存储双引号中的字符序列外,系统还会自动在最后一个字符的后面加上转义字符0,所以一个字符串常量在内存中所占的字

13、节数是字符串长度加1。如china的长度为5,而在内存中占的字节数为6。0是ASCII码为0的空操作字符,C语言规定用0作为字符串的结束标志,以便系统根据它来判断字符串是否结束。字符串常量中的字符可以是转义字符,但它只代表一个字符。如:字符串abncd 的长度是6,而不是8。在C语言中没有专门的字符串类型,需要使用字符型数组,即用一个字符型数组来存放一个字符串,数组中的每个单元存放该字符串中一个字符。也可以用一个标识符代表一个常量的符号,称为符号常量。符号常量定义的一般形式:#define 标识符 常量值,2.2 常量与变量,2.2 数据常量,2.3 数据变量,返回,在程序运行过程中,其值可以

14、变化的量称为变量。变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。,2.3 数据变量,返回,1标识符的命名规则给变量、符号常量、函数、数组、数据类型等对象命名的有效字符序列统称为标识符。语言规定标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。变量使用之前要先定义类型。变量定义的一般形式:类型标识符 变量名如:int a;说明:(1)变量名不能是关键字(即保留字,是C编译程序中保留使用的标识符)。(2)可以同时定义两个或两个以上的变量,变量名之间用逗号间隔。(3)尽可能做到变量名“见名知义”。(4)C语言区分英文大小写字母。如:a1和A1是两个不同的

15、标识符。(5)对所有用到的变量做强制定义,也就是“先定义,后使用”。(6)语言允许在函数内部或函数外部定义变量同时给变量赋初值,称为变量的初始化。,2.3 数据变量,返回,2基本数据类型(1)整型变量(2)浮点型变量,2.3 数据变量,返回,(3)字符型变量(4)指针变量 指针即是地址,是常量。指针变量是一种特殊类型的变量,即存放指针(地址)的变量,而这个地址往往是其他变量的地址(其在内存中的存储位置)。指针变量定义的一般形式:类型标识符*变量名如:int a=10,*p;p=含义是把变量a的地址赋给指针变量p,此时称指针变量p“指向”整型变量a,见下图。,2.4 算术运算,返回,1算术运算符

16、在C语言中,用算术运算符和圆括号将运算对象连接起来的,并且符合C语言语法规则的式子称为算术表达式。(1)双目算术运算符+加法运算符-减法运算符*乘法运算符/除法运算符%取余(模)运算符(2)单目运算符-负号运算符,取操作对象的负数。+自增运算符,使变量的值增1。j=+i;/*前缀式,先将i的值加1,然后再赋给j*/j=i+;/*后缀式,先把i的值赋给j,然后将i的值加1*/-自减运算符,使变量的值减1。-(取负)、+和-的结合性为右结合,+、-、*、/和%的结合性为左结合。当运算符+、-和运算符+、-进行混合运算时,C语言规定,自左向右尽可能多的组成运算符。,2.4 算术运算,返回,2数据类型

17、转换(1)自动数据类型转换转换的规则是:若为字符型必须先转换成整型,即其对应的ASCII码值;若为单精度型必须先转换成双精度型;若运算对象的类型不相同,将低精度类型转换成高精度类型。精度从低到高的顺序是:intunsignedlongdouble(2)强制数据类型转换强制类型转换的一般形式:(类型标识符)(表达式)如:(int)(x+y):将x+y 的值转换成整型(int)x+y:将x 的值转换成整型 说明:类型标识符必须用圆括号括起来。强制数据类型转换只是得到一个所需类型的中间值,原来说明的数据类型并没有改变。由高精度类型转换成低精度类型可能会损失精度,2.4 算术运算,返回,3赋值运算符(

18、1)赋值运算符 基本赋值运算符:=它的作用是将赋值运算符“=”右侧的数据赋给左侧的变量。如:a=12;的作用是将常量12赋给变量a。也可以将一个表达式的值赋给一个变量。如:a=3+5;把3+5的和8赋给变量a。复合赋值运算符+=如:a+=3,表示a的值加上3的结果再赋给a。-=如:a-=3,表示a的值减去3的结果再赋给a。*=如:a*=3,表示a的值乘以3的结果再赋给a。/=如:a/=3,表示a的值除以3的结果再赋给a。%=如:a%=3,表示a的值除以3的余数再赋给a。赋值运算符都是双目运算符,用赋值运算符实现对变量进行赋值运算。,2.4 算术运算,返回,(2)赋值表达式 基本赋值表达式基本赋

19、值表达式的一般形式:变量名=表达式其求解过程是:先计算赋值运算符右侧表达式的值,然后将其赋给左侧的变量。复合赋值表达式复合赋值表达式的一般形式:变量op=表达式其中:op+,-,*,/,%,&,|,其等价于:变量=变量op(表达式)(3)优先级所有赋值类运算符的优先级相同,除逗号运算符外,赋值类运算符的优先级是最低的。(4)结合性赋值运算符的结合性都是右结合。可以连续给变量赋值。如:a=b=c=10 等价于 a=(b=(c=10),2.4 算术运算,返回,4逗号运算符逗号运算符:“,”。逗号运算符的优先级是C语言所有运算符中最低的,结合性为左结合,逗号运算符是双目运算符。逗号表达式是由一系列逗

20、号隔开的表达式组成,逗号表达式的一般形式:表达式1,表达式2,表达式3,表达式n其中,方括号内的内容为可选项。表达式i(1in)的类型任意。逗号表达式的求解过程是:从左向右依次计算每个表达式的值,逗号表达式的值就是最右边表达式的值,逗号表达式值的类型就是最右边表达式值的类型。,2.5 关系运算,返回,1关系运算符语言规定了六种关系运算符:大于=大于或等于3*c(512)关系不成立,表达式结果值为0(假),2.5 关系运算,返回,3关系运算符的优先级与结合性(1)优先级6个关系运算符的优先级分为两级:高级:、=低级:=、!=关系运算符的优先级低于算术运算符,高于赋值运算符。如:a+bc+d 等价

21、于(a+b)(c+d)(2)结合性关系运算符的结合性都为左结合。如:abc 等价于(ab)c根据运算符的优先级和结合性,表达式3=4+12!=5的求解过程为:算术运算4+1的结果为5(表达式3=52!=5);关系运算52的结果为1(表达式3=1!=5);关系运算3=1的结果为0(表达式0!=5);关系运算0!=5的结果为1,即整个表达式的结果为1。,2.6 逻辑运算,返回,1逻辑运算符C语言提供3种逻辑运算符:&逻辑与|逻辑或!逻辑非其中&和|是双目运算符,!是单目运算符。2逻辑表达式用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。如果a、b为运算对象,则逻辑运算符的运算规则为:(1)a

22、&b:只有a、b同时为真时,逻辑表达式的值才为真,否则为假。(2)a|b:当a、b同时为假,逻辑表达式的值才为假,否则为真。(3)若a为真,则!a为假;若a为假,则!a为真。,2.6 逻辑运算,返回,3逻辑运算符的优先级与结合性(1)优先级3个逻辑运算符优先级从高到低的顺序为:!&|(高)(低)(2)结合性&和|的结合性为左结合,!的结合性为右结合。如:ab&cd&ef 等价于(ab)&(cd)&(ef)!(ab)等价于!(!(!(ab)注意:在逻辑表达式的求解过程中,并不是所有的逻辑运算对象都被执行,只有在必须执行下一个逻辑运算才能求出表达式的值时,才执行该运算对象。,2.7 位运算,返回,

23、C语言提供了六种位运算符:&按位与|按位或 按位异或 取反 右移说明:(1)位运算符除“”以外,均为双目运算符,即要求两侧各有一个操作对象。(2)操作数只能是整型或字符型的数据,不能为实型数据。(3)操作数以补码方式存储。(4)位运算的优先级为:、&、|高 低,2.7 位运算,返回,1按位与运算 按位与运算符(&)的功能是参加运算的两个数按其对应的二进制位相与。只有对应的两个二进制位均为1时,结果该位才为1,否则为0。运算规则为:000;010;100;111;按位与具有如下特征:(1)任何位上的二进制数,只要和0“与”,该位即被屏蔽(清0);(2)任何位上的二进制数和1“与”,该位保留原值不

24、变。按位与运算符通常有以下特殊用途:(1)用来对某些位清0。如果想将一个数据的全部二进位设置为0,可找一个二进制数,原来的数中为1的位,新数中对应位置的数取0,其余各位的数任意,再将新数与原数进行按位与运算。(2)保留指定位。如果想将一个数据的哪些位保留下来,可先设一个对应位置为1的新数,再将新数与原数进行按位与运算。,2.7 位运算,返回,2.按位或运算 按位或运算符(|)的功能是参加运算的两个数按其对应的二进制位相或。只有对应的两个二进制位有一个为1,该位的运算结果就为1;只有当两个相应位的数都为0时,该位的运算结果就为0。运算规则为:000;011;101;111;按位或具有如下特征:(

25、1)任何位上的二进制数和1“或”,该位即被指定为1;(2)任何位上的二进制数和0“或”,该位不变。位或运算符通常用来对某些位置1或保留某些位。如:把a的高4位不变,低4位置1,可进行a|15 运算(15的二进制数为00001111)。,2.7 位运算,返回,3.按位异或运算按位异或运算符()的功能是参与运算的两个对象对应的二进制位相异或,当对应的二进位不相同时,结果为1;相同时,结果为0。运算规则为:000;011;101;110;按位异或具有如下特征:(1)对应位上的数相反,结果为1;(2)对应位上的数相同,结果为0。可使用“”运算符来实现以下功能:(1)使特定位翻转。假设有01110110

26、,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行运算。(2)与0异或,保留原值。(3)交换两个值,不用临时变量。想将a和b互换,可以用这三个语句实现:a=ab;b=ba;a=ab;,2.7 位运算,返回,4.求反运算求反运算符()为单目运算符,具有右结合性。其功能是对参与运算的数的各二进制位按位求反。运算规则为:10;01;5.左移运算左移运算符()的功能与左移运算符相反,它是把“”左边的操作数的各二进制位全部右移“”右边指定的位数。右移时,右端移出的二进制数舍弃;左端移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。如:设 a=15,a

27、2;表示把00001111右移2位后为00000011(十进制3)。它在右移时,符号位将随同移动。它为正数时,最高位补0。若a=-15,a2;表示把11110001右移2位后为11111100(十进制-4)。它在右移时,最高位补1。,2.7 位运算,返回,7复合赋值运算符位运算符与赋值运算符可以组成复合赋值运算符。有:&=、|=、=、=、=。如:a&=b 相当于a=a&b a=2相当于a=a2前面我们已经介绍过,位运算的对象可以是整型(long int 或 int)和字符型(char)数据。当两个运算对象类型不同时位数也不同。遇到这种情况,系统将自动进行如下处理:(1)首先将两个运算对象右端对

28、齐。(2)再将位数短的一个运算对象往高位扩充,即:无符号数和正整数左侧用0补齐;负数左侧用1补齐,然后对这两个长度相等的两个运算对象,按位进行运算。,本章小结,本章主要介绍了C语言中的常量和变量、算术运算、关系运算、逻辑运算、赋值运算、位运算、逗号运算和指针。通过本章的学习,清楚C语言中各种常量、变量、运算符和表达式的规则;了解字面常量和符号常量的特点;掌握C语言中各种运算符的功能,运算符要求运算对象的个数,运算符要求运算对象的数据类型以及运算符的优先级和结合性;熟悉各种表达式值的数据类型;理解指针的概念,掌握指针变量的定义和使用的方法。,返回,算法,输入输出函数,选择结构程序设计,第3章 程

29、序的流程控制,本章小结,返回,循环结构程序设计,3.1 算法,返回,1算法及基本性质算法就是进行操作的方法和操作的步骤。算法含有两大要素:(1)操作。每个操作的确定不仅取决于问题的需求,还取决于它们取自哪个操作集合,与具体使用有关。在高级语言中所描述的操作主要包括:算术运算、关系运算、逻辑运算等。计算机算法是由这些操作组成的。(2)控制结构。每一个算法都要由一系列的操作组成。控制结构即如何控制组成算法的各操作的执行顺序。结构化程序设计方法要求:一个程序只能由三种基本控制结构组成:顺序、选择和循环。通常认为算法有如下的性质:(1)解题算法是一个有穷动作序列;(2)此动作序列只有一个初始动作;(3

30、)序列中每一动作仅有一个后续动作;(4)序列终止表示问题得到解答或问题没有解答。,3.1 算法,返回,2算法的描述算法的描述方法很多,比如流程图、N-S图、PAD图、伪代码等。下面介绍三种结构的流程图、N-S图的画法。(1)顺序结构,3.1 算法,返回,(2)选择结构,3.1 算法,返回,3.1 算法,返回,(3)循环结构 当型循环结构。当条件p为“真”时,反复执行A操作,直到p为“假”时才停止循环。,3.1 算法,返回,直到型循环结构。先执行A操作,再判断条件p是否为“真”,若为“真”,再执行A,如此反复,直到p为“假”为止。,3.1 算法,返回,3自顶向下、逐步细化的算法设计过程 按照这种

31、方法,解题之初不要马上就力图触及问题解法的细节,而应当从问题的全局角度出发,给出高度概括、高度抽象的算法,通常是把这些问题的求解分成可独立求解的若干子问题;接着对每一个子问题再进行分解最后对不可再划分的子问题分别设计算法,而且设计的过程也是从概括逐步走向细化。一般说来,上层所解决的是“做什么”,逐步细化的过程解决的是“怎么做”。,3.2 输入输出函数,返回,在调用标准输入输出库函数时,文件开头应该有:#include stdio.h 或#include 1字符数据的输入和输出(1)字符输出函数putchar()函数调用格式:putchar(参数)功能:向显示器输出一个字符。返回值:如果输出成功

32、,返回值就是输出的字符,否则返回EOF(-1)。说明:putchar()函数一次只能输出一个字符,即该函数有且只有一个参数,可以是字符变量、字符常量或表达式,也可以是整数,以ASCII码形式,最后输出对应的字符。putchar()函数可以输出转义字符。,3.2 输入输出函数,返回,(2)字符输入函数getchar()函数调用格式:getchar()功能:从键盘读入一个字符。返回值:如果读入成功,返回值就是读入的字符,否则返回EOF(-1)。说明:getchar()一次只能接收一个字符,即使从键盘输入多个字符,也只接收第一个字符。空格和转义字符都作为有效字符接收。接收的字符可以赋给字符型变量或整

33、型变量,也可以作为表达式的一部分不赋给任何变量。getchar()是无参函数。从键盘上输入的字符不能带单引号,输入以回车结束。,3.2 输入输出函数,返回,2格式输入输出函数scanf()和printf()(1)格式输出函数printf()函数调用格式:printf(格式控制字符串,输出表列)功能:按指定格式输出数据。返回值:输出成功,返回输出字节数;否则返回EOF(-1)。说明:输出表列:要输出的数据,可以没有。当有两个或两个以上输出项时,要用逗号(,)分隔。输出表列中的输出项可以是常量、变量或表达式。格式控制字符串:由普通字符和格式说明符两部分组成。普通字符,即需要原样输出的字符,包括转义

34、字符;格式说明符是以%开始,以一个格式字符结束,中间可以插入附加格式说明符,它的作用是将输出的数据转换为指定的格式输出,其一般形式:%附加格式说明符 格式字符,3.2 输入输出函数,返回,函数printf()格式字符,3.2 输入输出函数,返回,printf()函数常用的附加格式说明符,3.2 输入输出函数,返回,(2)格式输入函数scanf()函数调用格式:scanf(格式控制字符串,地址表列)功能:按指定的格式从键盘读入数据,并存入地址表列指定的内存单元中。返回值:返回输入数据个数。说明:地址表列:是由若干个地址组成的表列,可以是变量的地址或其他地址,C语言中变量的地址通过取地址运算符“&

35、”得到,表示形式为:&变量名,如:变量a的地址为&a。格式控制字符串:同函数printf()类似,是由普通字符和格式说明符组成。普通字符,即需原样输入的字符,包括转义字符。格式说明符同函数printf()相似。,3.2 输入输出函数,返回,函数scanf()格式字符,3.2 输入输出函数,返回,函数scanf()常用附加格式说明符,3.3 选择结构程序设计,返回,1if语句if语句是用来判断所给定的条件是否满足,根据判断的结果(真或假)决定执行给出的两种操作之一。if语句有以下四种形式:单选择、双选择、多选择和嵌套选择。(1)单选择格式为:if(表达式)语句 执行过程:先计算if后面的表达式,

36、若结果为真(非0),执行后面的语句;若结果为假(0),不执行该语句。(2)双选择格式为:if(表达式)语句1else 语句2执行过程:先计算if后面的表达式,若结果为真(非0),则执行语句1;否则执行语句2。,3.3 选择结构程序设计,返回,(3)多选择格式为:if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式n)语句 n else 语句m 执行过程:先计算表达式1,若表达式1的结果为真(非0),执行语句1,否则计算表达式2,若表达式2的结果为真(非0),执行语句2,以此类推,若n个表达式的结果都为假(0),则执行语句m。,3.3

37、 选择结构程序设计,返回,(4)嵌套选择if-else语句可以嵌套,即在一个if-else语句中又可以包含一个或多个if-else语句,格式为:if(表达式1)if(表达式2)语句1else 语句2elseif(表达式3)语句3else 语句4,使用if 语句时应注意以下几点:if后面圆括号内的表达式可以为任意类型,但一般为关系表达式或逻辑表达式。if和else后面的语句可以是任意语句。if(x)与if(x!=0)等价,if(!x)与if(x=0)等价。if和else的配对关系是:从最内层开始,else总是与它上面最近的并且没有和其他else配对的if配对。,3.3 选择结构程序设计,返回,2

38、条件表达式条件表达式的格式为:表达式1?表达式2:表达式3 条件表达式的求解过程是:先求解表达式1,若表达式1的值不为0,则求解表达式2,表达式2的值就是条件表达式的值;若表达式1的值为0,则求解表达式3,表达式3的值就是条件表达式的值。,3.3 选择结构程序设计,返回,3switch-case语句虽然用if语句可以解决多分支问题,但如果分支较多,嵌套的层次就多,会使程序冗长、可读性降低。C语言提供了专门用于处理多分支情况的语句switch-case语句。switch-case语句的格式为:switch(表达式)case 常量表达式1:语句1 break;case 常量表达式2:语句2 bre

39、ak;case 常量表达式n:语句n break;default:语句n+1;break;switch-case语句的执行过程:首先计算switch后面圆括号中表达式的值,然后用其结果依次与各case后面的常量表达式的值进行比较,若相等,执行该case后面的语句,执行时,如果遇到语句break;,就退出switch-case语句,转至花括号的下方,否则顺序往下执行。若与各case后面常量表达式的值都不相等,则执行default后面的语句。,3.3 选择结构程序设计,返回,4goto语句一般格式为:goto 语句标号;功能:无条件地将程序控制转至语句标号处。说明:语句标号是一种标识符,在goto

40、语句所在的函数中必须存在,并且其后必须跟一个冒号(:),冒号的后面可以为空,也可以是任何语句。语句标号代表程序在该点的地址,使用goto语句只能实现在同一个函数内跳转,可以向前跳转,也可以向后跳转,但不能实现从一个函数跳转到其他函数。只能从循环嵌套的内循环跳转到外循环,不能从外循环跳转到内循环。goto语句可以和if语句一起构成循环结构。goto语句使程序流程无规律,可读性差,不符合结构化程序设计的原则,一般不宜采用,只有在不得已时才使用。,3.4 循环结构程序设计,返回,1while 格式:while(表达式)循环体 while循环的执行过程:计算while后面圆括号中表达式的值,若其结果为

41、真(非0),转;否则转。执行循环体,转。退出循环,执行循环体下面的语句。,3.4 循环结构程序设计,返回,2do-while 格式:do 循环体while(表达式);do-while循环的执行过程:执行循环体,转。计算while后面圆括号中表达式的值,若其结果为真(非0),转;否则转。退出循环,执行循环体下面的语句。,3.4 循环结构程序设计,返回,3for格式:for(表达式1;表达式2;表达式3)循环体for语句的执行过程:计算表达式1,转。计算表达式2,若其值为非0,转;否则转。执行循环体,转。计算表达式3,转。退出循环,执行循环体下面的语句。,3.4 循环结构程序设计,返回,说明:在f

42、or语句中,在分号(;)必须保留的前提条件下,三个表达式的任何一个都可以省略,因此for语句又有如下省略形式:for(;表达式2;表达式3)表达式1省略,此时应在for语句之前给变量赋初值。for(表达式1;表达式2;)表达式3省略,此时应在循环体中修正循环变量。for(表达式1;表达式3)表达式2省略,此时认为表达式2的值始终为真。for(;)循环体三个表达式同时省略,此时相当于:while(1)循环体。若循环体不是空语句,不能在for语句的圆括号后面加分号(;)。表达式1和表达式3经常使用逗号表达式。,3.4 循环结构程序设计,返回,4循环语句嵌套一个循环语句的循环体中又有循环语句,称为循

43、环语句嵌套。三种循环语句可以互相嵌套,并且可以嵌套多层。注意:循环语句在嵌套时应该是水平嵌套,不能交叉嵌套。,3.4 循环结构程序设计,返回,5中途结束语句(1)break格式:break;功能:用于switch-case语句时,退出switch-case语句;用于循环语句时,退出循环体,程序转至循环体下面的语句。(2)continue格式:continue;功能:结束本次循环,跳过循环体中尚未执行的部分,进行下一次是否执行循环的判断。在while语句和do-while语句中,continue把程序控制转到while后面的表达式处,在for语句中,continue把程序控制转到表达式3处。,本

44、章小结,本章主要介绍了常用的输入和输出函数和三种控制结构的实现。其中scanf()和printf()是最常用的输入、输出函数,需要用心去掌握各常用格式字符的使用。通过本章的学习,使学生了解C程序的控制结构,清楚顺序结构、选择结构和循环结构设计的思路,掌握基本的输入、输出函数的使用。本章内容需要多上机操作,以加强对C语言输入、输出函数的理解和掌握程序控制流程的实现。掌握穷举法和迭代法的思想及其应用,提高用C语言解决实际问题的能力。,返回,数组概述,一维数组,二维数组,第4章 数组,本章小结,返回,字符串操作,数组与指针,4.1数组概述,返回,数组是指一组相同类型数据所组成的序列。它有如下3个特点

45、:(1)组织一组相同类型数据并用一个名字命名。(2)这组数据被存储在内存的一块连续区域中。(3)这组数据具有顺序关系,组成它的每个元素可以通过序号进行区别。,4.2 一维数组,返回,1一维数组的定义在C语言中,使用数组前必须先定义,数组定义的形式:类型说明符 数组名数组长度对于数组的定义说明如下:(1)类型说明符可以是以前我们学过的任何一种基本数据类型,也可以是指针类型或结构体类型,它说明数组每一个元素的类型。对于同一个数组,其所有元素的数据类型都是相同的。(2)数组名是用户定义的标识符,应符合标识符的命名规定。(3)数组名不能与其它变量名相同。(4)方括号为下标运算符,其中数组长度表示数组元

46、素的个数,因此它只能是整数。(5)方括号中可以是常量,也可以是符号常数或常量表达式,但不能是变量。(6)允许在同一个类型说明中,定义多个数组和多个变量。(7)C编译程序将为数组在内存中开辟连续的存储单元。,4.2 一维数组,返回,2一维数组的引用在C语言中只能逐个引用数组元素而不能一次引用整个数组。数组元素是组成数组的基本单元,其引用方法:数组名下标说明:(1)下标为整型数据。如果是小数,将自动取整。如:a2.5,a2*i,ai+都是合法的数组元素。(2)只能逐个引用数组元素而不能一次引用整个数组。如:输出含有10个元素的数组必须使用循环语句逐个输出各数组元素。,4.2 一维数组,返回,3一维

47、数组的初始化数组初始化的一般形式:类型说明符 数组名数组长度=常量序列;说明:(1)在 中的各常量即为各元素的初值,各常量之间用逗号间隔。如:int a10=0,1,2,3,4,5,6,7,8,9;(2)给部分元素赋初值。当 中值的个数少于元素个数时,只给前面部分元素赋值。其他元素自动赋值为0。如:int a10=0,1,2,3,4;(3)只能给元素逐个赋初值,不能给数组整体赋初值0。如:给十个元素全部赋值1,只能写成:int a10=1,1,1,1,1,1,1,1,1,1;而不能写成:int a10=1;(4)给全部元素赋初值,则可省略数组的长度。如:int a5=1,2,3,4,5;可写成

48、:int a=1,2,3,4,5;,4.3 二维数组,返回,1二维数组的定义与存储(1)二维数组的定义二维数组定义的形式:类型说明符 数组名行数列数;(2)二维数组的存储存储器是连续编址的,也就是存储器单元是按一维线性排列的。在C语言中,在一维存储器中存放二维数组是按行排列的。2二维数组的引用二维数组的元素也称为双下标变量,其表示的形式:数组名行下标列下标,4.3 二维数组,返回,3二维数组的初始化二维数组的初始化也是在数组定义时赋初值。二维数组可按行分段赋初值,也可按行连续赋初值。如:对数组a34 赋初值:(1)按行赋初值:将二维数组中每一行元素的初值分别写在一对花括号内。如:int a34

49、=1,2,3,4,11,12,13,14,21,22,23,24;(2)按数组的存储顺序赋初值:将数组所有元素的初值写在一对花括号内。如:int a34=1,2,3,4,11,12,13,14,21,22,23,24;(3)可以对部分元素赋初值。如:int a34=1,11,21;其作用是只对各行的第一列元素赋初值,其余元素值自动取0。(4)若对全部元素都赋初值或按行赋初值时,则可以省略行数,但列数不可以省略。如:int a 4=1,2,3,4,11,12,13,14,21,22,23,24;,4.4 字符串操作,返回,1字符数组(1)字符数组的定义用来存放字符的数组称为字符数组。即数组元素的

50、类型为字符型。如:char c10;其中,c被定义为一维字符数组,在这个数组的每一个元素中存放的都是单个字符。由于字符型数据和整型数据通用,也可以定义为:int c10;但这时每个数组元素占2个字节的内存单元。(2)字符数组的初始化字符数组也允许在数组定义时赋初值。如:char c10=I,a,m,h,a,p,p,y;赋值后各元素c0c9的值分别为:I、a、m、h、a、p、p、y,如果花括号中提供的初值个数大于数组长度,则按语法错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动取空字符(即0)。,4.4 字符串操作,返回,2字符串在C语言中没有专门的字符串

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号