实验七 指针与引用.docx_第1页
实验七 指针与引用.docx_第2页
实验七 指针与引用.docx_第3页
实验七 指针与引用.docx_第4页
实验七 指针与引用.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

实验七 指针与引用一、实验目的和要求1. 掌握指针、指针变量、指针常量的基本概念;2. 掌握指针与数组、指针与函数的关系及应用。3. 初步掌握引用的概念及简单应用。二.相关知识点 1.指针变量的定义,由数据类型后跟星号,再跟指针变量名组成。2.引用值是引自所指向的实体。3.指针与数组都可以作为参数。三.实验内容 1.题目:下面的程序中,调用了findmax()函数,该函数寻找数组中的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现findmax()函数。1. 思路分析: 2. 编程如下:# include int * findmax(int * array, int size, int * index);void main ( )int a10 = 33,91,54,67,82,37,85,63,19,68;int * maxaddr;int idx;maxaddr = findmax(a, sizeof(a)/sizeof( * a), &idx);coutidxendlmaxaddr endlaidx endl;int * findmax(int * array, int size, int * index) int i,max;int *p;p=array;max=*array;for(i=0;imax) max=*(array+i); p=array+i; *index=i; return p;3. 实验结果: 2.读下列程序,将其改写为传递引用参数;将findmax()函数改写成非递归函数(重新考虑参数个数)。# include const size= 10;void findmax(int* a, int n, int i, int * pk);void main ( )int asize;int n = 0;cout 请输入 size 个数据:;for(int i=0; i ai;findmax(a, size,0, &n);cout 最大值为: an endl其下标为: n endl;void findmax(int * a, int n, int i, int * pk)if(ia*pk)*pk= i;findmax(a,n,i+1,&(*pk);1.思路分析:2.编程如下: # include const size= 10;/void findmax(int* a, int n, int i, int * pk);void findmax(int *a,int n,int i,int &pk);void main ( )int asize;int n=0;cout 请输入 size 个数据:;for(int i=0; i ai;/findmax(a, size,0, &n); findmax(a,size,0,n);cout 最大值为: an endl其下标为: n endl;/*void findmax(int * a, int n, int i, int * pk) if(ia*pk)*pk= i;findmax(a,n,i+1,&(*pk);*/void findmax(int *a,int n,int i,int &pk)for(;iapk) pk=i;3.实验结果 3.编制程序,将输入的一行字符加密和解密。加密时,每个字符依次反复加上“4962873”中的数字,如果范围超过ASCII码的032(空格)122(z),则进行模运算。解密与加密的顺序相反。编制加密和解密函数,打印各个过程的结果。例如,加密:theresult Of 3 and 2 is not 8得到密文为:xqkzlvyuzwm#7gpls$ryvvw$A1. 思路分析:2. 编程如下: #include #include #include #define size 50void jiami(char *,int );void jiemi(char *,int );void main() char strsize;coutplease in a string:endl; gets(str);int len=strlen(str);cout输入的源字符串为:strendl;/puts(str); jiami(str,len);cout加密后的字符串为:strendl;/puts(str); jiemi(str,len);cout重新解密后的字符串为:strendl;/puts(str);void jiami(char *a,int len1)int s7=4,9,6,2,8,7,3;int t=0;for(int i=0;ilen1;i+) ai=ai+si%7;if(ai122) ai=122-(ai)%(122);void jiemi(char *b,int len2)int s7=4,9,6,2,8,7,3;int t=0;for(int i=0;ilen2;i+) bi=bi-si%7; 3.实验结果: 4.编制程序,调用传递引用的参数, 实现两个字符串变量的交换。例如开始:char* ap=hello;char* bp=how are you;交换的结果使得ap和bp指向的内容分别为:ap: how are you?bp: hello1. 思路分析:2. 编程如下: #include #include void swap(char *&pp1,char *&pp2);void main() char str150,str250;char *p1,*p2;cout请输入字符串1:endl;gets(str1);cout请输入字符串2:endl;gets(str2);p1=str1;p2=str2;swap(p1,p2);cout交换后的字符串为:endl;coutp1endl;coutp2endl;void swap(char *&pp1,char *&pp2)char *temp; temp=pp1; pp1=pp2; pp2=temp;3.实验结果 5.用指针变量编写下列字符串处理函数:(1)字符串拼接函数Strcat;(2)字符串比较函数Strcmp;(3)取字符串长度函数Strlen。1.思路分析:2.编程如下:#include #include void mystrcat(char * ,char * );int mystrcmp(char * ,char * );int mystrlen(char * );void main()char str150,str250; cout请输入字符串1:endl;gets(str1);cout请输入字符串2:endl;gets(str2);mystrcat(str1,str2);cout拼接后的字符串为:endl;coutstr1endl;cout比较后的结果为:endl;coutmystrcmp(str1,str2)endl;cout字符串的长度为:endl;coutmystrlen(str1)endl;void mystrcat(char *p1,char *p2) while(*p1!=0) p1+; while(*p2!=0) *p1=*p2;p1+;p2+; *p1=0;int mystrcmp(char *p1,char *p2) while(*p1!=0&*p2!=0) if(*p1!=*p2) return (*p1)-(*p2);break; else p1+;p

温馨提示

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

评论

0/150

提交评论