C语言程序设计_第1页
C语言程序设计_第2页
C语言程序设计_第3页
C语言程序设计_第4页
C语言程序设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

《提高篇》之第七讲数组数信学院张熠C语言程序设计7.1基本概念7.1.1数组的引入例7.1

求08给水排水1、2班同学C程序设计期末考试的平均成绩和标准差。标准差公式如下:数学与信息工程学院计算机系分析08给水排水共57名学生,假设成绩为整数,则需要定义57个int型变量来保存成绩。这57个int型变量具有相同的功能和相同的操作,是否能够通过一种新的命名方式来统一命名该57个int型变量?数学与信息工程学院计算机系7.1.2数组的概念数组:具有相同类型的数据组成的序列,是有序集合。数组元素:由其所在的位置序号(称数组元素的下标)来区分,一个数组元素就是一个相对独立的变量。数学与信息工程学院计算机系7.2一维数组7.2.1声明声明形式:类型说明符

数组名[常量表达式];例如

intmark[57];存储形式:mark[0]mark[1]mark[2]mark[3]……mark[55]mark[56]数学与信息工程学院计算机系关于数组声明的说明(1)数组名代表整个数组的首地址。(2)同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。(3)数组元素的下标,是元素相对于数组起始地址的偏移量,所以从0开始顺序编号。(4)常量表达式中不能包含变量。数学与信息工程学院计算机系7.2.2数组的初始化1、对全部元素赋初值。如:inta[5]={3,5,6,8,4};

2、定义时若不指定数组长度,则系统根据初值个数自动确定。如:inta[]={3,5,6,8,4};

等价于inta[5]={3,5,6,8,4};3、可以只给部分元素赋初值。如:inta[8]={3,5,6,8,4};等价于inta[8]={3,5,6,8,4,0,0,0};4、如果想使一个数组中全部元素值为0,可以写成:

inta[10]={0,0,0,0,0,0,0,0,0,0}

或:inta[10]={0};数学与信息工程学院计算机系7.2.3数组的使用定义了数组以后,就可使用它了。但不能利用数组名来整体引用一个数组,只能单个的使用数组元素。例如:intmark[57];mark=90;//错,不能直接使用数组名mark[0]=88;//对,表示数组的第一个元素为88mark[57]=60;//错,下标越界了数学与信息工程学院计算机系例7.2

输入一个10位数,将该10位数反向输出,如输入1234567890,则输出0987654321数学与信息工程学院计算机系7.2.4数组的存储数组变量在内存中分配一片连续的存储单元,数组元素按数组下标从小到大连续存放。例

inta[5];设a的首地址为1000,数组a存储示意图如右图。a[0]1000a[1]1004a[2]1008a[3]1012a[4]1016数学与信息工程学院计算机系7.2.5数组的应用例7.3利用数组来求解小兔子问题,求3年内每个月小兔子的总对数,要求每半年换一行。数学与信息工程学院计算机系7.3二维数组如何存放下列数据:数学与信息工程学院计算机系若一个一维数组,它的每一个元素亦是类型相同的一维数组时,便构成二维数组。数组的类型相同:是指数组大小、元素类型相同。数组的维数:是指数组的下标个数,一维数组元素只有一个下标,二维数组元素有两个下标。数学与信息工程学院计算机系7.3.1声明声明形式:类型说明符

数组名[行数][列数];例如

inta[3][5];

定义了一个3×5的数组b,即数组为3行5列,可存放15个整型数据。数学与信息工程学院计算机系7.3.2表示形式

二维数组类似于数学中的矩阵,由行、列组成。

把所有第一维下标相同的元素称为行,所有第二维下标相同的元素称为列。数组a的6个元素如下:

a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]数学与信息工程学院计算机系7.3.3存储结构设有定义inta[2][3];floatb[3][2];a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]第0行第1行第1行b[0][0]b[0][1]b[1][0]b[1][1]b[2][0]b[2][1]第0行第2行数学与信息工程学院计算机系7.3.4初始化1、分行给二维数组赋初值,每个花括号内的数据对应一行元素。例:inta[2][3]={{1,2,3},{2,3,4}};2、将所有初值写在一个花括号内,顺序给各元素赋值。例:inta[2][3]={1,2,3,2,3,4};3、只对部分元素赋值,没有初值对应的元素赋0值或空字符(字符数组)。 例:inta[2][3]={{1,2},{4}};数学与信息工程学院计算机系4、给全部元素赋初值或分行初始化时,可不指定第一维大小,其大小系统可根据初值数目与列数(第二维)自动确定;但必须指定第二维的大小。

例:inta[][3]={1,2,3,4,5,6};

inta[][3]={{0},{0,5}};数学与信息工程学院计算机系7.3.5应用例7.6用如下的3×3矩阵初始化数组a[3][3],求矩阵的转置矩阵。

1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9数学与信息工程学院计算机系7.4字符数组与字符串7.4.1定义与初始化charch[7]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};charch[]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’};数学与信息工程学院计算机系7.4.2字符串的概念及存储字符串:若干有效字符的序列;可包含转义字符、ASCⅡ码表中的字符;形式为:用双引号括起来的字符序列;例:“Iamastudent.”

“Hello”

“a[5]=”“%f\n”字符串的结束标志:‘\0’。注:C语言无字符串类型,字符串是存放在字符数组中的。数学与信息工程学院计算机系7.4.3字符串初始化数组charch[9]={“student”};字符串和数组长度?说明:1、字符串结束标志'\0'仅用于判断字符串是否结束,输出字符串时不会输出。2、在对有确定大小的字符数组用字符串初始化时,数组长度应大于字符串长度。student\0数学与信息工程学院计算机系3、在初始化一个一维字符数组时,可以省略花括号。如:chars[8]="student";4、不能直接将字符串赋值给字符数组名。下面的操作是错误的。s=”student”;数学与信息工程学院计算机系7.4.4输入输出printf()函数例:charst[15]=“Iamaboy!”;

printf(“st=%s,%c,%c”,st,st[3],st[7]);问:如何输出“Hello,C!”数学与信息工程学院计算机系puts()函数:将字符数组str中包含的字符串或str所指示的字符串输出,同时将‘\0’转换成换行符。

例:charch[]="student";

puts(ch);

puts("Hello");数学与信息工程学院计算机系scanf()函数:例:charst[15];

scanf(“%s”,st);但:scanf(“%s”,&st);是错误的,因为st就代表了该字符数组的首地址。用scanf输入的字符串中不能含有空格。例:Howdoyoudo↙数学与信息工程学院计算机系gets()函数:从键盘读入一个字符串到str中,并自动在末尾加字符串结束标志符’\0’。输入字符串时以回车结束输入,这种方式可以读入含空格符的字符串。例:chars[14];

gets(s);若输入的字符串为:Howdoyoudo?↙则s的内容为:Howdoyoudo?\0数学与信息工程学院计算机系7.4.5字符串处理函数1.字符串拷贝函数:strcpy()调用格式:strcpy(d_str,s_str);功能:将源字符串s_str复制到目标字符数组d_str中。说明:d_str的长度应不小于s_str的长度,d_str必须写成数组名形式。s_str可以是字符串常量或字符数组名形式。例:chars1[10],s2[8]=“student”,s3[6];strcpy(s1,s2);strcpy(s3,"okey");

strcpy(s1,s2,5);数学与信息工程学院计算机系2.字符串连接函数:strcat()调用格式:strcat(d_str,s_str);功能:将s_str连同‘\0’连接到d_str的最后一个字符(非‘\0’字符)后面。结果放在d_str中。例:chars1[14]={“Iama”}; chars2[5]=“boy.”; strcat(s1,s2);连接前:s1:s2:连接后:s1:Iama\0boy.\0Iamaboy.\0数学与信息工程学院计算机系3.字符串比较函数strcmp()调用格式:strcmp(str1,str2);功能:若str1=str2,则函数返回值为0; 若str1>str2,则函数返回值为正整数; 若str1<str2,则函数值返回为负整数。数学与信息工程学院计算机系比较规则:1、不是比较长短,而是比较ASCII码的大小。两个字符串自左至右逐个字符比较,直到出现不同字符或遇到‘\0’为止。2、如字符全部相同,则两个字符串相等;3、若出现不同字符,则遇到的第一对不同字符的ASCⅡ大者为大。将ASCII码之差作为比较结果由函数值带回。比较两字符串是否相等一般用以下形式:

if(strcmp(str1,str2)==0){…};而if(str1==str2){…

温馨提示

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

评论

0/150

提交评论