资源描述:
《C语言程序设计(第二版) 教学课件 作者 王曙燕chap6 数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第6章数组数组一维数组二维数组字符数组一个人N门课的成绩怎样存储和处理?一个班N门课的成绩怎样存储和处理?......这些数据的特点:具有相同的数据类型。为了方便地使用这些数据,C语言提供了一种构造数据类型:数组。例如:存储学生成绩用实型数组score[5]其中:score是数组名。该数组可以存放5个成绩,分别用下标变量表示:score[0],score[1],…score[4]。下标变量也称为数组元素。6.1一维数组C语言中提供了一种构造类型数据——数组,它由一组带下标变量组成。用数组存储数据,可利用循环改变下标值对各个变量进行相同的重复
2、处理。定义:数组元素只带一个下标格式:元素类型名数组名[数组长度]〖={元素初值列表}〗;说明:元素类型名定义数组中每个元素的类型,数组名的命名规则同变量名——合法的标识符[]中的数组长度表示该数组中包含的元素个数。应为常量表达式(常量和符号常量),不允许有变量。#defineN10……floatscore1[N],score2[N];intnum[10+N];charc[26];intarray(10);intb[10.0]intn;floatscore[n];doubleb['a'..'d'];charstr[];存储方式:元素按下标的顺序连续分配在
3、内存中数组下标从0开始。一维数组的数组元素在内存里按顺序存放。数组名代表数组的首地址,即score的值与score[0]的地址值相同。a表示&a[0]score[0]score[1]score[2]score[3]score[4]91.534.567.572.084.0低地址高地址score数组C语言中,数组元素的下标一律从0开始升序编排。[]是下标运算符,引用数组元素时,根据数组的首地址和下标数,计算出该元素的实际地址,取出该地址的内容进行操作。如引用score[2]:(1)计算2000+2*4=2008(2)取出2008的内容2000H2004H20
4、08H200CH218CHscore[0]score[1]score[2]score[3]score[4]91.534.567.572.084.0一维数组元素的引用格式:数组名[下标]下标从0~数组长度减1下标为整型表达式,确定所引用元素的序号注意:下标不能越界main(){inti,d[9]={1,2,3,4,5,6,7,8,9};i=d[0]+d[8];d[3]=d[0]+d[d[3]]*2;d[9]=i;d[0]=d[i-d[3]];for(i=1;i<=9;i++)printf("d[%d]=%d",i,d[i]);}/*下标越界*/9=/*
5、i=9时下标越界*/C编译系统不做越界检查,如果引用的数组元素超出数组范围会破坏其他变量的值。可选项“={元素初值列表}”是给各元素赋初值,称为对数组进行初始化。初值列表由逗号分割组成,列表含全部元素的初始值intn[10]={1,2,3,4,5,6,7,8,9,10};intn[10]={1,1,1,1,1,1,1,1,1,1};元素初值列表中仅含前面部分元素的初值intn[10]={1,2,3,4,5};/*n[5]~n[9]系统设置为0*/如果元素初值列表含全部元素的初始值,可省略数组长度。数组长度由初值个数来自动确定inta[]={0,1,2,3
6、,4,5};/*数组长度为*/6当初值的个数多于数组元素的个数时,编译出错例如:inta[5]={0,1,2,3,4,5};例:将10个人的成绩输入计算机后按逆序显示。#defineN10main(){inti;floatscore[N];for(i=0;i=0;i--)printf("%-6.1f",score[i]);}运行情况如下:6774899234678395737878.073.095.083.067.034.092.089.074.067.0一维数组应用举例
7、例6.1将任意一个十进制数转换成二进制数,然后以二进制数形式输出。算法分析:1、十进制到二进制数转换原理2、方法例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111110111余余余余余余main(){inti=0,n,d[40];scanf(“%d”,&n);while(n>0){d[i]=n%2;i++;n=n/2;}for(i--;i>=0;i--)printf(“%1d”,d[i]);printf(“”);}i=0输出从a[i-1]到a[0]n=n/2i++a[i]=n%2输入nwhile
8、(n>0)例6.2从键盘输入10个学生的成绩,由高到低排序输出成绩。算法分析:排