实验七 指针与引用
一、实验目的和要求
1. 掌握指针、指针变量、指针常量的基本概念; 2. 掌握指针与数组、指针与函数的关系及应用。 3. 初步掌握引用的概念及简单应用。
二.相关知识点
1.指针变量的定义,由数据类型后跟星号,再跟指针变量名组成。
2.引用值是引自所指向的实体。 3.指针与数组都可以作为参数。
三.实验内容
1.题目:下面的程序中,调用了findmax()函数,该函数寻找数组中
的最大元素,将该元素的下标通过参数返回,并返回其地址值,编程实现findmax()函数。
1. 思路分析:
2. 编程如下:
# include < iostream.h >
int * findmax(int * array, int size, int * index); void main ( ) {
int a[10] = {33,91,54,67,82,37,85,63,19,68}; int * maxaddr; int idx;
maxaddr = findmax(a, sizeof(a)/sizeof( * a), &idx); cout<
max=*array; for(i=0;i
return p; } }
3. 实验结果:
}
2.读下列程序,
将其改写为传递引用参数;
将findmax()函数改写成非递归函数(重新考虑参数个数)。 # include < iostream.h> const size= 10;
void findmax(int* a, int n, int i, int * pk); void main ( ) {
int a[size]; int n = 0;
cout << \请输入\个数据:\ for(int i=0; i< size; i++) cin >> a[i];
findmax(a, size,0, &n);
cout <<\最大值为:\ <<\其下标为:\}
void findmax(int * a, int n, int i, int * pk) {
if(i if(a[i] >a[*pk]) *pk= i; findmax(a,n,i+1,&(*pk)); } } 1.思路分析: 2.编程如下: # include < iostream.h> 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 a[size]; int n=0; cout << \请输入\个数据:\ for(int i=0; i< size; i++) cin >> a[i]; // findmax(a, size,0, &n); findmax(a,size,0,n); cout <<\最大值为:\ <<\其下标为:\} /*void findmax(int * a, int n, int i, int * pk) { if(i void findmax(int *a,int n,int i,int &pk) { for(;i 3.实验结果 3.编制程序,将输入的一行字符加密和解密。加密时,每个字符依次反复加上“4962873” 中的数字,如果范围超过ASCII码的032(空格)~122('z'),则进行模运算。解密与加密的顺序相反。编制加密和解密函数,打印各个过程的结果。 例如,加密:the result Of 3 and 2 is not 8 得到密文为:xqk\ 1. 思路分析: 2. 编程如下: #include #include void jiami(char *,int ); void jiemi(char *,int ); void main() { char str[size]; cout<<\ gets(str); int len=strlen(str); cout<<\输入的源字符串为:\ jiami(str,len); cout<<\加密后的字符串为:\ jiemi(str,len); cout<<\重新解密后的字符串为:\} void jiami(char *a,int len1)