c语言第7章数组与字符串ppt课件_第1页
c语言第7章数组与字符串ppt课件_第2页
c语言第7章数组与字符串ppt课件_第3页
c语言第7章数组与字符串ppt课件_第4页
c语言第7章数组与字符串ppt课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、一一. 概念概念C提供的数据类型有提供的数据类型有: 标准型和构造型。标准型和构造型。在遇到的大量编程问题中仅用标准型在遇到的大量编程问题中仅用标准型是解决不了的。如是解决不了的。如: 排序排序, 查询,统计,查询,统计,线性方程组求解,矩阵运算等需要用线性方程组求解,矩阵运算等需要用构造类型,数组是其中之一。构造类型,数组是其中之一。数组数组-具有相同类型数据的集合。数具有相同类型数据的集合。数组中每一个数据称为元素,每一个元组中每一个数据称为元素,每一个元素均用统一的数组名和相应的下标确素均用统一的数组名和相应的下标确定。定。数组定义数组定义格式:格式: 一维一维 类型说明符类型说明符 数

2、组名数组名常量常量二维二维 类型说明符类型说明符 数组名数组名常量常量 常量常量例:例: int num10; float score34 ;在程序中定义了一维数组和二维数组;在程序中定义了一维数组和二维数组;编译时在内存开辟连续一批单元,存编译时在内存开辟连续一批单元,存放数组各元素的值。放数组各元素的值。 2 bytesnum0num1num2 num9. 4 bytes.score00score01score02 score23功能功能:定义数组名定义数组名, 类型和大小。类型和大小。num 整型整型 10个元素个元素score 实型实型 12个元素个元素数组元素赋初值数组元素赋初值 指

3、在定义的同时可给数组各元素指在定义的同时可给数组各元素或部分元素赋初值,即初始化。在编或部分元素赋初值,即初始化。在编译时除分配一定的单元,同时将初值译时除分配一定的单元,同时将初值赋给相应单元赋给相应单元(元素元素), 否则是随机值。否则是随机值。 如果给全部元素赋值,则在数组如果给全部元素赋值,则在数组定义时,可以不给出数组长度,系统定义时,可以不给出数组长度,系统将根据初值的个数自动确定数组的长将根据初值的个数自动确定数组的长度。度。num0num1.019static-表示静态存储; 若定义成:static int num10; 所有元素均赋 0; 部分元素赋初值:static int

4、 num10=0,1,2,3,4; 其它元素均赋 0;num9一维数组:一维数组:static int num10 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;也可 static float score34=1,1,1,1,2,2,2,2,3,3,3,3;也可 static float score 4=1,1,1,1,2,2,2,2,3,3,3,3;而 static float score34; 则所有元素均赋 0;部分元素赋初值:static float score34=1,2,3;表示score00; score10; score20分别赋1,2,3,其它元素均为 0。

5、static float score34=1,7,8;表示score 00=1;score10=7,score11=8,其它元素均为 0; 二维数组二维数组static float score34=1,1,1,1,2,2,2,2,3,3,3,3,;对数组元素的操作对数组元素的操作 在在C中,只能对已定义的数组元中,只能对已定义的数组元素逐个的操作素逐个的操作(赋值、输出等赋值、输出等),不可,不可对整个数组一次进行赋值对整个数组一次进行赋值 , 输出等。输出等。凡是变量可出现的地方,数组元素凡是变量可出现的地方,数组元素也可出现。也可出现。 数组元素引用格式:数组元素引用格式:一维一维 数组名

6、数组名 二维二维 数组名数组名 一维数组各元素一维数组各元素: 赋值赋值, 输出输出main( ) int num10, i; for (i=0; i10; i+) numi=i+1; for(i=0; i10; i+) numi *= 10; for (i=0; i10; i+) printf(num%d = %d n, i, numi ); main( ) int num10, i; for (i=0; i10; i+) scanf(%d, &numi); for (i=0; i10; i+) printf(num%d = %d n, i, numi);二维数组各元素二维数组各元素

7、: 赋值赋值,输出输出main( ) int score34; int i, j; for (i=0; i3; i+) for (j=0; j4; j+) scanf(%d, &scoreij); for (i=0; i3; i+) for (j=0; j4; j+) printf (score%d%d=%d, i, j, scoreij); printf(n); 数组在编程中应用数组在编程中应用例:某班例:某班3人人, 2门课门课, 试编程试编程:1. 键盘输入每个人学号和键盘输入每个人学号和2门课成绩门课成绩;2. 求出每人平均分和每门课的平均求出每人平均分和每门课的平均分。分。

8、变量设置变量设置: num3 存放每个人的学号存放每个人的学号score32 存放存放30人人,每人每人9门课成绩门课成绩aver3 存放每人平均成绩存放每人平均成绩aver12 存放每门课平均成绩存放每门课平均成绩 main () int i, j; int score32, num3, sum; float aver3, aver12; for (i=0; i3; i+) scanf (%d, &numi); for (j=0; j2; j+) scanf (%d, &scoreij); /* 输入每人学号和2门课成绩 */ for (i=0; i3; i+) sum=0;

9、 for (j=0; j2; j+) sum+=scoreij; averi =sum/2; /* 求出每人平均分 */ for (i=0; i3; i+) printf (Student.%d t %f n, i+1, averi);/* 输出每门课平均分 */ for (i=0; i2; i+) sum=0; for (j=0; j3; j+ ) sum+=scoreji; aver1i =sum/3; /* 求每门课平均分 */ for (i=0; i2; i+) printf (Course.%d t %f n, i+1, aver1i);/* 输出每门课平均分 */例:已知三行三列数

10、组各元素值例:已知三行三列数组各元素值, 试分别求各行元素试分别求各行元素,各列元素和每个元素之和。各列元素和每个元素之和。main() int i, j; static int a44=3,5,6,0, 2,1,4,0, 3,5,4,0, 0,0,0,0; for (i=0; i3; i+) for (j=0; j3; j+) ai3+=aij; a3j+=aij; a33+=aij; for (i=0; i4; i+) for (j=0; j4; j+) printf (%5d, aij); printf(n); 第第0列各元素之和列各元素之和所有元素之和所有元素之和第第 0 行各行各 元

11、素之和元素之和3 5 6 xx2 1 4 xx3 5 4 xxxx xx xx xx例:矩阵相乘例:矩阵相乘: C=A*B条件条件: A阵的列数阵的列数 = B阵的行数阵的行数 乘积矩阵的行数为乘积矩阵的行数为A阵行阵行, 列为列为B阵列阵列main( ) static int a33=1,2,3 ,4,5,6, 7,8,9; static int b32=1,2, 3,4, 5,6; static int c32; int i, j, k; for (i=0; i3; i+) for (j=0; j2; j+) for (k=0; k3; k+) cij+=aik * bkj; for (i

12、=0; i3; i+) for (j=0; j2; j+) printf (%5d, cij); printf(n); 1 3 5 7 9 2 4 6 8 00 3 5 7 9 2 4 6 8 10 1 5 7 9 3 4 6 8 20 1 2 7 9 5 4 6 8 30 1 2 3 9 7 5 6 8 40 1 2 3 4 9 7 6 8 50 1 2 3 4 5 9 7 8 60 1 2 3 4 5 6 9 8 70 1 2 3 4 5 6 7 9 80 1 2 3 4 5 6 7 8 91 3 5 7 9 2 4 6 8 01 3 5 7 2 4 6 8 0 91 3 5 2 4 6

13、7 0 8 91 3 2 4 5 6 0 7 8 91 2 3 4 5 0 6 7 8 91 2 3 4 0 5 6 7 8 91 2 3 0 4 5 6 7 8 91 2 0 3 4 5 6 7 8 91 0 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9字符数组字符数组 C中无字符串变量中无字符串变量, 字符串是用字符字符串是用字符数组处理数组处理. 定义定义:一维一维 char cn5 (常用来处理一个字符串常用来处理一个字符串)二维二维 char name308 (常用来处理多个字符串常用来处理多个字符串)赋初值赋初值: static char cn5=C,h,i

14、,n,a; static char cn6=C,h,i,n,a,0; static char cn6=“China”; static char cn6=“China”; static char cn =“China”;系统定义系统定义, 自动在串尾加自动在串尾加0。若提供的初值小于数组长度,则只将这些字若提供的初值小于数组长度,则只将这些字符赋给数组中前面的元素,其余元素自动空符赋给数组中前面的元素,其余元素自动空字符字符0若对全体元素赋初值,可省长度说明若对全体元素赋初值,可省长度说明均等价cn0cn1cn2cn3cn4cn5China0字符串结束标志输出时: printf(“%s n”,

15、cn); cn 是字符数组名,当遇到0输出结束 printf(“%c n”, cn0); cn0 是字符数组元素。在内存存放:例:实现串拷贝main( ) static char s2 =China; char s120; int i; for(i=0; s2i!=0; i+) s1i=s2i; s1i=0; printf (%sn, s1);例:实现串连接#include main( ) char s130, s220; int i, j; gets(s1); gets(s2); i=0; while ( s1i ) i+; for (j=0; s2j; j+, i+) s1i=s2j; s

16、1i=0; printf(%s n, s1);例:字符串比较#include main( ) char s120, s220; int i; gets(s1); gets(s2); for (i=0; s1i=s2i; i+) if (s1i=0) break; printf(%d n, s1i-s2i);例:输入一串字符, 统计该串里单词的个数 (单词间用空格分开), 串结束用回车.Num:统计串的个数:统计串的个数,Word:当遇到一个或多个空格:当遇到一个或多个空格, word=0; 当遇到第一个非空格当遇到第一个非空格, 若原若原word是是0, 表表示新词开始示新词开始, num增增

17、1, 同时同时word=1;键入字符串stri != 0stri= ?Yword=0Yword=0?num增1, word=1 N输出numN二维字符数组运用二维字符数组运用, 常用来处理多个常用来处理多个字符串字符串.例例: char name308 该二维数组该二维数组用来存放某班用来存放某班30个学生的名字个学生的名字.30个人个人每人的名字每人的名字,其长度其长度 =8name308例例: 已知三个字符串已知三个字符串, 挑出并输出最大串。挑出并输出最大串。C C T V 0 .B T V 0 .N T V 0 .c0是第一个串在内存存放首地址c1是第二个串在内存存放首地址c2是第三个串在内存存放首地址str是字符串在内存存放首地址# include main( ) char str20, c320; int i; for (i=0; i 0) strcpy(str, c0); else strcpy(str, c1); if (strcmp (c2, str) 0) strcpy(str, c2); printf (max=%s n, str);例:键入一个数字串例:

温馨提示

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

评论

0/150

提交评论