实验名称 | 引用和指针的比较 |
实验目的 |
|
实验任务 |
编写程序,调用传递引用的参数,实现两个字符串变量的交换: 例如开始: char *ap=“hello”; char *bp=“how are you”; 交换后的结果使得ap和bp指向的内容分别是 ap:“how are you” bp:“hello”
读下列程序。
/* 请输入10个数据: 33 91 54 67 82 37 85 63 19 68 最大的数是:91 它的下标是:1 ` */ #include <iostream> using namespace std; int const size=10; void findmax(int *a,int n,int i,int *pk); int main() { int a[size]; int n=0; cout<< "请输入"<<size<<"个数据:\n"; for( int i=0; i<size; i++) cin>>a[i]; findmax(a,size,0,&n); cout<<"最大的数是:"<<a[n]<<endl; cout<<"它的下标是:"<<n<<endl; return 0; } void findmax(int *a,int n,int i,int *pk) { if (i<n) { if (a[i]>a[*pk]) *pk=i; findmax(a,n,i+1,&(*pk)); } }
读下列程序,该程序生成有10个整数的安全数组。要把值放入数组中,使用put()函数;然后取出该值,使用get()函数;put()和get()中若遇下标越界则立刻终止程序运行。其运行结果为后面所示,请完成两个未写出的函数定义。 #include<iostream> using namespace std; int& put(int n); //put value into the array int get(int n); //obtain a value from the array int vals[10]; int error=-1; int main() { put(0)=10; //put values into the array put(1)=20; put(9)=30; cout<<get(0)<<endl; cout<<get(1)<<endl; cout<<get(9)<<endl; put(12)=1; //out of range return 0; } 运行结果要求为: 10 20 30 range error |
实验内容
#include<iostream> using namespace std; void exchange(int &a,int &b) { int temp=a; a=b; b=temp; } int main() {
int a=1,b=2; cout << "a= "<<a<< endl; cout <<"b= "<<b<< endl; exchange(a,b); cout << "a= "<<a<< endl; cout <<"b= "<<b<< endl;
return 0; }
#include<iostream> using namespace std; void exchange(int *a,int *b) { int temp=*a; *a=*b; *b=temp; } int main() {
int a=1,b=2; cout << "a= "<<a<< endl; cout <<"b= "<<b<< endl; int *p1=&a; int *p2=&b; exchange(p1,p2); cout << "a= "<<a<< endl; cout <<"b= "<<b<< endl;
return 0; }
#include<iostream> using namespace std; char* strcpy(char* dest,const char* source) { for(int i=0;i<sizeof(source);i++) { dest[i]=source[i]; } return dest; } int main() { char* source="abc"; cout <<"source="<< source<< endl; char* c1; c1=strcpy(c1,source); cout <<"c1="<< c1<< endl; return 0; }
//功能:把参数修改为数组中最大的数的下标 #include <iostream> using namespace std; int const size=10; void findmax(int *a,int size,int &pk); int main() { int a[size]; int n=0; cout<< "请输入"<<size<<"个数据:\n"; for( int i=0; i<size; i++) cin>>a[i]; findmax(a,size,n); cout<<"最大的数是:"<<a[n]<<endl; cout<<"它的下标是:"<<n<<endl; return 0; } void findmax(int *a,int size,int &pk) { int temp=a[0]; for(int i=0;i<size;i++) { if(temp<a[i]) { temp=a[i]; pk=i; } } }
#include<iostream> using namespace std; int& put(int n); //put value into the array int get(int n); //obtain a value from the array int vals[10]; int error=-1; int main() { put(0)=10; //put values into the array put(1)=20; put(9)=30; cout<<get(0)<<endl; cout<<get(1)<<endl; cout<<get(9)<<endl; put(12)=1; //out of range return 0; } int& put(int n) { if(n>=10) { cout <<"out of range"<< endl; } return vals[n]; } int get(int n) { if(n>=10) { cout <<"out of range"<< endl; } return vals[n]; } | |
小结 |