版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言概述
主要内容:
C语言的特点
C语言的开发流程简单的C语言程序
Win-TC的基本操作教学目的及要求:
通过对本章的学习,要求掌握C语言的特点及其发展历史;初步认识C语言编译软件Win-TC的使用,基本了解C语言程序开发的设计流程。第一章C语言概述本章重点:
C语言的特点
C语言程序的开发流程
Win-TC的基本操作本章难点:
Win-TC的基本操作第一章C语言概述
1.C语言的诞生与发展(1)在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。(2)C语言是贝尔实验室于70年代初研制出来的,后来又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准(1989年再次做了修订)。*本书以ANSIC新标准来介绍。1.1C语言的特点(3)目前,在微机上广泛使用的C语言编译系统有MicrosoftC、TurboC、BorlandC等。虽然它们的基本部分都是相同的,但还是有一些差异,所以请大家注意自己所使用的C编译系统的特点和规定(参阅相应的手册)。本书选定的上机环境是Win-TC(Windows操作系统)。2.C语言的特点
C语言同时具有汇编语言和高级语言的优势。(1)语言简洁、紧凑,使用方便、灵活。(2)运算符极其丰富。(3)生成的目标代码质量高,程序执行效率高。(4)可移植性好(较之汇编语言)。(5)可以直接操纵硬件。3.在C语言中,除实现顺序、选择和循环三种基本结构等的9条控制语句外,输入输出操作均由标准库函数(不是C语言的组成部分)来实现。所以学习C语言,不仅要学习这9条控制语句和各种运算符,而且要学习并掌握常用标准库函数的使用。1.2C语言程序的开发过程1.编辑编辑C语言源程序,以.C为扩展名。2.编译将C语言源程序编译成目标程序。扩展名为.OBJ。3.连接将目标程序连接生成可执行的代码。可执行文件的扩展名为.EXE。4.执行执行可执行文件。1.3简单的C语言程序1.3.1C语言程序的总体结构一个完整的C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。[案例1.1]仅由main()函数构成的C语言程序。/*案例代码文件名:AL1_1.C*//*功能:仅由main()函数构成的C语言程序示例*/main(){printf(“ThisisaCprogram.\n”);}程序运行结果:
ThisisaCprogram.1.3.2C语言程序规定
一个C语言程序可由多个函数组成,但必须包含一个且只能包含一个名为main的函数,程序总是从main函数开始执行。
由一对{}扩起来的部分是函数体,其中语句实现程序的预定功能。
C语言的每个基本语句都以“;”结束。
C语言程序书写格式较自由,一行可写一个或多个语句。
所有的变量必须“先定义、后使用”。
/*……*/中的内容是程序的注释部分
#include语句是编译预处理语句。1.4Win-TC软件的使用本章小结:
本章系统介绍了C语言的特点及其C语言程序设计开发流程,让学生对C语言有个感性的认识,初步接触了简单易学的C语言编译软件——Win-TC。第一章C语言概述
常量和变量
基本数据类型及其常量
算术运算符、赋值运算符及其表达式
关系运算符、逻辑运算符及其表达式
逗号运算符、条件运算符及其表达式
变量的初始化
不同类型数据之间的转换
类型定义第二章数据类型、运算符及其表达式主要内容:本章授课理论课:
4学时实践课:4学时第二章数据类型、运算符及其表达式教学目的及要求:
通过对本章的学习,要求掌握C语言程序设计的基础知识,能够对变量和常量进行定义及使用,对常用的运算符及其表达式能够熟练应用。基本了解C语言不同类型数据间的转换和类型定义。本章重点:
变量定义和应用基本类型及其常量定义和应用算术运算符、赋值运算符及其表达式关系运算符、逻辑运算符及其表达式本章难点:
逗号运算符、条件运算符及其表达式类型定义第二章数据类型、运算符及其表达式2.1常量和变量
常量
即在程序运行过程中其值不会改变的量。
变量
即在程序运行过程中其值可以改变的量。
标识符
用以标识程序中用到的变量名、函数名、类型名、数组名、文件名、符号常量名等的有效字符序列。标识符的命名规则:由字母(大、小写均可)、数字及下划线组成,且第一个字符必须是字母或下划线。变量名
合法变量名:Year,Day,ATOK,x1,_CWS,_change,_to
不合法变量名:#123,.CUM,$100,1996Y,1-2-3-大,小写字母有区别,一般变量名用小写,组成变量名的有效字符数随C语言的编译系统而定,同一个函数内所定义的变量不能同名。最基本的数据类型有四种:整型:int字符型:char单精度型:float双精度型:double2.2基本数据类型及其常量浮点型2.2.1整型变量及其常量
整型变量用以存放整型数据.
一般定义形式:inti1,i2;
整型常量
C语言中可用三种数制表示:
十进制:
如250,23,-10等十六进制:
以0X或0x开头,如0X61(相当97)
八进制:以0开头,如0141(相当97)2.2.2浮点型变量及其常量
带有小数点的数称为浮点数或实型数。浮点型变量分单精度浮点型变量和双精度浮点型变量。单精度浮点型变量的定义方式:floatf1,f2;双精度浮点型变量的定义方式:doubled1,d2;不同系统中,float型数据和double型数据所能提供的精度是有差异的。浮点型常量一般不分float型和double型,根据变量的类型来截取相应的有效位数。两种表示形式:(1)十进制形式:由数字和小数点组成。如,21.34567,-4,30等。(2)指数形式:即用科学计数法。字母E和e之前必须有数字,且e后面的指数部分必须是整数。2.2.3字符型变量及其常量字符型变量用于存放一个字符。一般定义形式:charc1,c2;字符型常量用一对单引号括起来的一个字符。如‘A’,‘3’,‘#’等。转义字符以‘\’开头的特殊字符型常量。‘\n’换行字符‘\r’回车字符‘\b’退格字符‘\t’跳格字符‘\’’单引号字符‘\“’双引号字符
2.2.4长整型、短整型和无符号型
长整型变量定义的一般形式:longintX;能表示的数值范围与计算机系统有关,是int的两倍。长整型常量:在整型常量的末尾加上字母L或l。例:x=9876543L;
短整型变量定义的一般形式:shortintx;能表示的数值范围与计算机系统有关,有的与int相同,有的小于int。
无符号整型变量定义的一般形式:unsignedintx;用于存放非负整型数。与int型变量占相同的内存空间。
注:C语言只要求long型数据长度不短于int型,short型数据长度不长于int型,各数据类型所占存储字节数具体所使用系统及编译器。2.2.5sizeof运算符
用于了解一个变量或某种数据类型的量在内存中所占字节数。Sizeof有两种使用方法:
sizeof表达式如:当x是整形变量的时候,sizeofx=2;
sizeof(类型名)
如:sizeof(float)=42.3算术运算符、赋值运算符及其表达式运算符的优先级及结合性优先级:一个表达式中,多个运算符运算的先后顺序。结合性:一个运算对象的两侧的运算符的优先级相同时,进行运算的结合方向。算术运算符和算术表达式
1.加、减、乘、除及取模运算符(自左至右)
+、-、*、/(运算符两侧是整数,则其结果为整数)、%(取两个整型数相除的余数)。
2.增1、减1运算符(自右至左)运算对象只能是整型或字符型变量。
i++;先使用变量i的值,再使i的值加1。
++i;先使i的值加1,再先使用变量i的值。
i--;先使用变量i的值,再使i的值减1。
--i;先使i的值减1,再先使用变量i的值。赋值运算符和赋值表达式
1.赋值运算符(自右至左)
=
功能:将赋值运算符右边的表达式的值赋给左边的变量。例:x=23;f=23.5;h=‘A’;
2.复合赋值运算符(自右至左)
+=,-=,*=,/=,%=
例:x+=10;y*=20;举例#include"stdio.h"voidmain(){inti,j;i=3;j=-i++;printf("%d,%d\n",j,i);system(“pause”)}#include"stdio.h"voidmain(){inta;a=12;a+=a-=a*a;printf("%d\n",a);system(“pause”)}a+=a-=a*a=>1.a-=a*a
即:a=a-a*a
2.a+=a
即:a=a+a
a+=a-=a*a=>a=(a-a*a)+(a-a*a)2.4关系运算符、逻辑运算符及其表达式关系运算符和关系表达式
1.关系运算符(自左至右)
共6种:
<、<=、>、>=、==、!=
后两种运算符的优先级低于前4种。关系运算符的优先级低于算术运算符。
2.关系表达式用关系运算符将两个运算量连接起来的有意义的式子。例:X>Y,A+B<=C+D。关系表达式是一个逻辑值“真”(用1表示)或“假”(用0表示)。逻辑运算符和逻辑表达式
1.逻辑运算符有三种:!、&&、||
优先级依次降低,“!”优先级高于算术运算符和关系运算符;&&、||优先级低于算术运算符和关系运算符。结合性:!自右至左。
&&、||自左至右。
2.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式结果是一个逻辑值“真”(用1表示)或“假”(用0表示)。但判断一个量是否为“真”时,以非0表示“真”,以0表示“假”。#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d\n",a>b||b<c);printf("%d\n",!(x<y));system(“pause”);}举例#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d,%d\n",a>b,b<c);printf("%d\n",x<y);system(“pause”);}2.5逗号运算符、条件运算符及其表达式
逗号运算符和逗号表达式
1.逗号运算符:,(自左至右)
优先级最低。
2.逗号表达式:一般形式:表达式1,表达式2,…,表达式n
求解过程:先求解表达式1,再求解表达式2,最后求解表达式n,逗号表达式的值为最右边表达式n的值。例:a=6,a*3
条件运算符和条件表达式
1.条件运算符:?:(自右至左)唯一的三目运算符。
2.条件表达式一般形式:表达式1?表达式2:表达式3
功能:当表达式1的值为“真”时,条件表达式的值取表达式2的值,当表达式1的值为“假”时,条件表达式的值取表达式3的值。例:c=(a>b)?a:b;举例#include"stdio.h"voidmain(void){inta=10,b=20,c=30,x;x=(a,b,c);printf("%d\n",x);}#include"stdio.h"voidmain(void){inta,b,max;scanf("%d,%d",&a,&b);max=(a>b)?a:b;printf("max=%d\n",max);}2.6变量的初始化
即在对变量进行定义的同时,为其赋初值。例:int age=20;
char letter=‘A’;
int convert=‘b’-‘B’;
float average=3.2*9.8;int x=10,y=20,z=30;2.7不同类型数据之间的转换
不同类型数据在进行混合运算时,需进行类型转换,有两种方式:1.自动类型转换
2.强制类型转换
C语言允许字符型数据和整型数据之间通用。2.7.1自动类型转换自动类型转换规则:当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃,且需进行相应有效位数的截取。当整型数据赋给浮点型变量时,数值上不发生任何变化。只要某个算术运算符的两个运算对象中有一个是浮点数,则运算将按浮点型格式来进行。2.7.2强制类型转换自动类型转换达不到目的时,可以利用强制类型转换。一般形式:(类型名)(表达式)例:(float)x/y说明:强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型没有发生任何变化。举例#include"stdio.h"voidmain(void){ inti='a'; charc=97; printf("%d,%c\n",c,c); printf("%d,%c\n",i,i);}#include"stdio.h"voidmain(void){ inti=20,j; floatf; j=i/40; f=(float)i/40; printf("%d\n",j); printf("%f\n",f);}2.8类型定义
C语言允许使用typedef语句定义新的类型名,以代替已有的类型名。例:typedefintcounter;
counterx,y;=>intx,y;说明: 1.typedef不能创建新的类型
2.typedef不能用以定义变量.第二章数据类型、运算符及其表达式本章小结:
本章主要介绍C语言程序设计中的常用数据类型,对变量和常量的定义和引用,对常用的运算符及其表达式应用方法。简单介绍C语言不同类型数据间的转换方法和类型定义方法。
基本语句
数据的输入
数据的输出
第三章基本语句主要内容:本章授课理论课:
2学时实践课:2学时
第三章基本语句教学目的及要求:
通过对本章的学习,要求掌握C语言程序设计中常用的基本语句和复合语句,熟悉数据的输入和输出方法。能够调用常用的数据输入和输出函数。本章重点:
基本语句复合语句数据的输入数据的输出本章难点:数据的输入数据的输出
第三章基本语句语句和复合语句数据的输入数据的输出第三章基本语句3.1语句和复合语句
一个表达式的后面跟一个分号构成语句。用左、右花括号括起来的语句称为复合语句。
一个复合语句在语法上等同于一个语句。例: x=a+b;
if(1)
{a=3;b=4;x=a*b;}第三章基本语句
字符输入函数格式:getchar()
功能:接收从键盘输入的一个字符。例:#include"stdio.h"voidmain(void){ charc;
c=getchar(); }3.2数据的输入第三章基本语句格式输入函数格式:scanf(格式控制,地址表);
功能:用以接收从键盘上输入的多个任何类型的数据。1.格式控制由%和格式字符组成。作用是将输入的数据转换成指定的格式后存入到由地址表所指向的相应的变量中。例:%c,%d,%f2.地址表由变量地址组成。变量地址由&和变量名组成。例:&a,&b3.2数据的输入第三章基本语句格式字符d输入十进制整数(长整型用ld;短整型用hd)o输入八进制整数(长整型用lo;短整型用ho)x输入十六进制整数(长整型用lx;短整型用hx)c输入单个字符f输入浮点数e输入浮点数,作用与f相同.s输入以‘\0’为结束标致的字符串3.2数据的输入第三章基本语句举例#include"stdio.h"voidmain(void){ inti; floatf; charc; scanf("%d%f%c",&i,&f,&c); printf("%d,%f,%c\n",i,f,c);}3.2数据的输入第三章基本语句字符输出函数 格式:putchar(变量名)
功能:将变量中的字符输出到屏幕当前光标位置。 例:#include"stdio.h" voidmain(void) { charc; c=getchar(); putchar(c); }3.3数据的输出第三章基本语句格式输出函数 格式:printf(格式控制,输出表); 功能:用以输出多个任何类型的数据。
1.格式控制 由%和格式字符组成,作用是将要输出的数据转换为指定的格式后输出。 例:%d,%f,%c 2.输出表 由变量名组成。变量名间用逗号隔开。 例:a,b,c第三章基本语句3.3数据的输出格式字符d 输出十进制整数(长整型用ld)o 输出八进制整数(长整型用lo)x 输出十六进制整数(长整型用lx)c 输出单个字符f 输出浮点数e 以科学计数法输出浮点数s 输出以‘\0’为结束标致的字符串第三章基本语句3.3数据的输出#include"stdio.h"voidmain(void){ charc1,c2; scanf("%c%c",&c1,&c2); ++c1; --c2;
printf("C1=%c,C2=%c",c1,c2);}第三章基本语句3.3数据的输出举例
第三章基本语句本章小结:
本章在阐述C语言程序设计中常用的基本语句和复合语句基础上,详细介绍了数据的输入和输出的常用函数及其使用方法。第四章选择结构
主要内容:
结构化程序设计的三种基本结构
IF-else选择结构多分支Switch选择结构本章授课理论课:
2学时实践课:2学时教学目的及要求:
通过对本章的学习,要求掌握C语言程序设计中的三种基本结构,把握选择结构的两种常用语句结构。基本了解C语言程序开发的选择流程设计。第四章选择结构本章重点:
C语言程序设计的三种基本结构
IF-else选择语句结构多分支Switch选择语句结构本章难点:
Switch多分支选择结构第四章选择结构
结构化程序设计的三种基本结构
1.顺序结构按语句的书写顺序依此执行。
2.选择结构通过对特定条件的判断,选择一个分支执行。
3.循环结构在给定条件下,重复执行某段程序,直到条件不满足为止。AB第四章选择结构格式:if(表达式)
语句1else
语句2
功能:先计算表达式的值,若表达式的值为“真”(非0),则执行语句1,否则,若表达式的值为“假”(为0),则执行语句2。
说明:
1、语句1、语句2可以是单个语句,也可是复合语句。
2、if语句可以嵌套。(else总是与它前面的离它最近的if配对)。非0?YNAB4.1IF条件选择语句第四章选择结构if语句举例#include"stdio.h"main(){ charc1,c2; c1=getchar(); c2=getchar(); if(c1>c2) printf("%c\n",c1); else printf("%c\n",c2);}#include<stdio.h>main(){ inta,b,c,max; printf("Inputa,b,c:");scanf("%d,%d,%d",&a,&b,&c); if(a>b&&a>c) max=a; else if(b>c) max=b; else max=c;printf("max=%d\n",max);}4.1IF条件选择语句第四章选择结构格式:switch(表达式){ case常量表达式1:
语句1 case常量表达式2:
语句2 …… case常量表达式n:
语句n [default: 语句n+1] }功能:先计算switch后面表达式的值,若此值等于某个case后面的常量表达式的值,则转去执行该case后面的语句去执行;否则执行default后面的语句。4.2多分支选择语句第四章选择结构说明:
1.“表达式”及“常量表达式”的值,必须是整型或字符型。
2.case后面的常量表达式的值必须互不相同。
3.执行完某个case后面的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句结束或“break”语句为止。
4.case后面的多个语句可以不用花括号括起。
5.多个case后面的语句可以共用一组执行语句。4.2多分支选择语句第四章选择结构 case4: case6: case9: case11:days=30;break; case2:if(year%4==0&&year%100!=0||year%400==0) days=29; else days=28;break; default: printf("Dataerror!");break; } printf("Days=%d",days);}4.3Switch语句举例第四章选择结构#include<stdio.h>main(){ intyear,month,days; printf("Inputyearandmonth:"); scanf("%d%d",&year,&month); switch(month) { case1: case3: case5: case7: case8: case10: case12:days=31;break;本章小结:
本章简单介绍了C语言程序设计中的三种基本结构,重点系统介绍了选择结构的两种常用语句结构及其使用方法。第四章选择结构第五章循环结构
主要内容:
while循环语句
do-while循环语句
for循环语句
break和continue语句空操作语句和goto语句本章授课理论课:
4学时实践课:4学时教学目的及要求:
通过对本章的学习,要求熟悉C语言程序设计中常用的循环语句,包括while、do-while和for语句结构,并能够熟练应用它们去设计程序;掌握循环语句结构配套使用的break和continue的用法;了解空操作语句和goto语句的用法;第五章循环结构本章重点:
while、do-while和for循环语句
break和continue语句空操作和goto语句本章难点:
for循环语句
break和continue的用法区别第五章循环结构while循环语句do-while循环语句for循环语句break语句和continue语句空操作语句和goto语句第五章循环结构格式:while(表达式){
循环体
}功能:先计算表达式的值,若表达式的值为真,则执行循环体,否则,执行循环体后面的语句。表达式真假循环体第五章循环结构5.1while循环语句While循环举例#include"stdio.h"voidmain(){ inti=1,sum=0;
while(i<=100) { sum+=i; i=i+1; } printf("%d\n",sum);}第五章循环结构5.1while循环语句格式:do{循环体}while(表达式);功能:先执行一次循环体,再判断表达式的值是否为“真”,若为“真”,继续执行循环体,直到表达式的值为“假”,退出循环。循环体表达式真假第五章循环结构5.2do-while循环语句do-while循环语句举例#include"stdio.h"voidmain(){ inti=1,sum=0;
do {sum+=i; i=i+1;} while(i<=100); printf("%d\n",sum);}第五章循环结构5.2do-while循环语句格式:for(表达式1;表达式2;表达式3)
{循环体}执行过程:1、先求解表达式1,2、再求解表达式2,若表达式2的值为“真”,则执行循环体中的语句,接着求解表达式3,3、重复执行步骤2),直到表达式2的值为“假”,退出循环。
求解表达式1表达式2执行循环体求解表达式3退出循环真假第五章循环结构5.3for循环语句for循环说明for语句中的任何一个表达式都可以省略,但其中分号不能省略。省略表达式2,相当于死循环。此时应在循环体中设置相应语句结束循环。如循环体由多个语句组成,则必须用花括号括起。表达式1和表达式3都可是逗号表达式。第五章循环结构5.3for循环语句for循环举例#include"stdio.h"voidmain(){ inti,sum;
for(i=1,sum=0;i<=100;i++) sum+=i; printf("%d\n",sum);}第五章循环结构5.3for循环语句break语句格式:break;功能:终止switch语句或循环语句的执行。continue语句格式:continue;功能:终止本次循环。第五章循环结构5.4break和continueBreak、continue语句举例#include"stdio.h"voidmain(){ inti,sum; for(i=1,sum=0;i<=100;i++){ if(sum>2000) break; sum+=i;} printf("%d\n",sum);}第五章循环结构5.4break和continue#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}第五章循环结构Break、continue语句比较举例#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') break; sum++;} printf("sum=%d",sum);}空操作语句 仅由一个分号组成,不进行任何操作。goto语句 格式:goto标号;
……
标号:语句; 功能:将执行流程转到以该标号为前缀的语句去执行。 说明:标号的命名规则与变量完全相同。第五章循环结构5.5空操作和goto语句举例#include"stdio.h"voidmain(){ intsum,i; charch; for(sum=0,i=1;i<=100;sum+=i,i++) ; printf("sum=%d\n",sum);}#include"stdio.h"voidmain(){ inti; floatsum; sum=1; i=2;L1:sum+=1/(float)i; i+=2; if(i<=50) gotoL1; printf("sum=%f\n",sum);}第五章循环结构5.5空操作和goto语句本章小结:
本章重点介绍了C语言程序设计中常用的循环语句及其使用方法,包括while、do-while和for语句结构,并通过例子说明了它们的使用方法;同时介绍了循环语句结构配套使用的break和continue的用法;最后,对空操作语句和goto语句的用法作了简单介绍;第五章循环结构第六章数组
主要内容:
一维数组定义、引用、初始化和举例二维数组定义、引用、初始化和举例字符数组定义、引用、初始化和举例字符串函数的应用本章授课理论课:
4学时实践课:4学时教学目的及要求:
通过对本章的学习,要求掌握C语言一维数组、二维数组和字符数组的定义、引用及其初始化方法;初步认识数组的应用举例使用,了解常用的字符串处理函数。第六章数组本章重点:
一维数组的定义、引用、举例和初始化二维数组的定义、引用、举例和初始化字符数组的定义、引用、举例和初始化字符串处理函数本章难点:
一维数组、二维数组和字符数组的初始化第六章数组
一维数组
二维数组
字符数组和字符串第六章数组一维数组的定义和引用 定义:类型说明符数组名[常量表达式]; 例:intage[10];
floata[10],f,b[20]; 说明:不允许动态定义数组。 如:inti;i=15;intdata[i]; 引用:数组名[下标表达式]
例:a[0]=10;a[5]=2*a[0]; 说明:下标从0开始,不允许一次引用整个数组,只能逐个引用每个数组元素。一维数组元素的初始化
staticinta[5]={1,2,3,4,5}; staticintdata[5]={5,4,3}; staticintdata[5]; staticintdata[]={1,2,3,4,5};第六章数组6.1一维数组举例#include"stdio.h"voidmain(){ inti;
staticintx[]={10,8,7,6,5}; staticinty[]={-3,9,-10,-2,4}; intz[5]; for(i=0;i<5;i++) z[i]=x[i]+y[i]; for(i=0;i<5;i++) printf("%d\n",z[i]);}第六章数组6.1一维数组二维数组的定义和引用 定义:类型说明符数组名[常量表达式][常量表达式]; 例:int x[3][2];
float a[2][3],f,b[20]; 说明:数组元素的排列顺序按行进行。 引用:数组名[下标表达式][下标表达式]
例:a[0][1]=10;a[1][1]=2*a[0][1]; 说明:每个下标从0开始,不允许一次引用整个数组,只能逐个引用每个数组元素。一维数组元素的初始化
staticinta[3][2]={1,2,3,4,5,6}; staticintdata[2][3]={5,4,3}; staticintdata[3][2]={{1},{2},{3}}; staticintdata[][2]={{1},{2,3},{4}};第六章数组6.2二维数组举例#include"stdio.h"voidmain(){ intyear,month,day,days,i,leap; staticintmtable[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; printf("inputyear,month,day:"); scanf("%d%d%d",&year,&month,&day); leap=0; if(year%4==0&&year%100!=0||year%400==0) leap=1; days=day; for(i=1;i<month;i++) days+=mtable[leap][i]; printf("Days=%d",days);}第六章数组6.2二维数组字符数组
一维数组定义: char数组名[常量表达式];
二维数组定义: char数组名[常量表达式][常量表达式];
字符数组元素的引用: c[5]=‘B’;ch[1][2]=‘k’;
字符数组初始化: staticcharch[5]={‘G’,’O’,’O’,’D’,’!’}
说明:初值个数可以少于数组元素的个数,不可多于。
第六章数组6.3字符数组和字符串字符数组举例#include"stdio.h"voidmain(){
staticchartext[]={'h','e','l','l','o'}; charbuff[5]; inti,flag; for(i=0;i<5;i++) buff[i]=getchar(); flag=0; for(i=0;i<5;i++) if(buff[i]!=text[i]) {flag=1; break;} if(flag) printf("Thiswordisnothello"); else printf("Thiswordishello");}第六章数组6.3字符数组和字符串字符串字符串及其结束标志 字符串是用双引号括起来的字符序列。 字符串利用字符数组存放。 字符串结束标志:‘\0’
字符串常量初始化数组: staticcharstr[]={“Happy”};
或:staticcharstr[]=“Happy”;字符串的输入和输出 “%c”格式符:每次输入或输出一个字符。 “%s”格式符:每次输入或输出一个字符串。第六章数组6.3字符数组和字符串字符串输入输出举例#include"stdio.h"voidmain(){ charstr[10]; inti; printf("Inputastring:"); scanf("%s",str); i=0; while(str[i]!='\0') { printf("%c",str[i]); i++; }}第六章数组6.3字符数组和字符串常用的字符串处理函数
输入字符串函数
输出字符串函数
字符串比较函数
字符串拷贝函数
字符串连接函数
字符串测试长度函数第六章数组6.3字符数组和字符串输入字符串函数格式:gets(字符数组名)功能:输入一个字符串。说明:
1.要用#include命令将“stdio.h”头文件包含到文件中。
2.返回字符数组的首地址。例:charp[20];
……gets(p);第六章数组输入字符串函数举例#include"stdio.h"main(){ charp[20]; gets(p); printf("%s\n",p);}第六章数组输出字符串函数格式:puts(字符数组名)功能:输出以‘\0’结尾的字符串。说明: 要用#include命令将“stdio.h”头文件包含到文件中。 例: charp[20];
…… puts(p);第六章数组输出字符串函数举例#include"stdio.h"main(){ charp[20]; gets(p); puts(p);}第六章数组字符串比较函数格式:strcmp(字符串1,字符串2)功能:比较两个字符串。说明: R<0字符串1<字符串2 R=0字符串1=字符串2 R>0字符串1>字符串2例: intR; R=strcmp(“Good”,”Happy”)第六章数组字符串比较函数举例#include"stdio.h"#include"string.h"voidmain(){ charstr1[]={"abcde"},p[20]; intr; gets(p); r=strcmp(str1,p); printf("%d",r);}第六章数组字符串拷贝函数格式: strcpy(字符数组1,字符数组2)功能:
将字符数组2(以‘\0’结尾)拷贝到字符数组1中。例: staticcharstr2[]=“string” charstr1[7];
…… strcpy(str1,str2);第六章数组字符串拷贝函数举例#include"stdio.h"#include"string.h"voidmain(){ charstr1[20],p[20]; gets(p); strcpy(str1,p); printf("%s\n",str1);}第六章数组字符串连接函数格式:strcat(字符串1,字符串2)功能:连接两个以‘\0’结尾的字符串。说明: 字符数组1必须足够长,以便容纳字符串2。例: staticcharstr1[20]=“Happy”staticcharstr2[10]=“NewYear” ……strcat(str1,str2);第六章数组字符串连接函数举例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde",p2[]="12345"; strcat(p1,p2); printf("%s\n",p1);}第六章数组字符串测试长度函数格式:strlen(字符串)功能:测试字符串长度(不包括‘\0’)。例: strlencharstr[10]={“China”};printf(“%d”,strlen(str));第六章数组字符串测试长度函数举例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde"; inti,j; i=strlen(p1); j=strlen("1234567890"); printf("%d,%d\n",i,j);}第六章数组本章小结:
本章主要介绍了C语言一维数组、二维数组和字符数组的定义、引用及其初始化方法;阐述了数组的应用方法,并介绍了跟数组相关的常用的字符串处理函数的用法。第六章数组第七章函数
主要内容:
函数的概念和定义函数的常用调用方法函数的参数传递方式函数变量的作用域函数的作用域本章授课理论课:
6学时实践课:6学时教学目的及要求:
通过对本章的学习,要求掌握构成C语言程序模块的单元--函数的特点及其定义和调用的方法;初步认识C语言变量的作用范围,区分函数的作用域。第七章函数本章重点:
函数的定义
函数的调用方法函数的参数传递方式函数的作用域函数变量的作用域本章难点:
函数的调用方法及其参数传递方式第七章函数
函数的概念
函数的定义和调用
函数的返回值及其类型
函数的参数及其传递方式
函数的嵌套调用和递归调用
变量的作用域及存储类型
内部函数和外部函数第七章函数和变量一个C程序由一个或多个函数组成,必须有且仅有一个主函数(main())。函数之间没有从属关系。函数通过调用执行,从main函数开始,main函数可以调用任何一个函数,其他函数不能调用main函数。函数包括:标准库函数和用户自定义函数。第七章函数和变量7.1函数的概念函数的定义格式:类型说明符函数名(形参表)形参类型说明
{
说明部分语句部分(函数体部分)
}函数的调用格式:函数名(实参表);例第七章函数和变量7.2函数的定义和调用函数的定义和调用举例#include"stdio.h"intmax(inta,intb){inti;i=(a>b)?a:b;return(i);}main(){intx=10,y=20,temp;
temp=max(x,y);printf("Themaxis%d\n",temp);system("pause");}第七章函数和变量7.2函数的定义和调用返回语句 格式: return[(表达式)]; 或: return[表达式];返回值类型
C语言规定第七章函数和变量7.3函数返回值与类型C语言规定在调用函数中,通常应对被调用函数的返回值类型进行说明例: main()
{ floatcount();
floats;
…… s=count(20);
…… }第七章函数和变量7.3函数返回值与类型当被调用函数的定义位于调用函数之前时可不必说明例: floatcount(n)
intn;
{ floats;
…… return(s);
} main()
{ floats;
…… s=count(10);
…… }第七章函数和变量7.3函数返回值与类型允许在所有函数的外面、文件的开头对函数的类型进行说明,而在调用函数中便可以不对被调用函数的类型进行说明。例: floatcount();
main()
{ floats;
…… s=count(10);
…… }
floatcount(n)
intn;
{ floats;
…… return(s);
}第七章函数和变量7.3函数返回值与类型当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略。当函数没有返回值时,函数的返回值类型可说明为void型。例: #include"stdio.h" voidabc() { printf("good!"); } main() { abc(); }第七章函数和变量7.3函数返回值与类型函数返回值类型一般应与return语句中的表达式的值的类型一致,若不同,则以函数定义时的返回值类型说明为准。允许在没有返回值的函数中使用return语句,以结束函数的执行,返回主调函数。
格式:return第七章函数和变量7.3函数返回值与类型实参和形参
实参:函数调用时,函数名后面的参数 形参:函数定义时,函数名后面的参数。一般变量(包括数组元素)作函数参数
实参—>形参 (单向)值传递 形参值改变不影响实参。数组名作函数参数
实参和形参共占一段存储单元 (双向)地址传递 形参值的改变将影响实参。第七章函数和变量7.4参数及传递方式一般变量(包括数组元素)作函数参数#include"stdio.h"intmult10(intn){ n*=10; return(n);}main(){ intnum; intresult; num=5; result=mult10(num); printf("result=%d\n",result); printf("num=%d\n",num);}第七章函数和变量7.4参数及传递方式数组名作函数参数#include"stdio.h"voidADD1(inta[],intn){ inti; for(i=0;i<n;i++) a[i]++;}main(){ staticintarray[]={0,1,2,3,4,5,6,7,8,9}; inti; ADD1(array,10); for(i=0;i<10;i++) printf("%d",array[i]);}第七章函数和变量7.4参数及传递方式函数的嵌套调用 即一个函数可以被其他函数调用,也可调用其他函数。函数的递归调用
直接递归调用: 一个函数可直接调用该函数本身。
间接递归调用: 一个函数可间接调用该函数本身。第七章函数和变量7.5嵌套和递归调用函数的嵌套调用#include"stdio.h"intSADD(intn){ inti,sum=0; for(i=1;i<=n;i++) sum+=i; return(sum);}intsmul(intn){ intm,d;
m=SADD(n); d=2*m-1; eturn(d);}main(){ inti,n,d; intflag; printf("Inputanumber:"); scanf("%d",&n);
d=smul(n); flag=0; for(i=0;i<n;i++) { printf("%d",d); d-=2; flag++; if(flag==5) { printf("\n");flag=0; } }}第七章函数和变量7.5嵌套和递归调用直接递归调用floatfunc(n)intn;{ intm;
floatf;
…… f=func(m);
……}第七章函数和变量7.5嵌套和递归调用间接递归调用func1(n)intn;{ intm;
…… func2(m);
……}func2(x)intx;{ int
y;
…… func1(y);
……}第七章函数和变量7.5嵌套和递归调用函数的递归调用#include"stdio.h"main(){ intn; longintresult; longintfact(int); while(1) { printf("Inputanumber:"); scanf("%d",&n); if(n>=0) break; } result=fact(n); printf("Result=%ld",result);}longintfact(intn){ longintf; if(n==0) f=1; else f=n*fact(n-1); return(f);}第七章函数和变量7.5嵌套和递归调用
一般概念
局部变量及存储类型
全局变量及存储类型第七章函数和变量7.6变量作用域及存储类型一般概念C语言所占存储空间分为: 程序区:存放可执行的程序的机器指令。 静态存储区:存放需占用固定存储单元的变量。 动态存储区:存放不需占用固定存储单元的变量。变量的定义包含三个方面: 变量的数据类型 变量的作用域:一个变量能够起作用的程序范围。 变量的存储类型:变量在内存中的存储方法。第七章函数和变量7.6变量作用域及存储类型局部变量及存储类型局部变量: 在函数内部定义的变量。局部变量的作用域:仅限于定义它的函数。局部变量的三种存储类型:
自动类(auto)
静态类(static)
寄存器类(register)第七章函数和变量7.6变量作用域及存储类型自动类(auto)变量
在函数内部定义的,没有指定其他存储类型的变量。格式:[auto]类型说明符变量表在动态存储区分配存储单元,函数调用结束时,其中的数据被释放,每调用一次函数都需重新赋初值一次。#include"stdio.h"voidtest_auto(){ intva=0; printf("auto=%d\n",va); ++va;}main(){ inti; for(i=0;i<4;i++) test_auto();}第七章函数和变量7.6变量作用域及存储类型静态类(static)变量
在函数内用static定义的变量。格式:static类型说明符变量表在静态存储区分配存储单元,函数调用结束后其中数据并不释放。#include"stdio.h"voidtest_static(){
staticintvs=0; printf("static=%d\n",vs); ++vs;}main(){ inti; for(i=0;i<4;i++) test_static();}第七章函数和变量7.6变量作用域及存储类型寄存器类(register)变量用寄存器存放值的变量。格式:
register类型说明符变量表能被说明为寄存器类变量的数据类型只有char、shortint、unsignedint、int和指针类型。第七章函数和变量7.6变量作用域及存储类型全局变量及存储类型全局变量:
在函数外定义的变量。作用域:
从定义位置开始到本源文件结束。所有全局变量都在静态存储区分配存储单元。默认初值为0。全局变量的两种存储类型:
外部的(extern)
静态的(static)第七章函数和变量7.6变量作用域及存储类型外部变量
没有说明为static的全局变量称外部变量。一个C语言程序可由多个源文件组成,如果一个文件要引用另一个文件中定义的外部变量,需用extern关键字说明,一般应在文件的开头且位于所有函数的外面。如在同一个文件中的全局变量的定义位于使用它的函数后面,可在要使用该全局变量的函数中,用extern说明,再使用它(见例)。格式:
extern数据类型变量名文件f1.c的内容:#include"stdio.h"intx;main(){ intsum,y; scanf("%d",&y); store(); sum=x+y; printf("sum=%d",sum);}文件f2.c的内容:externintx;voidstore(){ x=10;}第七章函数和变量7.6变量作用域及存储类型例#include"stdio.h"main(){
externintx,y; intm; scanf("%d%d",&x,&y); m=(x<y)?x:y; printf("Min=%d",m);}
intx,y;第七章函数和变量7.6变量作用域及存储类型静态(static)外部变量
若希望在一个文件中定义的全局变量的作用域仅限于此文件中,则可在定义全局变量的类型说明符的前面使用static关键字。格式:
static类型说明符变量名作用域:从定义位置开始到该文件结束。file1.cstaticinta;main(){……}file2.cexterninta;fun(n)intn;{ …… a=a*n; ……}第七章函数和变量7.6变量作用域及存储类型
内部函数只能在定义它的文件中被调用,不能被其他文件中的函数所调用。定义格式:
static类型说明符函数名(参数表)
外部函数可以被其他文件中的函数所调用。可在定义和调用函数时使用extern说明。定义函数时extern可以省略。第七章函数和变量7.7内部函数和外部函数外部函数file1.cmain(){
externvoidinput(); charbuff[100]; ...... input(buff); ......}file2.cexternvoidinput(b)charb[100];{ ......}第七章函数和变量7.7内部函数和外部函数本章小结:
本章系统介绍了函数的特点及其定义和调用的方法;简单介绍了C语言变量的作用域和函数的作用域。第七章函数第八章结构和联合
主要内容:
结构体的定义、引用及其初始化结构体数组结构体的嵌套联合枚举本章授课理论课:
4学时实践课:4学时教学目的及要求:
通过对本章的学习,要求掌握C语言结构体的特点及其定义、引用和初始化方法;在此基础上,初步认识结构体数组,结构体的嵌套方法;了解联合和枚举的定义、引用的方法。第八章结构和联合本章重点:
结构体的定义、引用和初始化
结构体数组结构体的嵌套联合的定义、引用枚举的定义、引用本章难点:
结构体数组的定义和引用第八章结构和联合结构类型变量的定义结构类型变量的引用结构的初始化结构和函数结构和数组结构的嵌套联合枚举第八章结构和联合先定义结构类型,再定义结构变量在定义结构类型的同时定义结构变量直接定义结构变量定义结构类型名8.1
结构类型变量的定义第八章结构和联
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度农村住房光伏发电设施租赁合同
- 2025年度农村个人房屋买卖合同附宅基地使用权变更合同3篇
- 2025年度公司对赌协议合同-技术研发与创新成果转化3篇
- 2025年农村公路养护与智慧交通系统合作合同2篇
- 2025年度特色养殖场土地租赁及合作开发合同3篇
- 二零二五年度农村房屋买卖与能源供应合同
- 二零二五年度公司员工劳动合同签订与解除管理补充协议3篇
- 二零二五年度网络信息安全分摊保障合同3篇
- 二零二五年度农村房屋赠与合同附农业资源循环利用合同
- 2025年度养猪场养殖废弃物处理设施升级改造转让合同3篇
- 《胆囊结石的护理》PPT
- 安徽云帆药业有限公司原料药生产项目环境影响报告
- 药品质量受权人管理规程
- 校本课程之《红楼梦诗词曲赏析》教案
- 热动复习题材料热力学与动力学
- 马工程-公共财政概论-课程教案
- GB/T 38058-2019民用多旋翼无人机系统试验方法
- GB/T 30902-2014无机化工产品杂质元素的测定电感耦合等离子体发射光谱法(ICP-OES)
- GB/T 22638.2-2016铝箔试验方法第2部分:针孔的检测
- GB/T 13275-1991一般用途离心通风机技术条件
- 千年菩提路解说词
评论
0/150
提交评论