C语言程序设计实用教程 第6章

上传人:woxinch****an2018 文档编号:45325147 上传时间:2018-06-15 格式:PPT 页数:66 大小:196KB
返回 下载 相关 举报
C语言程序设计实用教程 第6章_第1页
第1页 / 共66页
C语言程序设计实用教程 第6章_第2页
第2页 / 共66页
C语言程序设计实用教程 第6章_第3页
第3页 / 共66页
C语言程序设计实用教程 第6章_第4页
第4页 / 共66页
C语言程序设计实用教程 第6章_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《C语言程序设计实用教程 第6章》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程 第6章(66页珍藏版)》请在金锄头文库上搜索。

1、第6章 数组教学提示数组是由基本数据类型构造出来的、有固定 大小和相同类型的变量的集合。通过数组可以 对一批具有相同数据类型的数据进行处理。教学目标掌握一维数组、二维数组和字符数组的定义 、初始化及基本操作,掌握数组元素的引用、 赋值、输入和输出,并能运用数组解决数值和 非数值数据处理中的典型问题。6.1数组的概念在实际应用中,有时要处理的数据量可 能很大,例如要对几千名学生的成绩从高 到低排序。对于这种需要处理大批相同类 型数据的情况,在程序设计中最有效的办 法就是使用数组。数组和循环相结合,编写出的程序魅 力无穷。6.1.1 引例例6.1 求一个班100个学生的平均成绩,并 统计成绩高于平

2、均分的学生人数。分析:求平均成绩,可用简单变量和循环结构相结 合来完成 ,程序段如下:float score,sum=0;for(i=1;iaver) n+;printf(“average=%.2f n ”,aver);printf(“n=%d”,n);scoreN表示数组,用来存放 N个学生的成绩 scorei是数组元素,用来存放第i个 学生成绩* 6.1.2 数组中的相关概念1数组:是指一组具有相同类型的数据的有序的集合。2数组下标:是数组元素在数组中位置的一个索引或指示 。3数组元素:数组中的元素。4数组大小:数组中元素的个数,也称数组长度。5数组的维数:数组元素下标的个数。根据数组的维

3、数可以将数组分为一维、二维、三维、多 维数组。62 一维数组只有一个下标的数组称为一维数组。一维数组 通常和一重循环相配合,对数组元素进行处理。6.2.1 一维数组的定义定义数组即指明数组名、数组类型和数组大小,定义一维数 组的格式为:类型标识符 数组名整型常量表达式;例如:int a10; 定义了一个一维数组a,该数组有10个元素,其中每个数组元 素都是整型数据。 一维数组定义说明:1.定义格式:类型标识符 数组名整型常量表达式;2.例: int a10; 其中: 1、类型标识符表示数组中元素的数据类型 。 2、数组名命名规则必须遵循C语言中的标 识符命名规则。 3、整形常量表达式表示数组长

4、度,可以包 含常量和符号常量,但不能使用变量,例 如下面的定义是不对的:int n=10; int bn;6.2.2 一维数组元素的引用数组元素的引用是用数组名加下标组成的。一维 数组元素的引用形式为:数组名下标需要注意的是:C语言中数组的下标是从0开始的。例如若定义了一个数组:int a5; 则数组a 中的5个元素依次是:a0,a1,a4 注意:下标从0到4,数组中并没有a5这个元素。说明: 1.引用数组元素时下标可以是整型变量、整形常量 或整形表达式; 2.数组元素本身可以看作是同一个类型的单个变量 ; 3.C编译系统不会对数组下标越界进行检查。错误 地引用越界数组元素可能会破坏数组后的其

5、他 数据,造成不可预料的后果。因此引用数组元 素时,要注意避免下标越界。例6.2 写出下面程序的运行结果。main() int a10, i;for(i=0; i main() int i,a4;printf(“nplease input array a(4 numbers):”);for(i=0;i main( ) int a5= 80,67,76,87,78;int i,max,loca;max=a0; loca=0; for(i=1;i #define N 10 main() int aN,i,j,t;printf(“please input array a:”);for(i=0;iaj

6、+1) t=aj;aj=aj+1;aj+1=t; printf(“after sorted:”);for(i=0;i #define N 5 main( ) int i,j;float aN5;printf(“input ID and grades:n”);for(i=0;i #define N 4 main( ) int i,j,k,aNN;int bNN;printf(“input array A:n”);for ( i=0; i main() char a15,b20=“abcdn1234“;gets(a);puts(a);puts(b);程序运行时,输入: How are you 输出

7、: How are you abcd 1234 6.4.4字符串处理函数1.求字符串长度函数strlen()字符串长度是指字符串中的字符个数, 但 不包括字符串结束符。 函数调用格式为: strlen(str)函数功能:求字符串str的长度,并将其作 为 函数值返回。 例如:int len;char s10=”student”;len=strlen(s);则len的值为7,而strlen(“hello world!”)的 函数值为12。 2. 字符串连接函数strcat() 函数调用格式为: strcat(str1,str2) 函数功能:将字符串str2连接到字符串str1的后面。例如:cha

8、r s112=“English“,s2 =“abc“;strcat(s1,s2); 连接后的串s1为Englishabc, 串s2内容不变 。说明:str1一般为字符数组,要有足够的空间,以确 保能放下连接后的字符串, 3 . 字符串复制函数strcpy() 函数调用格式为:strcpy(str1,str2); 函数功能: 把源字符串str2复制到目标字符串 str1中。 下列给字符数组赋值的方法是错误的: char s8; s=”program”;但可以用以下方法:strcpy(s,”program”);4. 字符串比较函数strcmp() 函数调用形式为: strcmp(str1,str2

9、); 函数功能:将字符串str1,str2进行比较,并 将 比较结果作为函数返回值: 若str1=str2,函数的返回值为0; 若str1str2,函数的返回值为正整数;字符串之间的具体比较规则是:将两个字符串 从左至右逐个字符比较,直到出现不同字符或 遇到其中任何一个字符串的0为止,并将此 时两个字符串中的对应位置的字符按ASCII码 的大小进行比较,将将这两个字符的ASCII码 的差值作为比较结果由函数值带回。较两个字符串是否相同,一般使用下面的形式:if(strcmp(str1,str2)=0).; 而不能直接判断:if(str1=str2).;6.4.5 字符串数组的典型实例例6.13

10、 不使用strcpy函数,编程实现字符 串复制功能。 分析:先用两个字符数组分别存放源字符串 和目标字符串。复制时,一边读源字符串 的字符,一边把该字符存入目标字符串, 这个过程可以在一个循环中实现,循环结 束的条件是遇到源字符串末尾的字符串结 束符。完整程序如下:#include“stdio.h“ main( ) char s180,s280;int i;printf(“input string s2:n“);gets(s2);i=0;while(s2i!=0) /* 逐个字符地复制 */ s1i=s2i;i+;s1i=0; /* 加上字符串结束符 */puts(s1);例6.14 不使用s

11、trcmp()函数,编程实现两个字符串的比较。#include “stdio.h“main( ) char s180,s280;int i=0,j;gets(s1); gets(s2);while(s1i /* 若某一对字符不同,则已比较出大小,退出循环*/i+;j= s1i-s2i; /*计算出将这对字符的ASCII码之差*/if(j0) printf(“%s%sn“,s1,s2);else if(j #define N 5 main( ) int i, j, t, p, aN;for ( i=0; ian/2,则只需在后半部分搜索,每次 查找范围大概可减少一半,是一种效率较 高的查找算法,

12、但是有一个前提:只能在 有序的序列中进行查找。#include“stdio.h“ #define N 8 main() int left,right,mid,k,loca=-1;int aN= 1, 2, 5, 10, 18, 21, 25, 30; printf(“please input k:”);scanf(“%d”,left=0; right=N-1; mid=(left+right)/2; while(left=right ) if(k=amid) loca=mid; break; else if(kamid) right=mid-1; mid=(left+right)/2; els

13、e left=mid+1; mid=(left+right)/2; if(loca=-1)printf(“sorry! Not found %dn”,k);elseprintf(“a%d=%dn”,loca,aloca); 三、输出杨辉三角前n行,n的值由键盘输入。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 5 10 10 5 1 杨辉三角是一个nn矩阵的下三角部分,第一列和 对角线上的值均为1,即ai0=1,aii=1(0=in) , 其他部分的元素值则可由以下公式算出: aij=ai-1j-1+ai-1j(2=in ,1=ji)。 #include“stdio.h“ #define N 10 void main() int aNN,i,j,n;printf(“please input n:”);scanf(“%d“,for(i=0;in;i+) ai0=1; aii=1; for(i=2;in;i+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;for(i=0;in;i+) for(j=0;j=i;j+)printf(“%d “,aij);printf(“n“);

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

当前位置:首页 > 高等教育 > 其它相关文档

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