C编程基础知识实用教案_第1页
C编程基础知识实用教案_第2页
C编程基础知识实用教案_第3页
C编程基础知识实用教案_第4页
C编程基础知识实用教案_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C语言与面向对象的C+ C语言是七十年代初贝尔实验室的Dennis Richie 等人在B语言基础上开发出来的。C最初是作为UNIX操作系统的开发语言为人们所认识。 七十年代末,随着微型计算机的发展,C语言开始移植到非UNIX环境中,并逐步脱离UNIX系统成为一种独立的程序设计语言。 C 语言版本(bnbn)很多,为了让开发出来的代码能够在多种平台上运行,1988年美国国家标准协会ANSI对C语言进行了标准化,产生了ANSI C。 C语言是一个面向过程的编程语言。第1页/共73页第一页,共74页。C语言与面向对象的C+ C+包括C的全部特征、属性和优点。 C+支持面向对象程序设计。通过类和对

2、象的概念把数据和对数据的操作封装在一起,通过派生、继承( jchng)、重载和多态性等特征实现了软件重用和程序自动生成,使得大型复杂软件的构造和维护变得更加有效和容易。 C+与C完全兼容。但由于与C兼容,使得C+不是纯正的面向对象的语言,它既支持面向对象程序设计,也支持面向过程程序设计。 C+编译环境有许多版本,国内较为流行的有Visual C+和C+ Builder。第2页/共73页第二页,共74页。一个简单(jindn)的C+程序/ 表示(biosh)注释行,# 引导一个预处理语句;main 表示(biosh)主函数,void 表示(biosh)无返回值cin为输入流,类似C语言的scan

3、f;cout为输出流,类似C语言的printf;其对应的头文件为iostream.hendl 是换行函数;n 为换行符;函数体用括起来。注意与C的区别。它没有用到类的概念。 #include /包含头文件,称为编译预处理行void main() /main()函数,程序入口 /程序体开始 int x; /定义(dngy)变量 cinx;/由键盘输入值并赋值给变量x cout n x= xendl; /输出字符串内容和x的值并换行 /程序体结束运行结果:x=6第3页/共73页第三页,共74页。2.1 数据类型与表达式 程序设计主要包括数据结构(数据类型)和算法(操作步骤)的设计。 运行程序,要先

4、描述(mio sh)算法。而描述(mio sh)算法应先说明算法要用的数据。 数据以变量或常量的形式来描述(mio sh),每个变量或常量都有数据类型。第4页/共73页第四页,共74页。C+语言的命名(mng mng)原则 C+语言的字符集由下述字符构成: 英文字母:AZ,az 数字(shz)字符:09 特殊字符:空格、!、#、%、&、*、_(下划线)、+、=、:、-、 、 /、 、? 、;、.、( ) 、 、 C+的命名原则第5页/共73页第五页,共74页。数据类型基本类型字符型char整型int短整型short长整型long单精度型float双精度型double长双精度型long

5、double逻辑型bool整型integer实数floating枚举型enum数组型 非空数据类型 指针型 非空数据类型*空类型void结构体类型struct共用体类型union类class非基本类型无符号数 unsigned C+中的数据类型(lixng)分为基本类型(lixng)(C+编译系统内置)和非基本类型(lixng)(用户自定义类型(lixng))。第6页/共73页第六页,共74页。 说明: 在不同的系统中,每个变量类型所占的字节数可能有所不同,这里(zhl)列出的是在VC+编译环境中的情况。类类 型型 说说 明明 长长 度度 表表 示示 范范 围围 备备 注注 bool 逻逻辑辑

6、型型 1 false,true char 字字符符型型 1 - -128127 - -27(27- -1) unsigned char 无无符符号号字字符符型型 1 0255 0(28- -1) short 短短整整型型 2 - -32 76832 767 - -215(215- -1) unsigned short 无无符符号号短短整整型型 2 065 535 0(216- -1) int 整整型型 4 - -2 147 483 6482 147 483 647 - -231(231- -1) unsigned int 无无符符号号整整型型 4 04 294 967 295 0(232- -

7、1) long 长长整整型型 4 - -2 147 483 6482 147 483 647 - -231(231- -1) unsigned long 无无符符号号长长整整型型 4 04 294 967 295 0(232- -1) float 浮浮点点型型 4 - -3.410383.41038 7 位位有有效效位位 double 双双精精度度 8 - -1.7103081.710308 15 位位有有效效位位 long double 长长双双精精度度 8 - -1.7103081.710308 15 位位有有效效位位 第7页/共73页第七页,共74页。2.1.1 常量(chngling)

8、1整型常量(chngling)2实型常量浮点小数(xiosh),只使用十进制表示两种表示形式一般形式:16.5,-13.5 ,3.1415926F,0.1f ,0.0 ,2.指数形式: 3e1 1.0e-3默认为double型,如果后缀为F(或f)则为float型。20(十进制表示)0 x14024十六进制表示八进制表示0若干07的数字 0 x若干09的数字及AF的字母第8页/共73页第八页,共74页。3字符常量单引号括起来(q li)的一个字符如A , 2(非数字) , (空格),? 4字符(z f)串常量简称字符(z f)串,用一对双引号括起来的字符(z f)序列例如China5布尔常量(

9、chngling)两个:false(假) true(真)第9页/共73页第九页,共74页。 不可显示字符 无法(wf)通过键盘输入,如响铃、换行、制表符、回车等 C+预定义的转义序列字符形式字符形式 ASCII码码(十六进制十六进制) 功功 能能 n 0A 换行换行 t 09 横向跳格横向跳格(即跳到下一个输出区即跳到下一个输出区) v 0B 竖向跳格竖向跳格 b 08 退格退格 r 0D 回车回车 a 07 响铃响铃 5C 反斜杠字符“反斜杠字符“” 27 单引号单引号 22 双引号双引号 ddd ddd(八进制八进制) 13 位八进制数所代表的字符位八进制数所代表的字符 xhh Hh 12

10、 位十六进制数所代表的字符位十六进制数所代表的字符 第10页/共73页第十页,共74页。2.1.2 变量(binling) 在程序的执行过程中值可变的量。 变量(binling)在使用之前需要首先声明其类型和名称。 声明形式: 变量(binling)名1,变量(binling)名2,变量(binling)名n; 命名规则:由字符、数字和下划线组成,且只能由字符和下划线开头。 声明一个变量(binling)的同时,也可以给它赋初值。 在组成变量(binling)名的元素中,大小写字母含义不同。 作为保留字的单词不能再作为其他名字使用。第11页/共73页第十一页,共74页。C+中常用(chn yn

11、)的保留字数据类型说明符数据类型说明符与修饰符与修饰符bool char class const double enum float int long short signed struct union unsigned void存储类型说明符存储类型说明符 auto extern inline register static访问说明符访问说明符friend private protected public其它说明符其它说明符explicit namespace operator template this typedef typename using virtual 语句与标号语句与标号br

12、eak case catch continue default do else for goto if return switch throw try while运算符及逻辑值运算符及逻辑值 delete false new sizeof true第12页/共73页第十二页,共74页。2.1.3 引用(ynyng) 引用是别名 建立引用时,程序用另一个变量或对象(目标)的名字(mng zi)初始化它 引用作为目标的别名而使用,对引用的改动实际是对目标的改动 引用的声明形式为 &引用名=目标名 或& 引用名=目标名引用型变量的名字(mng zi),必须遵循变量的命名规则第13页/

13、共73页第十三页,共74页。引用(ynyng) 例如,引用一个整型变量:int someInt;int& rInt=someInt; 声明rInt是对整数的引用,初始化为引用someInt。 注意:在这里,要求someInt已经声明或定义。 引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变(gibin)。 引用在声明时必须初始化。第14页/共73页第十四页,共74页。#include /输入输出头文件void main() int someInt; /定义变量(binling)int& rInt=someInt;/引用someInt=6;coutsomeInt:so

14、meIntendl;coutrInt:rIntendl;rInt=7;coutsomeInt:someIntendl;coutrInt:rIntendl;someInt:6rInt:6someInt:7rInt:7例例2-1 如何建立和使用如何建立和使用(shyng)引用引用输出输出(shch)结果结果第15页/共73页第十五页,共74页。引用与指针关系(gun x)的分析void Swap(int &a, int &b) /引用(ynyng)调用 int t=a; a=b; b=t; void Swap(int *a, int *b) /指针(zhzhn)调用 int t;

15、t=*a; *a=*b; *b=t; void Swap(int a, int b) /传值调用 int t=a; a=b; b=t; 区别: 1. 引用是某一对象的别名, 指针是某一变量的地址变量。2. 引用在定义时必须初始化, 即为一已定义对象的别名。指针可在使用时初始化, 可以重新赋值。引用的作用: 1. 引用可象地址一样完成对所代表的对象的操作。 2. 对引用的操作不同于对指针的操作, 它可直接作用于变量, 所以更方便, 更易于理解。引用的缺点: 引用不能为空, 即必须代表某一对象。指针灵活性较好, 但使用较不方便。第16页/共73页第十六页,共74页。2.1.4 表达式表达式由运算符

16、、运算对象和括号组成。1运算符C+语言定义(dngy)了丰富的运算符,如算术运算符、关系运算符、逻辑运算符等分为单目运算符和双目运算符使用形式为运算符 第17页/共73页第十七页,共74页。运算符优先级 优先级运算符结合高 低括号:( )单目:双目:* / % +输出输入:赋值: =内到外,左到右右到左左到右左到右左到右右到左 算术(sunsh)运算符 关系(gun x)运算符优先级运算符结合高 低输出输入: = = !=左到右左到右左到右运算(yn sun)结果:1=真; 0=假第18页/共73页第十八页,共74页。 常用(chn yn)复合赋值运算符优先级运算符结合高 低单目增量:+ +单

17、目减量: 赋值: =, +=,- = *=, /=右到左与单目 同级(tn j).与=同级(tn j)2; 52; 6例:int i=1, j=5;cout + i ; j+ endl;cout i ; j endl;+v为前置增量:先进行增量运算,再取其值参与其它运算v+为后置增量:先取其值参与其它运算,再对原值进行增量运算.输出输出(shch)结果结果第19页/共73页第十九页,共74页。2表达式表达式是程序最基本的组成部分由运算(yn sun)符(如+、-、*、) 、运算(yn sun)对象(也称操作数,可以是常量、变量等等)和括号组成执行表达式所规定的运算(yn sun),所得到的结果

18、值是表达式的值。第20页/共73页第二十页,共74页。表达式的类型转换 当表达式中出现了多种类型数据的混合运算时,首先(shuxin)需要进行类型转换,再计算表达式的值。 表达式中的类型转换分为两种 隐含转换 强制转换第21页/共73页第二十一页,共74页。 隐含转换:若参加运算的操作数类型不一致,则系统自动对数据进行转换具体规则(guz)如下:算术运算和关系运算转换:将低类型数据转换为高类型数据。 char short int unsigned long unsigned-long float double 低 高逻辑运算符:要求必须为bool型;系统自动将其转换为bool型。转换方法是:非

19、0数据转换为true,0转换为false。位运算:要求必须是整数;若是不同类型的整数时,编译系统会自动进行类型转换。赋值运算:要求左值(赋值运算符左边的值)与右值(赋值运算符右边的值)的类型相同。第22页/共73页第二十二页,共74页。 强制类型转换。又称为(chn wi)显式转换,是通过类型标识符和括号来实现的,其语法形式有两种:(表达式)或(类型标识符)第23页/共73页第二十三页,共74页。2.2 程序(chngx)的控制结构 第24页/共73页第二十四页,共74页。2.2.1 选择(xunz)结构C+语言支持(zhch)下列基本的条件语句: if语句 if else语句 if else

20、if语句 ?条件语句 可简化条件表达式的表达形式,语法为: expression1? Expression2:expression3if (expression1)statement1;elsestatement2;第25页/共73页第二十五页,共74页。2.2.2 switch语句(yj) 多次判断(pndun)选择 判断(pndun)的是同一个表达式的值switch(表达式) case 常量(chngling)表达式1:语句1case 常量(chngling)表达式2:语句2case 常量(chngling)表达式n:语句ndefault: 语句n+1只能是整型、字符型和枚举型值不能相同,

21、且次序不影响执行结果每个case分支可以有多条语句,但不用第26页/共73页第二十六页,共74页。while循环(特别适合处理(chl)字符串和其他指针类型)do while循环for循环(通常用于具有固定长度的数据结构)do statement;while(expression);for(expression1;expression2; expression3) statement; 注意:对于while语句(yj)或for语句(yj),循环体中的语句(yj)只有在 while或for语句(yj)中的条件为真时,才会被执行;而dowhile语句(yj)则总能保证循环体被执行一次。while(

22、expression) statement; 2.2.3 循环(xnhun)结构第27页/共73页第二十七页,共74页。2.2.4 其他控制(kngzh)语句1break语句 只用于switch语句或循环体中,作用是使程序从switch语句内跳出(tio ch)或结束循环,继续执行逻辑上的下一条语句。2continue语句仅用于循环体中,作用是结束本次循环,接着开始判断循环条件,决定是否继续执行下一次循环。第28页/共73页第二十八页,共74页。2.3 函 数 第29页/共73页第二十九页,共74页。2.3.1 函数(hnsh)定义 由两部分组成:函数头与函数体。 函数定义的一般语法(yf)形

23、式为: (形式参数表)说明性语句序列;实现函数功能的语句系列;类型标识符: 返回值类型。返回值是返回给主调函数的处理结果,由函数体部分的return语句带回。形式参数表:简称形参表,内容如下: (类型l 形参名1,类型2 形参名2,类型n 形参名n)第30页/共73页第三十页,共74页。2.3.2 调用函数 调用函数先定义后调用,否则,需要在调用函数之前在主调函数中声明函数原型。 函数原型声明形式(xngsh): (含类型说明的形参表); 函数调用形式(xngsh):(实参1,实参2,实参n)第31页/共73页第三十一页,共74页。2.3.3 默认(mrn)参数的函数 在函数定义中通过(tng

24、gu)赋值运算指定默认参数值。 程序调用该函数时: 若给出实参,则用实参初始化形参; 若没有给出实参,则C+编译系统自动以预先赋值的默认参数值作为传入数值。 注意:默认形参值必须按从右向左的顺序定义。 在有默认值的形参右面,不能出现无默认值的形参。 原因:函数调用时,实参初始化形参按从左向右的顺序。void try(int j=3,int k)void try(int j,int k=2,int m)void try(int j,int k=7)void try(int j,int k=2,int m=3)void try(int j=3,int k=2,int m=3)/非法(fif)/非法

25、/合法/合法/合法第32页/共73页第三十二页,共74页。2.3.4 内联函数(hnsh) 内联函数与一般函数不同:不是在调用时发生转移,而是在编译时将函数体嵌入在每一个调用语句处。 优势:节省了参数传递、系统栈的保护与恢复(huf)等开销。 内联函数的定义形式: (含类型说明的形参表) 函数(hnsh)体第33页/共73页第三十三页,共74页。例2-2#include #include inline int max(int a,int b) if(ab)return a; elsereturn b;void main()int a,b,c,d;a=210;b=150;c=20;d=max(a

26、,b);d=max(d,c);coutThe biggest of setw(5)asetw(5)bsetw(5)c is dendl;运行运行(ynxng)结果结果:The biggest of 210 150 20 is 210第34页/共73页第三十四页,共74页。内联函数(hnsh) 注意: 内联函数体内一般不能有循环语句和switch语句。 内联函数不能实现递归操作。 内联函数的定义必须出现在第一次被调用之前(zhqin)。 一般,简单且使用频率很高的函数才说明为内联函数。第35页/共73页第三十五页,共74页。2.3.5 系统函数(hnsh)的使用 系统函数的原型声明已经全部由系统

27、提供,并且已分类存于不同的头文件中。 使用系统函数:用include指令嵌入相应的头文件,再使用。 如:include 常用的函数库有(C语言): math.h -数学运算,如sqrt(x),sin(x) stdio.h - 输入输出函数 stdlib.h - 类型转换,存储(cn ch)分配等 time.h - 时间和日期 string.h - 字符串处理 assert.h - 用于调试程序第36页/共73页第三十六页,共74页。2.4 数组 数组是一种构造数据类型,是具有一定顺序关系的若干相同类型变量的集合体,它占用连续内存(ni cn)单元进行存储。组成数组的变量称为该数组的元素。 如:

28、int c7; 引用数组中的特定位置或元素, 要指定数组中的特定位置或 元素的位置号 数组名是数组首元素的内存(ni cn)地址。 数组名是一个常量,不能被赋值。第37页/共73页第三十七页,共74页。2.4.1 一维数组数组使用前必须先声明。声明一维数组的形式: 数组长度数组中的每个元素(yun s)可以当成普通的变量使用。访问一维数组元素(yun s)的形式:下标引用只 能 逐 个 引 用 数 组 元 素 ( y u n s ) , 而 不 能 一 次 引 用 整 个 数 组例如:a0=a5+a7-a2*3常量(chngling)表达式下标值从0开始,不能超过(chogu)该维的长度减1第

29、38页/共73页第三十八页,共74页。形式1:在声明数组时对数组元素赋以初值 数组长度=第0个元素值,第1个元素值,第n-1个元素值 例如(lr): int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋初值。 例如(lr): int a10=0,1,2,3,4;形式2:在对全部数组元素赋初值时,可以不指定数组长度。 =第0个元素值,第1个元素值,第n个元素值 例如(lr): int a =1,2,3,4,5未指定长度(chngd),由初始化的个数决定数组长度(chngd)一维数组的初始化第39页/共73页第三十九页,共74页。2.4.2 多维数组 多维数组的声明形式:

30、长度1长度2 长度n 访问(fngwn)多维数组中的元素:第1维下标第2维下标第n维下标第40页/共73页第四十页,共74页。二维数组的初始化 形式(xngsh)1:分行给二维数组赋初值 第1维长度第2维长度=第0个第2维数据组,第1个第2维数据组,第n-1个第2维数据组其中,n等于第1维长度。 例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 形式(xngsh)2:将所有数据写在一个内,按顺序赋值 第1维长度第2维长度=第0个元素值,第1个元素值,第m个元素值其中,m小于或等于第1维长度第2维长度。 例如: int a34=1,2,3,4,5,6,7,8,9,1

31、0,11,12;第41页/共73页第四十一页,共74页。二维数组的存储(cn ch)顺序 如: float a34; 存储(cn ch)顺序:按行存放,上例中数组a的存储(cn ch)顺序为: 列 行01230a00a01a02a031a10a11a12a132a20a21a22a23a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23第42页/共73页第四十二页,共74页。 #include void main() int a6=1,7,3,22,9,5; int i,j,t,flag; for(i=0;i6;i+) / 冒泡次数(csh) flag

32、=0;/每一次循环将最大值移动数组中的最后一个元素 for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; flag=1;if(flag=0) break;cout排序(pi x)后的数组为:n;for(i=0;i6;i+) cout ain;2.4.3 数组应用(yngyng)例2-3 已知一个一维数组中的元素为1、7、3、22、9、5,现要求以递增顺序对这个数组中的元素进行排列,结果为1、3、5、7、9、22。下面给出冒泡排序法的程序代码。第43页/共73页第四十三页,共74页。2.4.4 数组作为(zuwi)函数的参数 数组名作参数,形参、实参都应是数组名,类型一致,

33、传送(chun sn)的是数组首地址。对形参数组的改变会直接影响到实参数组。 定义形式: 形式1: (类型标识符 数组名,int 长度) 形式2: (类型标识符 数组名长度)处理(chl)固定长度的数组第44页/共73页第四十四页,共74页。2.4.5 数组与字符串1字符数组的初始化字符型数组通常有两种特殊的初始化方法,形式(xngsh)如下:形式(xngsh)1: char =字符串形式(xngsh)2: char =字符串2字符串的基本运算1) 求字符串的长度2) 字符串的复制3) 字符串的连接第45页/共73页第四十五页,共74页。2.5 指 针第46页/共73页第四十六页,共74页。2

34、.5.1指针变量(binling)的概念指针:一个(y )变量的地址, 用于间接访问变量指针变量:用于存放另一个(y )变量的地址的变量声明,例: int i;int *i_pointer=&i;引用例1: i=3;例2: *i_pointer=3;内存用户数据区变量 i变量 j变量 i_pointer362000200020043010指向(zh xin)整型变量的指针20003i_pointer*i_pointeri2000第47页/共73页第四十七页,共74页。指针(zhzhn)变量的初始化 形式: 数据类型 *指针名初始地址; 例: int *p=&a; 注意事项 用变

35、量地址作为初值时,该变量必须在指针初始化之前已说明,且变量类型应与指针类型一致(yzh)。 可以用一个已赋初值的指针去初始化另一 个指针变量。第48页/共73页第四十八页,共74页。指针(zhzhn)变量的赋值运算指针名=地址“地址”中存放的数据类型与指针类型必须相符。向指针变量赋的值必须是地址常量(chngling)或变量,不能是普通整数。指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long int型。第49页/共73页第四十九页,共74页。与地址相关(xinggun)的运算-*和& *: 指针运算符, 一元(y yun)

36、操作符,表示指针所指向的变量的值。 &: 取地址运算符, 一元(y yun)操作符,得到一个对象的“地址”。 注意: int a,b;int *p=&a;/取地址运算,非引用cout*p; /输出(shch)指针P所指向的内容。第50页/共73页第五十页,共74页。指针变量的算术(sunsh)运算 指针与整数的加减运算 指针 p 加上或减去 n ,其意义(yy)是指针当前指向位置的前方或后方第 n 个数据的地址。 运算的结果值取决于指针指向的数据类型。 指针加一,减一运算 指向下一个或前一个数据。 例如:y=*px+ 相当于 y=*(px+) (*和+优先级相同,自右向左运算)

37、pa-2pa-1pa+1pa+2pa+3*(pa-2)*pa*(pa+1)*(pa+2)*(pa+3)*(pa-1)short *papa第51页/共73页第五十一页,共74页。指向数组元素(yun s)的指针 声明与赋值 例: int a10, *pa; pa=&a0; /或 pa=a; 通过指针引用数组元素 经过上述声明及赋值后: pa+i、a+i 、&ai 都是ai的地址 *pa就是a0,*(pa+1)就是a1,. ,*(pa+i)就是ai. ai, pai , *(pa+i), *(a+i)都是等效的。 不能写 a+,因为(yn wi)a是数组首地址是常量。 第52页/

38、共73页第五十二页,共74页。以指针(zhzhn)作为函数参数 传址:以地址方式(fngsh)传递数据,可以用来返回函数处理结果。 实参是数组名时形参可以是指针。 例:读入三个浮点数,将整数部分和小数部分分别输出#include void splitfloat(float x, int *intpart, float *fracpart) /形参intpart、 fracpart是指针(zhzhn) *intpart = int(x);/ 取x的整数部分 *fracpart = x - *intpart; /取x的小数部分 第53页/共73页第五十三页,共74页。void main() int

39、 i, n; float x, f;cout Enter three (3) floating point numbers endl;for (i = 0; i x;splitfloat(x,&n,&f); /变量(binling)地址做实参cout Integer Part is n Fraction Part is f endl;运行运行(ynxng)结果结果:Enter three (3) floating point numbers 4.7Integer Part is 4 Fraction Part is 0.78.913Integer Part is 8 Fract

40、ion Part is 0.913-4.7518Integer Part is -4 Fraction Part is -0.7518第54页/共73页第五十四页,共74页。2.5.2 指针(zhzhn)与字符串使用(shyng)字符数组的形式:char pString=I love China!;直接用字符型指针的形式:char *cString=I love China!;注意:char*型指针变量可以在定义时进行初始化,其形式为 char *指针变量名=“字符串”;(2) char*型的指针变量(或函数参数)既可以用于接收字符串常量,也可以接收字符型数组。例如:char pString=

41、I love China!;char *myString=This is a string.;myString=pString;第55页/共73页第五十五页,共74页。例2-6 使用char*型指针变量(binling)重写字符串的复制。#include void copy_string(char *from,char *to)for(;*from!= 0;from+,to+)*to=*from;*to=0; /赋值字符串结束标识(biozh)void main()char pSource=I am a teacher.;char pDestination=you are a student.

42、; /pDestination字符串长度pSource字符串长度copy_string(pSource,pDestination);coutpSourceendl;coutpDestinationendl;运行(ynxng)结果:I am a teacher.I am a teacher.第56页/共73页第五十六页,共74页。 C+提供了许多操作字符串数据的标准库函数,如 比较字符串strcmp 字符串连接strcat 确定字符串长度等strlen 使用操作字符串数据的库函数前,必须(bx)在应用程序的开头添加 #include string.h #include 第57页/共73页第五十七

43、页,共74页。C+字符串处理库(标准库)中常用的字符串操作(cozu)函数函函 数数 原原 型型 函函 数数 说说 明明 char *strcpy(char *s1 ,const char *s2) 将字符串将字符串 s2 复制到字符数组复制到字符数组 s1 中,返回中,返回 s1 的值的值 char *strncpy(char *s1,const char *s2, n) 将字符串将字符串 s2 中最多中最多 n 个字符复制到字符数组个字符复制到字符数组 s1 中,返中,返回回 s1 的值的值 char *strcat(char *s1,const char *s2) 将字符串将字符串 s2

44、 添加到字符串添加到字符串 s1后面。后面。s2的第一个字符覆的第一个字符覆盖盖 s1 的的 NULL终止符。返回终止符。返回 s1 的值的值 char *strncat(char *s1,const char *s2, n) 将字符串将字符串 s2 中最多中最多 n 个字符添加到字符串个字符添加到字符串 s1 后面。后面。s2的第一个字符覆盖的第一个字符覆盖 s1 的的 NULL终止符。返回终止符。返回 s1 的值的值 int strcmp(const char *s1,const char *s2) 比较字符串比较字符串 s1 与字符串与字符串 s2。当函数在。当函数在 s1 等于、小于或

45、等于、小于或大于大于 s2 时,分别返回时,分别返回 0、小于、小于 0 或大于或大于 0 的值的值 int strncmp(const char *s1,const char *s2,n) 比较字符串比较字符串 sl 中的前中的前 n个字符与字符串个字符与字符串 s2。 当函数在。 当函数在 s1的前的前 n个字符等于个字符等于、小于或大于、小于或大于 s2时,分别返回时,分别返回 0、小、小于于 0 或大于或大于 0 的值的值 int strlen(const char *s) 确定字符串长度,返回确定字符串长度,返回 NULL终止符之前的字符数终止符之前的字符数 第58页/共73页第五十

46、八页,共74页。2.6 构造(guzo)数据类型 结构( jigu)体类型struct 共用体类型union枚举类型enum 类型自定义语句typedef第59页/共73页第五十九页,共74页。2.6.1 结构(jigu)体 将某些相关的具有不同类型的数据组织到一个数据类型中的复合数据类型称为结构体。 结构体为处理(chl)复杂的数据结构提供了手段。 定义的一般形式为: struct 结构体名 数据类型 成员名1; 数据类型 成员名2; : 数据类型 成员名n; ;第60页/共73页第六十页,共74页。结构(jigu)体变量 必须定义结构体类型的变量(binling),才能使用该结构体。 变量

47、(binling)说明形式: 定义结构体类型的同时定义变量(binling) 定义结构体类型后定义变量(binling) struct 结构名 结构变量(binling)名;struct student int No; /学生(xu sheng)学号 char Name20; /学生(xu sheng)姓名 int Age; /学生(xu sheng)年龄;定义了不同类型的数据项定义该结构体类型的变量stu1,stu2;第61页/共73页第六十一页,共74页。结构(jigu)体变量 注意: 结构变量的存储类型概念、寿命、可见性及使用范围与普通变量、数组等完全一致。 结构变量占内存大小可用 sizeof 运算(yn sun)求出: sizeof(运算(yn sun)量) 例: coutsizeof(int),sizeof(stu1),sizeof(struct student); 结果:4,28,28 结构体成员可以嵌套,即结构体的成员可以是另一个结构体。第62页/共73页第六十二页,共74页。 结构体变量的初

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论