资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Copyright Henan Polytechnic University 语 言第 6 章数 组CC语言程序设计第6章 数组Copyright Henan Polytechnic University 语 言第 6 章数 组C问题:有如下几组数据,它们分别该如何存储呢?是一组具有相同数据类型的数据的有序集合。数组数组 一个班学生的学习成绩 一行文字 一个矩阵这些数据的特点是: 1、具有相同的数据类型 2、使用过程中需要保留原始数据 C语言为这些数据,提供了一种构造数 据类型:数组。引子Copyright Henan Polytechnic University 语 言第 6 章数 组C本章要点第6章 数组本章难点n一维数组与二维数组的定义、初始化、存储结 构、数组元素的引用n 字符数组的定义、初始化以及数组元素的引用n 字符串处理函数的使用数组下标与数组长度的区别数组下标与数组长度的区别 字符串与字符数组的区别字符串与字符数组的区别 数组应用的一些基本算法数组应用的一些基本算法Copyright Henan Polytechnic University 语 言第 6 章数 组C6.16.26.3一维数组二维数组与多维数组字符数组与字符串第6章 数组Copyright Henan Polytechnic University 语 言第 6 章数 组C6.1 一维数组一维数组的定义: 当数组中的每个元素只带有一个下标 时,称为一维数组。 类型标识符 数组名常量表达式;在一个函数内,数组名不能与变量名相同; 常量表达式用来说明数组元素的个数(称为数组长度或 数组大小),是一个整型常量表达式,只能包含整型常 量或字符,不能包含变量或函数。 合法标识符表示元素个数 下标从0开始 :数组运算符单目运算符优先级(1)左结合不能用( )任何基本数据类型 Copyright Henan Polytechnic University 语 言第 6 章数 组C 例 合法的数组定义 int a6; a为数组名,包含6个整型数组元素 int bA; b为数组名,包含65个整型数组元素 #define N 10float xN*3; 实型数组x有30个元素 int m,n,a5; 数组名和变量名可以同时出现在一个定义语句中Copyright Henan Polytechnic University 语 言第 6 章数 组C下面的定义是非法的: int 56710; 不符合标识符的命名规则 float x(10); 不能使用圆括弧说明数组长度数组名a不能与变量名a相同float xmax(3,8); 不能用函数max(3,8)说明数组长度int a5.9; 不能使用实型数说明数组长度int m=5; double ym; 不能使用变量m说明数组长度 main() int a;float a5;Copyright Henan Polytechnic University 语 言第 6 章数 组C 一维数组元素的引用: 数组必须先定义,后使用 只能逐个引用数组元素,不能一次引用整个数组 数组元素引用方式: 下标是数组元素在整个数组中的顺序号,从0开始; 下标是常量或整型表达式、字符表达式或枚举类型表达 式 数组名下标;例如,若有以下定义语句: int a5;说明数组a共有5个元素,分别表示为a0、a1、 a2、a3、a4 但a5不是数组a的元素。 Copyright Henan Polytechnic University 语 言第 6 章数 组C 数组元素的合法引用方式对数组元素的引用与普通变量一样,可 以对它们进行赋值、输入输出,也可以 在表达式中使用。 a010+2; ala0+a3; scanf(“%d“, aC-A8; an*2a0+a2*2; printf(“%dn“,a4);Copyright Henan Polytechnic University 语 言第 6 章数 组C 例6.1 输出一维数组的全部元素。main() int s10;int i;for (i=0; iai+1真假aiai+1输出a1到an第j(1n-1)趟排序比较相邻的两个数, 若前者大,则交换两两相比,需比较n-j次Copyright Henan Polytechnic University 语 言第 6 章数 组C#include main() int a10,i,j,t;printf(“n input 10 numbers:n“);for(i=0;iai+1)t=ai; ai=ai+1; ai+1=t;for(i=0;i #define N 5 main() int aNN=1,2,3,4,5,2,3,4,5,1,3,4,5,1,2, 4,5,1,2,3,5,4,3,2,1; int i,j,sum=0; printf(“nThe %d x %d matrix:n“,N,N); for(i=0;i 字符串2, 返回正整数c. 若字符串1= 字符串2, 返回零 说明:字符串比较不能用“=”,必须用strcmp#include main() int k;static char st115,st2=“C Language“;printf(“input a string:n“);gets(st1);k=strcmp(st1,st2);if(k=0) printf(“st1=st2n“);if(k0) printf(“st1st2n“);if(kst2 Copyright Henan Polytechnic University 语 言第 6 章数 组Cu字符串长度函数strlen 格式:strlen(字符数组) 功能:计算字符串长度 返值:返回字符串实际长度,不包括0在内例 对于以下字符串,strlen(s)的值为: (1)char s10=A,0,B,C,0,D; (2)char s =“tv0willn”; (3)char s =“x69082n”; 答案:1 3 1Copyright Henan Polytechnic University 语 言第 6 章数 组C字符数组程序设计举例 例6-13 输入一行字符,统计其中有多少个单 词,单词之间用空格分隔开。当前字符=空格是否未出现新单词,使word=0(前一字符是空格), num(单词数)不累加 1、前一字符为空格(word=0),新单词出现, word=1,num加1 2、前一字符为非空格(word=1),未出现新单词, num不变算法分析:单词的数目可以由空格出现的次数决定(连续 的若干个空格作为出现一次空格;一行开头的空格不统计 在内)。Copyright Henan Polytechnic University 语 言第 6 章数 组C例 输入:I am a boy. 当前字符是否空格word原值新单词开始否word新值num值Iamaboy.否0是11是1未01否0是12否1未12是1未02否0是13是1未03否0是14否1未14否1未14否1未14Copyright Henan Polytechnic University 语 言第 6 章数 组C编程实现#include main() char string81;int i,num=0,word=0;char c;gets(string);for(i=0;(c=stringi)!=0;i+)if(c= ) word=0;else if(word=0) word=1; num+; printf(“There are %d words in the linen“,num); 运行情况: I am a boy. There are 4 words in the line.Copyright Henan Polytechnic University 语 言第 6 章数 组C 例6.12 从键盘上输入三个字符串(长度小于80),存入二 维数组。然后对其进行排序(由小到大)并按次序输出 算法分析:二维字符数组的每行可存放一个字 符串。用字符串比较函数比较各行的大小,进 行排序,最后输出结果。#include #include #define N 3 main() char aN80,b80; int i,j; for(i=0;ii;j-) if(strcmp(aj,aj-1)0) strcpy(b,aj);strcpy(aj,aj+1);strcpy(aj+1,b); Copyright Henan Polytechnic University 语 言第 6 章数 组C例6.13 输入一个字符串存到str字符数组,将该字符串中除 了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部 删除;串中剩余字符所形成的一个新串放在s字符数组中。 算法分析:对串str中的字符逐个进行判断, 如果某个字符的下标为偶数,同时ASCII值也 为偶数,则将该字符存入s字符数组中。最后 在新串s的末尾加上字符串结束标记0.#include #include main() char str100,s100; int i,j=0,n; scanf(“%s“,str); n=strlen(str); for(i=0;i #include #define M 60 main() char sM,ch; int j,m; printf(“Input a string:“); gets(s); m=strlen(s)-1; for(j=0;j #include main() char str80; long x=0; int i=0,n; gets(str); n=strlen(str); if(str0=-)i+; for(; in;i+) x=x*10+stri-0; if(str0=-)x=-x; printf(“%dn“,x); Copyright Henan Polytechnic University 语 言第 6 章数 组C本章小结总总 览览数组属于构造数据类型,是具有一定顺序关系的若 干同类型数据的集合,在程序设计中很常用。几乎所有的高级语言都有数组类型。 知 识 点1. 数组可以是一维的,二维的或多维的。 2. 在引用数组元素时,下标从0开始。 3. 对数组的赋值可以用数组初始化赋值,输入函数动态赋 值和赋值语句赋值三种方法实现。 4. C语言没有设置字符串变量类型,字符串的存储依赖于字 符数组,并以字符0标识字符串的结束。 C语言的数组可分为数值数组(整数组,实数组)、字 符数组以及后面将要介绍的指针数组、结构数组。提提 要要
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号