《高级语言程序设计教学课件》第8章4次

上传人:xiao****1972 文档编号:71423812 上传时间:2019-01-20 格式:PPT 页数:26 大小:908.50KB
返回 下载 相关 举报
《高级语言程序设计教学课件》第8章4次_第1页
第1页 / 共26页
《高级语言程序设计教学课件》第8章4次_第2页
第2页 / 共26页
《高级语言程序设计教学课件》第8章4次_第3页
第3页 / 共26页
《高级语言程序设计教学课件》第8章4次_第4页
第4页 / 共26页
《高级语言程序设计教学课件》第8章4次_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《高级语言程序设计教学课件》第8章4次》由会员分享,可在线阅读,更多相关《《高级语言程序设计教学课件》第8章4次(26页珍藏版)》请在金锄头文库上搜索。

1、1,指针运算符,& 取变量或存储单元的地址 * 取指针所指向的单元(变量),结论: *pt相当于a (*pt)+相当于a+ &*pt=&a=pt *&a=*pt=a,a=1;,例: int a, *pt; pt=,2,-2-,*p相当于变量a,指针与变量,int a, * p ; p=,3,【例8-1】编写一个的子程序,子程序的功能为交换两个变量的值,#include “stdio.h“ void swap(int x, int y); void main(void) int a, b; printf(“请输入交换的数值:“); scanf(“%d%d“, ,4,【例8-1】编写一个的子程序,

2、子程序的功能为交换两个变量的值(改进),#include void swap(int *x, int *y); void main() int a, b; scanf(“%d%d“, ,5,void swap(int *x, int *y) int t; printf(“n-swap-n“); printf(“x=%x,y=%xn“, x, y); t = *x; *x = *y; *y = t; printf(“-swap-nn“); ,6,例 编写函数求出二维整型数组中元素的最大值及其下标号,#include #define M 3 #define N 2 int maxarray(int

3、 aMN, int m, int n, int *pmaxi, int *pmaxj); void main() int aMN=1,2,3,4,5,6; int max, maxi, maxj; max = maxarray(a, M, N, ,7,int maxarray(int aMN, int m, int n, int *pmaxi, int *pmaxj) int i, j, max = a00; for(i=0; im; i+) for(j=0; jn; j+) if(maxaij) max = aij; *pmaxi = i; *pmaxj = j; return max; ,

4、8,-8-,ai *(a+i) pi *(p+i),数组元素表示法,数组元素地址表示法,&ai a+i &pi p+i,指针与一维数组,int a10, * p = a;,9,下标法 main ( ) int a10; i; for (i=0;i10;i+) scanf(“%d“, ,数组名计算地址法 main ( ) int a10;i; for (i=0; i10; i+) scanf(“%d“, a+i); for (i=0; i10; i+) printf (“%d“,*(a+i) ); ,例:输入输出整型数组a的全部元素。(假有10个元素),指针法 main( ) int a10,

5、i, *p ; p= ,10,【例】写一个函数,将包含n个元素的数组进行排序,void main() /*冒泡*/ int n=10, a10=3,2,4,5,6,8,9,25,21,10 ; int i, j, temp; for(i=0; iaj+1) temp = aj; aj = aj+1; aj+1 = temp; ,void sort(int a, int n),aj *(a+j),void sort(int * a, int n),if(*(a+j)*(a+j+1) temp = *(a+j); *(a+j) = *(a+j+1); *(a+j+1) = temp;,11,8.6

6、 指针与数组编程实例,【例8-7】数列的中位数是数列中按照数值大小排在中间位置的数。例如:数列1,2,3,4,5的中位数为3。 算法:先对数列排序,然后寻找排序序列的中位数。,11,12,#include void sort(int a, int n); void main() int ser100; int i, num; printf(“Input length of serial:n“); scanf(“%d“, ,13,void sort(int a, int n) int i, temp; int *p; for(i=0; i *(p+1) temp=*p; *p=*(p+1); *

7、(p+1)=temp; ,13,Input length of serial: 5 input serial elements: 1 -3 23 67 15 The median of serial is 23,14,8.7 指针与字符串,字符串表示形式 用字符数组实现,main( ) char string=“I love China!”; printf(“%sn”,string); printf(“%sn”,string+7); ,I love China!,China!,用字符指针实现,15,main( ) char *cp=“I love China!”; printf(“%cn”,

8、*cp); printf(“%sn”, cp); cp+=7; printf(“%sn”, cp); ,I I love China! China!,16,char string20= “I love China!”;,char *cp= “I love China!”;,aa00,17,字符型指针变量与字符数组 char str20; 与 char *cp; str由若干元素组成,每个元素放一个字符 cp只是一个指针变量,存放字符串首地址 char str20; str=“I love China!”; char *cp; cp=“I love China!”; str是地址常量;cp是地址

9、变量 cp接受键入字符串时,必须先开辟存储空间,例 char str10; scanf(“%s”,str); () 而 char *cp; scanf(“%s”, cp); (),改为:char *cp, str10; cp=str; scanf(“%s”,cp); (),18,char str=“Hello!”; char str=“Hello!”; char str=H,e,l,l,o,!; char *cp=“Hello”; int a=1,2,3,4,5; int *p=1,2,3,4,5; char str10, *cp; int a10, *p; str = “Hello”; cp

10、 = “Hello!”; a = 1,2,3,4,5; p = 1,2,3,4,5;, , ,分析下列用法正确与否,19,【例8-9】写程序,判断一个单词是否为回文。回文指的是单词按从前到后与从后到前的顺序读都相同,例如“level”就是是一个回文单词。,#include #include #define MAXLEN 80 void main() char *str; int flag; int pal(char *); if (str = (char *) malloc(MAXLEN) ) = NULL) printf(“Memory allocation error!n“); exit(

11、0); ,20,printf(“Input a word:n“); scanf(“%s“, str); while (*str != #) flag = pal(str); if (flag) printf(“%s is a palindrome!n“, str); else printf(“%s isnt a palindrome!n“, str); printf(“Input a word:n“); scanf(“%s“, str); free(str); ,21,int pal(char * str) /*判断回文*/ char *p, *q; p = str; q = str; whi

12、le (*q != 0) /*p指向首部,q指向尾部*/ q+; q-; while (p = q); ,22,C语言字符串操作的库函数,1字符串连接函数strcat,char * strcat(char *s1, char *s2) char *p, *q; p = s1; q = s2; while( *(p+1)!= 0 ) p+; while(*q!=0) *p = *q; p+; q+; *p = 0; return s1; ,23,C语言字符串操作的库函数,2字符串拷贝函数strcpy,char *strcpy(char *s1,char *s2) 功能:把字符串s2复制到字符串s

13、1中。 例如: char str80; strcpy(str, “abcd“);,24,C语言字符串操作的库函数,3字符串比较函数strcmp int strcmp( char *s1,char *s2) 功能:按照字典排序方法比较字符串s1和字符串s2,返回值如下: (1) s1=s2,返回值0; (2) s1s2,返回值0; (3) s1s2,返回值0。 例如:char str1=”word”,str2=”world”; strcmp(str1,str2)的返回值小于0。,24,25,C语言字符串操作的库函数,4求字符串长度函数strlen size_t strlen(char *s) 功

14、能:求字符串的实际长度(不含串结束标志0) 例如: int len; len=strlen(“hello”); /* len为5 */ len=strlen(“”); /* len为0 */,25,26,C语言字符串操作的库函数,5字符串中子串定位函数 strstr char * strstr(char *s1, char *s2); 功能:从字符串s1中寻找字串s2第一次出现的位置,如果没找到则返回NULL。,26,#include #include void main() char str1=“Hallo world“; char *p; p=strstr(str1,“lo“); puts(p); p=strstr(str1,“l“); puts(p); ,lo world llo world,

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

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

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