MyLecture-C(-数组与指针)

上传人:宝路 文档编号:47981774 上传时间:2018-07-07 格式:PPT 页数:94 大小:2.45MB
返回 下载 相关 举报
MyLecture-C(-数组与指针)_第1页
第1页 / 共94页
MyLecture-C(-数组与指针)_第2页
第2页 / 共94页
MyLecture-C(-数组与指针)_第3页
第3页 / 共94页
MyLecture-C(-数组与指针)_第4页
第4页 / 共94页
MyLecture-C(-数组与指针)_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《MyLecture-C(-数组与指针)》由会员分享,可在线阅读,更多相关《MyLecture-C(-数组与指针)(94页珍藏版)》请在金锄头文库上搜索。

1、课程邮箱 : gylj_主讲 : 刘 军(副教授)电话/QQ : 15112133278/539171158:程序设计和程序设计和C C语言语言 :顺序结构程序设计顺序结构程序设计 :选择结构程序设计选择结构程序设计 :循环结构程序设计循环结构程序设计 :数组数组- -批量数据处理批量数据处理 :函数函数- -模块化程序设计模块化程序设计 :指针的应用指针的应用 :自定义数据类型自定义数据类型 :文件的输入与输出文件的输入与输出课程主要内容第5章 数组与指针主要内容数组的定义与初始化数组元素的寻址方式一维数组的操作二维数组的操作指针数组数组的定义与初始化 n数组的概念n一维数组的定义与初始化n

2、二维数组的定义与初始化n字符数组的定义与初始化引例:输入3个同学的成绩,降序排列并输出 。#include void main( ) int a, b, c, temp;scanf(“%d%d%d“,printf(“排名: %d,%d,%dn“,a,b,c); 思考:如果需要输入一个班同学的成绩呢?用简单变量实现 起来有什么问题?用简单变量55 a68 b75 c685575 abc687555 abc7568if ( a void main() int i,f20= ;for( )fi=fi-2+fi-1;for(i=0;ip2),则p1-p2的值等于它们所指向的两个数组元素的下标值之差。q

3、而p1+p2则没有意义。YES3p,ap+3,a+3p2p1能否:int a10,*p=a+9; ?ain则表示数组a的数组元素及其指针有4种方法:数组元素数组元素指针 下标法第0个元 素第i个元 素 指针法第0个元 素 第i个元 素 地址法第0个元 素 第i个元 素n此时的指针变量可以带下标,用于表示数组元素,即: *(p+i) pi,可见*与 float scoreN=0; printf(“班级人数:“); scanf(“%d“,for(k=0;k void main() int a34=1,2,3,4, 9,8,7,6,-10,10,-5,2;int i,j,row,col,max;ma

4、x=a00, ;for(i=0;imaxija0023 aijmaxrow=col=0例题:求杨辉三角形的前7行。#include void main() int s77, i,j;for(i=0;i int main() int a34=1,3,5,7,9,11,13,15,17,19,21,23; int i,j, (*p)4; p=a; for(i=0;i int main() int a34=1,3,5,7,9,11,13,15,17,19,21,23; int j, (*p)4 ; for(p=a; p void main() int a34=1,3,5,7,9,11,13,15,1

5、7,19,21,23 , *p ;for(p=a0; pa j+1) t=a j;a j=a j+1;a j+1=t; 第0趟冒泡排序算法 5854209584209548209542809542089a0a1a2a3a4a5for(j=0;ja j+1) t=a j;a j=a j+1;a j+1=t; 第1趟冒泡排序算法 4542089452089425089420589a0a1a2a3a4a5for(j=0;ja j+1) t=a j;a j=a j+1;a j+1=t; 第2趟冒泡排序算法420589240589204589a0a1a2a3a4a5for(j=0;ja j+1) t=a

6、 j;a j=a j+1;a j+1=t; 第3趟冒泡排序算法204589024589a0a1a2a3a4a5for(j=0;ja j+1) t=a j;a j=a j+1;a j+1=t; 第4趟冒泡排序算法for(j=0;ja j+1) for(j=0;ja j+1) for(j=0;ja j+1) for(j=0;ja j+1) for(i=0;ia j+1) t=a j; a j=a j+1; a j+1=t; for(i=0;ia j+1) t=a j; a j=a j+1; a j+1=t; for(i=1;ia j+1) t=a j ;a j =a j+1;a j+1=t; 冒泡

7、排序算法的应用n例题:有10个地区的面积,要求按照升序排列输出。 #include “stdio.h“ void main() int a10,i,j,t; for (i=0;i void main() char s6=“Love“;char *p;p=“You“; printf(“%s %sn“,s,p); 内存地址 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 300A 300EL o v e 0 0pS0 S1 S2 S3 S4 S53006Y o u 0字符串数据的表示与存储 n说明q除字符数组使用字符串常量进行初始化外,程序中的字

8、符 串常量都将以无名字符数组的方式分配内存空间,且该字 符串常量的语法地位相当于其在内存中的首地址,所以有 :nchar *string=“I love China!”; /string为字符指针变量n即:将字符串的首地址赋给字符指针变量string。q因string为指针变量,所以其值可以被修改,例如重新给 string赋值。q使用%s格式输出字符串时,输出对象必须是该字符串在内存中的首地址(指针)。n例如:字符数组名或字符指针.#include void main() char *string=“I love China!”; printf(“%sn”,string);string=“I

9、am a student.”;printf(“%sn”,string); 字符串数据的表示与存储n字符指针变量既可以指向字符串常量(首字符的地址), 也可以指向一个字符数组(首元素的地址)。n使用字符指针变量对字符数组或字符串操作,其方法与 利用指针变量对数组元素进行操作基本一样,只是需要 注意使用0进行循环结束条件判断。n例如:#include void main() char a =“I am a student.“, b20, *p1, *p2;p1=a, p2=b; for( ; *p1!= ; p1+,p2+) *p2= ; *p2= ; printf(“string a is:%s

10、n”,a); printf(“string b is:%sn”,b); 0 *p1 0功能: 字符串复制字符串数据的表示与存储n另解:#include “stdio.h” void main() char *a=“I am a student.”,b20,*p; for(p=b;*a!=0;a+ ,p+); *p=0; printf(“string b is:%sn”,b); printf(“string b is:“);for( ;*p!=0;p+)printf(“%c”,*p); printf(“n“); *p=*ap=b思考:若a为字符数组可以如此操作否?NO说明:字符串既可以用%s整体

11、输出,也可以用%c逐个字符输出。使用字符指针变量和字符数组的比较n主要区别(1)q字符数组由若干个元素组成,每个元素中可放一 个字符,而字符指针变量只具有一个指针变量的 内存空间,用于存放字符串的首字符地址。n char *a; scnaf(“%s”, a); n char *a, str10; a=str; scanf (“%s”,a); 原因? a为空指针!使用字符指针变量和字符数组的比较n主要区别(2)q字符数组名为“地址常量”,字符指针变量是变量。q可以对字符指针变量赋值,但不能对数组名赋值。nchar *a; a=“I love China!”; nchar str14; str0=

12、I; nchar str14; str=“I love China!”; q例如: #include void main() char *a=“I love China!“;a=a+7; printf(“%sn“,a); 能否改为 char a =“I love China!”;NOn主要区别(3)q字符数组中各元素的值是可以修改的,但字符指针变 量若指向一字符串常量,则该字符串常量的内容不能 被修改。nchar a =“House“, *b=“House“;na2=r; b2=r; char ch=b2; q用指针变量指向一个格式字符串,可以用它代替 printf函数中的格式字符串。使用字符

13、指针变量和字符数组的比较思考:若字符指针变量指 向一字符数组呢?char *format=“a=%d,b=%fn”; printf(format,a,b);等价于:printf(“a=%d,b=%fn”,a,b);一维数组的操作n冒泡排序算法n字符串数据的表示与存储n字符串数据的输入与输出n常用的字符串处理函数字符串数据的输入与输出n方式1:逐个字符(数组元素)输入输出-用%c格式符.例如:#include “stdio.h“void main() char name10;int i;for(i=0;i #include void main() char destination180;char

14、 c1 = “C is important”;char c2= “we shall study hard!“,char c3 = “Ok!“;strcpy(destination, c1);strcat(destination, c2);strcat(destination, c3);printf(“%sn“, destination); 常用的字符串处理函数n字符串比较函数strcmpq格式:strcmp(字符串1,字符串2)q功能:比较两个字符串.q规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或0为止。q返值:int型,a)字符串1 字符串2, 返回 1b)字符串1=字符串2,返回 0c)字符串1 #include void main() char str510,t10; int i,j;for(i=0;i0常用的字符串处理函数n字符串长度函数strlenq格式:strlen(字符串)q功能:计算字符串长度q返值:字符

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

当前位置:首页 > 高等教育 > 大学课件

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