C程序语言课件:第8章 数组_第1页
C程序语言课件:第8章 数组_第2页
C程序语言课件:第8章 数组_第3页
C程序语言课件:第8章 数组_第4页
C程序语言课件:第8章 数组_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、2022-4-222/492022-4-223/49保存大量保存大量同类型的同类型的相关数据相关数据2022-4-224/49a9a8a7 a1a0数组首地址数组首地址基类型基类型下标从下标从0开始开始2022-4-225/49a9a8a7 a1a02022-4-226/492022-4-227/492022-4-228/49main() int a4 = 1,2,3,4, b4; b = a; 解决方法解决方法 方法方法1:1:逐个元素赋值逐个元素赋值 b0=a0; b1=a1; b2=a2; b3=a3; 方法方法2:2:通过循环赋值通过循环赋值 int i; for (i=0;i4;i+

2、) bi = ai; 原因原因: :数组名表示数组的首地址数组名表示数组的首地址, ,其值不可改变其值不可改变! !2022-4-229/492022-4-2210/492022-4-2211/49运行程序或单步执行观察变量变化情况可以看到,运行程序或单步执行观察变量变化情况可以看到,变量变量c c和和a a的值因数组越界而被悄悄破坏了的值因数组越界而被悄悄破坏了12345612078910112022-4-2212/492022-4-2213/491 2 34 5 06 0 00 0 0结果:结果:5, 0, 0【例例】若若int a 3=1, 2, 3, 4, 5, 6, 7,则则a数组的

3、第一维大小是多少?数组的第一维大小是多少? 1 2 34 5 67 0 02022-4-2214/492022-4-2215/49short int a23;a0a1a10 a11a12a00 a01a02a00a01a02a10a11a12需知道数组每行列数才能从起始地址开始正确读出数组元素需知道数组每行列数才能从起始地址开始正确读出数组元素2022-4-2216/492022-4-2217/492022-4-2218/492022-4-2219/492022-4-2220/492022-4-2221/492022-4-2222/492022-4-2223/49#include #defin

4、e N 40int ReadScore(int score);int FindMax(int score, int n);int main() int scoreN, max, n;n = ReadScore(score);printf(Total students are %dn, n);max = FindMax(score, n);printf(The highest score is %dn, max); return 0;2022-4-2224/49max(i=0)max(i=2)max(i=3)2022-4-2225/492022-4-2226/492022-4-2227/4920

5、22-4-2228/492022-4-2229/492022-4-2230/492022-4-2231/49tempscorejscorei ?70507050702022-4-2232/49void DataSort(int score, int n) /*交换法排序交换法排序*/int i, j, temp;for (i=0; in-1; i+)for (j=i+1; j scorei) /*从高到低从高到低*/ temp = scorej; scorej = scorei; scorei = temp; 2022-4-2233/49k=1k=2k=0k=12022-4-2234/49k=

6、3k=4k=3k=42022-4-2235/492022-4-2236/49void DataSort(int score, long num, int n) /*选择法选择法*/ int i, j, k, temp1; long temp2; for (i=0; in-1; i+) k = i; for (j=i+1; j scorek) k = j; /*记录最大数下标位置记录最大数下标位置*/ if (k != i) /*若最大数不在下标位置若最大数不在下标位置i*/ temp1 = scorek; scorek = scorei; scorei = temp1; temp2 = num

7、k; numk = numi; numi = temp2; 2022-4-2237/492022-4-2238/492022-4-2239/49哈,找到了!哈,找到了!事先不必排序事先不必排序2022-4-2240/49哈,找到了!哈,找到了!按升序排序按升序排序2022-4-2241/49唉,没找到!唉,没找到!2022-4-2242/49找到时返回找到时返回下标位置下标位置找不到时找不到时 返回返回-1-1若未按学号排序,若未按学号排序,则如何修改程序?则如何修改程序?2022-4-2243/49void DataSort(int score, long num, int n) /*选择法

8、选择法*/ int i, j, k, temp1; long temp2; for (i=0; in-1; i+) k = i; for (j=i+1; jn; j+) if (numj numk) k = j; /*记录最大数下标位置记录最大数下标位置*/ if (k != i) /*若最大数不在下标位置若最大数不在下标位置i*/ temp1 = scorek; scorek = scorei; scorei = temp1; temp2 = numk; numk = numi; numi = temp2; 按学号由小按学号由小到大排序到大排序2022-4-2244/49a00a01a02a10a11a12a00a01a02a10a11a12实际传送的是数组第一个元素的地址实际传送的是数组第一个元素的地址2022-4-2245/49a00a01a02a10a11a12a00a01a02a10a11a12实际传送的是数

温馨提示

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

评论

0/150

提交评论