南京邮电大学《C语言程序设计》课件第5章一级指针与一维数组.pptVIP

  • 1
  • 0
  • 约 67页
  • 2023-09-18 发布于河北
  • 举报

南京邮电大学《C语言程序设计》课件第5章一级指针与一维数组.ppt

南京邮电大学《C语言程序设计》课件第5章一级指针与一维数组大学,本科,专科,硕士,笔记,课件,期中试卷答案,期末试卷答案,教材答案,知识点,经济法,材料科学基础,材料力学,电路,电子技术基础,高频电子线路,宏观经济学,模拟电路基础,模拟电子技术,数字电路,数字电子技术,数字信号处理,通信原理,信号与系统,化工原理,机械设计基础,机械原理,机械制图,微机原理与接口技术,C++程序设计,JAVA技术与应用,MATLAB基础与应用,计算机网络,计算机组成原理,软件工程数据结构,工程力学,工程热力学,

C语言程序设计 第五章 一级指针与一维数组 int i,*p; p=i; 一维数组的引入 一维数组的定义和引用-总结 总结 数组名双重含义 1、表示“数组”这个整体概念 2、表示该数组的位置,即数组第一个元素的地址,此时a的值等于a[0]这个元素的物理地址,此时a+i的数值等于a[i]这个元素的物理地址,*(a+i)表示a[i]这个元素的间接表示方法,如下图示意: 课堂练习 从键盘上输入10个整数,输出这些元素及其中正数和负数的个数(请用数组实现) #include stdio.h int main() { int a[10],i; int positive=0,negative=0; printf(Please input 10 elements:\n); for (i=0;i10;i++) scanf(%d,a[i]); for (i=0;i10;i++) if(a[i]0) positive++; else if (a[i]0) negative++ ; for (i=0;i10;i++) printf(%d,,a[i]); printf(\n positive number are %d,negative number are %d\n,positive,negative); return 0; } 一维数组类型(举例) 程序5.3从键盘上输入n(1≤n≤10)个整数,求出最大值 思路: #include stdio.h int main() { int a[10],i,n; int max; do { printf(Please input n(1=n=10):\n); scanf(%d,n); }while (n1||n10); printf(Please input %d elements:\n,n); for (i=0;in;i++) scanf(%d,a[i]); max=a[0] ; for (i=1;in; i++) if (*(a+i)max) max=*(a+i); printf(max element=%d\n,max); return 0; } 一级指针变量与一维数组 数组首元素地址可以传给?——基类型相同的指针变量 地址传递 例:int a[5]; int *p=a; 注意: p是变量, 也可以获得任意元素的地址值, 例:p=a[2] 此时:p[0]等价于*p或a[2], p[2]等价于*(P+2)或a[2] 一级指针变量与一维数组 当p=a后,有下列等价关系存在: (1)数组元素的表示: 下标法:p[i] 、a[i] 间接引用法:*(p+i) 、*(a+i) (2)数组元素地址的表示: 指针表达式法:p+i、a+i 元素取地址法:p[i]、a[i] 程序5.5:用一级指针访问一维数组元素示例 一级指针变量与一维数组 移动下标与移动指针访问数组的元素例示: 程序5.8 请将一个初值分别为1、2、3、4、5、7、8、9、10的整形数组逆置存放,并输出逆置后数组元素。 分析:逆置数组,即从两边向中间对应位置的元素两两互换。 方法一:采用移动下标法,用i和j分别指示待交换的两个元素的下标,i从0开始递增,j从9开始递减,循环条件为ij。 方法二:采用移动指针法,设两个指针p和q分别指向第一个元素和最后一个元素,交换对应的*p和*q,然后p++同时q--,循环条件为pq。 一级指针变量与一维数组 程序5.8 方法一核心代码 for (i=0,j=9;ij;i++,j--) { temp=a[i]; a[i]=a[j]; a[j]=temp; } 等效于:(只用 i 控制下标) for (i=0;i10/2;i++) { temp=a[i]; a[i]=a[10-1-i]; a[10-1-i]=temp; } 一维数组应用举例(查找) 程序5.9 从键盘上输入n(1≤n≤10)个整数作为数组a的元素值,再读入一个待查找的整数x,在a数组中查找x,如果存在输出它的下标,否则提示:“Not present!” 提示:本程序完整的循环条件:inx!=*(p+i) 核心代码 p=a; //使p回到数组开头 while(in) { if (x==*(p+i)) break; i++; } if(in)

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档