c第六讲数组与字符串(二)

上传人:san****019 文档编号:71446142 上传时间:2019-01-20 格式:PPT 页数:35 大小:519.81KB
返回 下载 相关 举报
c第六讲数组与字符串(二)_第1页
第1页 / 共35页
c第六讲数组与字符串(二)_第2页
第2页 / 共35页
c第六讲数组与字符串(二)_第3页
第3页 / 共35页
c第六讲数组与字符串(二)_第4页
第4页 / 共35页
c第六讲数组与字符串(二)_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《c第六讲数组与字符串(二)》由会员分享,可在线阅读,更多相关《c第六讲数组与字符串(二)(35页珍藏版)》请在金锄头文库上搜索。

1、-1,C+语言及编程技巧,主讲:匡纲要 国防科技大学电子科学与工程学院 湖南长沙,-2,第6讲 数组与字符串(续),-3,第6讲 数组(二),2.2 多维数组(续) 2.3 字符数组与字符串 2.4 小结与程序设计示例,-4,3.2 多维数组,例21 承例13,使用二维数组求解杨辉三角形问题。 分析 图示形式,二维数组应用示例杨辉三角形,核心语句编码 ai0=1;aii=1; for (j=1;j=i-1;j+) aij=ai-1j-1+ai-1j;,-5,3.2 多维数组,/ program YangHui2.cpp using two-dimensional array #include

2、#include void main() const int MAX=12; const char BRANK=; int i,j,n; int aMAX+1MAX+1; do coutn; while (!(n=1 /* for i */ ,二维数组应用示例杨辉三角形,-6,3.2 多维数组,例22 承例13、例21,不使用数组求解杨辉三角形问题。 分析 求行号为i(0in)的i+1个数值 核心语句编码 c=1; coutsetw(6)c; for (j=1;j=i;j+) c=(c*(i-j+1)/j; coutsetw(6)c; /* for j */,不使用数组结构求解杨辉三角形问题,

3、-7,3.2 多维数组,/* program YangHui0.cpp,YANG HUI TRIANGLE,not using any array */ #include #include main() const int MAX=12; const char=; int i,j,n,c; do coutn; while (!(n=1i+),不使用数组结构求解杨辉三角形问题, c=1; for (j=1;j=3*(MAX- 1)+1;j+) coutBRANK; coutsetw(6)c; for (j=1;j=i;j+) c=(c*(i-j+1)/j; coutsetw(6)c; /* fo

4、r j */ coutendlendl; /* for i */ ,-8,3.2 多维数组,例23 编写程序,计算两矩阵a与b的乘积并输出结果,其中,二维数组应用示例矩阵相乘,-9,3.2 多维数组,分析 两矩阵a、b相乘的条件是: 矩阵a的列数=矩阵b的行数,二维数组应用示例矩阵相乘,设c=ab,则有,(i=1,2,3,4;k=1,2),手算结果,43 相等 32,-10,3.2 多维数组,程序设计步骤 (1)分别键入矩阵a、b的元素值; (2)计算两矩阵a、b的乘积,以获得乘积矩阵C的元素值; (3)输出结果矩阵。 核心语句编码 for (i=1;i=M;i+) for (k=1;k=N;

5、k+) s=0; for (j=1;j=P;j+) s+=aij*bjk; cik=s; /* for k */ /* for i */,二维数组应用示例矩阵相乘,(i=1,2,M; k=1,2,N),-11,3.2 多维数组,/ program matrix.cpp matrix multiplication #include #include #define M 4 #define P 3 #define N 2 main() int i,j,k,s; int aM+1P+1,bP+1N+1,cM+1N+1; / enter elements of matrix a and b couta

6、ij; /* for i */ coutendlendl; cout“Enter the elements of matrix b(“P“,”N“):n”;,二维数组应用示例矩阵相乘,-12,3.2 多维数组,for (j=1;jbjk; /* for j */ coutendlendl; /calculate matrix product and print out results cout“The results of a*b is n“; for (i=1;i=M;i+) for (k=1;k=N;k+) s=0; for (j=1;j=P;j+) s+=aij*bjk; cik=s;

7、coutsetw(6)s; /* for k */ coutendl; /* for i */ ,二维数组应用示例矩阵相乘,-13,3.2 多维数组,Enter the elements of matrix a(4*3): 1 2 3 -2 0 2 1 0 1 -1 2 -3 Enter the elements of matrix b(3*2): -1 3 -2 2 2 1 The results of a*b is 1 10 6 -4 1 4 -9 -2,二维数组应用示例矩阵相乘,-14,3.3 字符数组与字符串与字符类型string,字符:构成C+源程序的基本要素 字符常量:用以单引号括

8、起来的字符表示的整数值,如3、 x、n 字符串:作为一个整体对待的一连串字符。它可包含字母、数字和各种专用字符 字符串常量:用以双引号括起来的一连串字符,如: “This is a character string“ 字符数组:以字符类型为基类型的一维数组。一个字符数组中的每一数组元素均存放一个字符,字符、字符串和字符数组,-15,字符数组说明 char 字符数组名常量表达式 例24 字符数组说明示例 char c15; /* 说明一个长度为15的字符数组c */,字符数组说明,其值是个正整数,决定了该字符数组的大小即长度,占一个字节,下同,3.3 字符数组与字符串与字符类型string,-1

9、6,可以在说明字符数组时初始化数组元素。 有几种常用的初始化赋值方式。 方式一 对字符数组的全部数组元素赋以初始值 例25 带初始化赋值的字符数组说明示例 char c15=I, ,l,i,k,e, , T,u,r,b,o, ,C,!;,字符数组初始化,3.3 字符数组与字符串与字符类型string,-17,方式二 对字符数组的部分数组元素赋以初始值 例26 承例25,若写 char c15=I, ,l,i,k,e, ,C,! ; 则有,字符数组初始化,3.3 字符数组与字符串与字符类型string,-18,方式三 对字符数组的全部数组元素赋以初始值时,可在数组说明中省略对该字符数组大小的指定

10、 例27 承例25, 可写 char c=I, ,l,i,k,e, , T,u,r,b,o, ,C,!;,字符数组初始化,建立一个有15个元素的字符数组C,数组中包含字符I、 、l、i、k、e、 、T、u、r、b、o、 、C和! 。,3.3 字符数组与字符串与字符类型string,-19,C语言中的字符串是用空字符0结束的字符数组。 当使用字符数组存储字符串时,必须以空字符0作为其结束标志。 示例 char c15=I, ,l,i,k,e, , T,u,r,b,o, ,C,!; /* 说明具有15个字符数组元素的字符数组C并赋初始值 */ char c16=I, ,l,i,k,e, , T,u

11、,r,b,o, ,C,!, 0; /* 为具有16个字符数组元素的字符数组C赋初始字符串 */,用字符数组存储字符串,3.3 字符数组与字符串与字符类型string,-20,例28 char c16=“I like Turbo C!“; 或 char c16=“I like Turbo C!“; 或 char c=“I like Turbo C!“;,用字符串常量来为一个字符数组赋以初始值,系统自动赋值0,c,3.3 字符数组与字符串与字符类型string,-21,字符串处理库(string.h)中提供了许多有用的函数,用以操作字符串数据、比较字符串、在字符串中查找字符和其他字符串、把字符串按

12、分界符(如空格符)分断、求字符串的长度、建立出错信息字符串,等等。 字符串操作函数:strcpy、strncpy、strcat、strncat 字符串比较函数:strcmp、strncmp 字符串查找函数:strchr、strrchr、strspn、 strcspn、Strpbrk、strstr、strtok 字符串长度函数:strlen 字符串出错函数:strerror,常用字符串处理函数,3.3 字符数组与字符串与字符类型string,-22,表4.1 几个常用的字符串处理函数,常用字符串处理函数,3.3 字符数组与字符串与字符类型string,-23,例32 字符串处理函数使用示例 /

13、program stringdemo.cpp #include #include void main() char s165=“I like C+ very much!“; char s235; int len1,len2; strcpy(s2,“Do you like C+?“); strcat(s1,s2); strcat(s1,“Yes,I do.“); /* Now, s1: “I like C+ very much!Do you like C+?Yes,I do.“ s2: “Do you like C+?“ */,字符串处理函数使用示例,3.3 字符数组与字符串与字符类型strin

14、g,-24,if (strcmp(s1,s2)!=0) len1=strlen(s1); /* 46 */ len2=strlen(s2); /* 16 */ couts1endl; coutThe length of string s1 is “len1“.”endl; couts2; cout“The length of string s2 is “len2“.”endl; /* if */ ,字符串处理函数使用示例,I like C+ very much!Do you like C+?Yes,I do. The length of string s1 is 46. Do you like

15、 C+? The length of string s2 is 16.,3.3 字符数组与字符串与字符类型string,-25,C+字符串类 C+语言提供了字符串类string替代C语言中以0结尾的字符数组所代表的字符串。String不是C+的关键字,而是一个标准标识符。 使用string类必须包含头文件string.h。 为能正确地将上例中的C+程序使用string字符串来求解,需要有几点说明: (1)名字空间 #include #include (2) string变量说明及初始化 可对string变量进行说明,也可令变量初始化。 string s1=“I like C+ very much!”; string s2;,3.3 字符数组与字符串与字符类型string,#include

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号