c语言程序设计第7章课件_第1页
c语言程序设计第7章课件_第2页
c语言程序设计第7章课件_第3页
c语言程序设计第7章课件_第4页
c语言程序设计第7章课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第第第第第7 7 7 7 7 7章章章章章章 数数数数数数 组组组组组组2022-5-822022-5-83l一个人一个人N门课的成绩怎样存储和处理?门课的成绩怎样存储和处理?l一个班一个班N门课的成绩怎样存储和处理?门课的成绩怎样存储和处理?.2022-5-84类型说明符类型说明符 数组名数组名常量表达式常量表达式;2022-5-852022-5-86score0score1score2score3score491.534.567.572.084.0低地址低地址高地址高地址score数组数组2022-5-872022-5-88 下标从下标从0开始(下界为开始(下界为0),数组的最大下标)

2、,数组的最大下标(上界)是数组长度减(上界)是数组长度减1。 例如:例如: int a10; scanf (%d,&a10); /* 下标越界下标越界 */ C编译系统不做越界检查,如果引用的数组元素编译系统不做越界检查,如果引用的数组元素超出数组范围会破坏其他变量的值。超出数组范围会破坏其他变量的值。2022-5-89 是是引用引用数组元素数组元素时,时,根据数组的根据数组的和和数,计算出数,计算出该元素的实际地址,该元素的实际地址,取出该地址的取出该地址的进行操作。进行操作。如引用如引用 score2:浮点型浮点型数据数据占占4个字节。个字节。(1)计算计算 2000+2*4=20

3、08(2)取出取出2008的内容的内容2000H2004H2008H200CH218CHscore0score1score2score3score491.534.567.572.084.02022-5-8102022-5-811初始化:在定义数组时给数组元素赋初值。初始化:在定义数组时给数组元素赋初值。1在定义数组时,对全部数组元素赋初值在定义数组时,对全部数组元素赋初值 例如:例如:int a5=0,1,2,3,4;花括号表示数据的集合。花括号表示数据的集合。此时可以省略数组长度,而由初值的个数来自动确定此时可以省略数组长度,而由初值的个数来自动确定数组长度。例如:数组长度。例如:int a

4、 =0,1,2,3,4;这对于字符数组这对于字符数组特别有用。特别有用。2在定义数组时,对部分数组元素赋初值在定义数组时,对部分数组元素赋初值 例如:例如:int a5=1,2,3;系统为其余元素赋系统为其余元素赋 0 。3当初值的个数多于数组元素的个数时,编译出错当初值的个数多于数组元素的个数时,编译出错 例如:例如: int a5=0,1,2,3,4,5;2022-5-812【例例6.16.1】将将1010个人的成绩输入计算机后按逆序显示。个人的成绩输入计算机后按逆序显示。#define N 10 N代表常量代表常量10main( ) int i;float scoreN; for (i=

5、0; i=0; i-) printf(“%6.1f”,scorei); 若不用数组,如何输出?若不用数组,如何输出? 运行情况如下:运行情况如下:67 74 89 92 34 67 83 95 73 78 78.0 73.0 95.0 83.0 67.0 34.0 92.0 89.0 74.0 67.02022-5-813l求最大求最大/小值采用打擂台的方法。小值采用打擂台的方法。l定义一维数组定义一维数组a存放被比较的数。存放被比较的数。l定义变量定义变量max:最大值,:最大值, min:最小值,:最小值, k:最大值下标:最大值下标 , j:最小值下标:最小值下标 。l各数依次与擂主进行

6、比较,各数依次与擂主进行比较, 若若aimax 则则: max=ai; k=i; 否则判断否则判断: 若若aimin 则则: min=ai; j=i; l当所有的数都比较完之后,将当所有的数都比较完之后,将aj=max; k=min;l输出输出a数组。数组。2022-5-814程序运行情况如下:程序运行情况如下:5 7 2 3 1 5 1 2 3 72022-5-815第一趟排序情况如下:第一趟排序情况如下: 3 7 5 6 8 0第一次第一次 3和和7比较,不交换比较,不交换 3 7 5 6 8 0第二次第二次 7和和5比较,交换比较,交换 3 5 7 6 8 0第三次第三次 7和和6比较,

7、交换比较,交换 3 5 6 7 8 0第四次第四次 7和和8比较,不交换比较,不交换 3 5 6 7 8 0第五次第五次 8和和0比较,交换比较,交换 3 5 6 7 0 8在第一趟排序中,在第一趟排序中,6个数比较了个数比较了5次,把次,把6个数中个数中的最大数的最大数8排在最后。排在最后。2022-5-8162022-5-817 冒泡法排序冒泡法排序for (i=0; iN; i+) 输入输入ai for (j=1;jN; j+) for (i=0; iai+1 T F ai与与ai+1交换交换输出输出a0aN-12022-5-818/*控制比较的趟数控制比较的趟数 */*两两比较的次数两

8、两比较的次数 */程序运行情况如下:程序运行情况如下:3 7 5 6 8 0 0 3 5 6 7 82022-5-8192022-5-820图6.3 选择法排序for (i=0; iN; i+) 输入ai for (j=0; jN-1; j+) for (i=j+1; iai T F aj与ai交换 输出a0aN-12022-5-821for (j=0; jN-1; j+) /*确定基准位置确定基准位置 */ for(i=j+1; iai) t=aj;aj=ai;ai=t; 程序运行情况如下:96 78 65 86 40The sorted numbers: 40 65 78 86 96202

9、2-5-822类型说明符类型说明符 数组名常量表达式数组名常量表达式1常量表达式常量表达式2; 的定义的定义2022-5-823x0是数组名,是元素是数组名,是元素x00的地址的地址x1是数组名,是数组名, 是元素是元素x10的地址的地址二维数组可看作是一种特殊的一维数组二维数组可看作是一种特殊的一维数组2022-5-8242022-5-825x00 x01x02x10 x11x12元素元素的的2022-5-8262022-5-8272022-5-828a34=3; /* 下标越界下标越界 */a1,2=1; /* 应写成应写成 a12=1; */例:例:int a34; a00=3; a01

10、=a00+10; 2022-5-8292022-5-8302022-5-831例:例:int a23=1,2,3,4,5,6例例:int a23=1,2,3,4,5,6;例:例:int a23=1,4;初始化后结果:初始化后结果: 1 0 0 4 0 02022-5-8322022-5-8332022-5-834main( ) int a43,i,j,k; for (i=0; i4; i+) for (j=0; j3; j+) scanf(%d,&aij); for (i=0; i4; i+) printf(n); for (j=0; j3; j+) printf(%dt ,aij);

11、 printf(n); 程序运行情况如下:程序运行情况如下:1 2 3 4 5 6 7 8 9 10 11 12 1 2 34 5 67 8 910 11 122022-5-835 图图6.4 查找最大元素查找最大元素max=|a00|,row=0,colum=0 for (i=0; iN; i+) for (j=0; jmax T F max=|aij| row=i colum=j输出绝对值输出绝对值最大的元素及行列下标最大的元素及行列下标2022-5-836程序运行情况如下:程序运行情况如下:34 56 12 67 23 12 67 43 98 54 65 45 66 16 24 37 8

12、3 25 64 19 max=98,row=1,colum=32022-5-8377.3 字符数组与字符串字符数组与字符串7.3.1 7.3.1 基本概念基本概念不是字符串不是字符串2022-5-8382022-5-839不是字符串不是字符串0,表示字符串结束,由它前面的字符组成字符串。2022-5-8402022-5-841b0b13思考:哪个数组存放的是字符串思考:哪个数组存放的是字符串2022-5-842可以为可以为数组元素数组元素赋值,也可以输入赋值,也可以输入/ /输出输出元元素的值。素的值。书141页例题2022-5-843char c = China;printfC是数组首地址是

13、数组首地址输出时遇输出时遇 0 为止为止 2022-5-844存中。存中。2022-5-8452022-5-8462022-5-8472022-5-8482022-5-8497.3.6 字符串处理函数字符串处理函数#include stdio.h #include string.h 2022-5-8501字符串输出函数字符串输出函数puts( ):char str1 = China;char str1 = China;char str2 = Beijing; char str2 = Beijing; puts(str1);puts(str1);puts(str2);puts(str2);输出结

14、果:输出结果:China China BeijingBeijing2022-5-851从键盘读入一个字符串存入从键盘读入一个字符串存入str数组中,并且数组中,并且得到一个函数值,该函数值是得到一个函数值,该函数值是str数组的首地址。数组的首地址。程序运行情况如下:程序运行情况如下:How are you? Fine thank you. How are you?Fine thank you. :main( ) char c120,c220; gets(c1); gets(c2); puts(c1); puts(c2);2022-5-852把把str2str2中的字符串连接到中的字符串连接到

15、str1str1字符串的后字符串的后面,结果放在面,结果放在str1str1数组中,函数值是数组中,函数值是str1str1的值。的值。必须足够大char str121=char str121=beijingbeijing and ; and ;char str2 =shanghai;char str2 =shanghai;printfprintf(%s,(%s,strcatstrcat(str1,str2);(str1,str2);2022-5-853s1必须足够大思考:这样赋值s1=Beijing ;或 s1=s2;可以吗?为什么?s1的结果的结果char s110,s2 = Beijin

16、g;char s110,s2 = Beijing; strcpystrcpy(s1,s2);(s1,s2);或:或:strcpystrcpy(s1,Beijing);(s1,Beijing);2022-5-854abcde0str1abcde0str2abcabcde0bcd0Abcde0str1str2str1str22022-5-855main( ) char s1 = aBC,s2 = abc; if (strcmp(s1,s2)=0) printf(s1=s2); else if (strcmp(s1,s2)0) printf(s1s2); else printf(s1=0&s

17、i=A&si=a&si=z ) lett+; else oth+; for (i=0; i10; i+) printf(%d:%d个个 ,i,digi); printf(nspace:%d letter:%d other:%dn,sp,lett,oth);程序运行情况如下程序运行情况如下:China 1949.10.12004.10.10:4个 1:5个 2:2个 3:0个 4:1个 5:0个 6:0个 7:0个 8:0个 9:2个space:1 letter:5 other:52022-5-861Illegalm onth.0Decen m ber 0将将1212个英文月份以字符串的形式存放到个英文月份以字符串的形式存放到month1315month1315中,一行存放一个字符串。中,一行存放一个字符串。 2022-5-862main( )char month 15=Illegal month., January, February, March,

温馨提示

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

评论

0/150

提交评论