第一范文网 - 专业文章范例文档资料分享平台

C++指针实验五实验报告

来源:用户分享 时间:2026/8/24 5:52:57 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

一.题目。分析程序运行结果 1.源代码(带注释) #include using namespace std;

void swapref(int *p1,int *p2); //函数声明 int main() { cout<<\ int iv1=888; //定义iv1等于888 int *pointer_1; //定义指针1 pointer_1=&iv1; //指针1指向iv1的数据地址 cout<<\ = \ cout<<\ //都输出888 cout<<\ = \ cout<<\ = \ //输出地址 cout<<\ int iv2=666; //定义iv2=666 int *pointer_2; //定义指针2 pointer_2=&iv2; //指针2指向iv2的数据地址 cout<<\ = \ cout<<\ //都输出666 cout<<\ = \ cout<<\ = \ //输出地址 cout<<\ swap(pointer_1,pointer_2); //调换pointer1和pointer2,pointer1和pointer2存放的是地址 cout<<\ = \ cout<<\ = \ //调换的是指针的地址,因此iv1和iv2的值不变 cout<<\ cout<<\ //指针1和指针2指向的对象被调换,因此*pointer_1=666,*pointer_2=888 cout<<\ = \ cout<<\ = \ //因地址被调换,所以输出pointer_1与pointer_2输出的地址被调换 return 0; }

void swap(int *p1,int *p2) //指针调换函数 { int temp; temp=*p1; *p1=*p2;

*p2=temp; }

2.结论初步熟悉指针的调用。 3.思考题答案 (1)注释看上代码。

(2)如果swap函数更改后,结果无变化,因为掉换的是地址

(3) 如果swap函数更改后,函数调用也更改后,iv1和iv2的值被掉换,因此*pointer_1和*pointer_2的值也被调换,但因为他们的地址没被调换,因此pointer_1和pointer_2的地址值没有变化。

二.题目 班级课程成绩计算 1.源代码:

#include using namespace std;

void averscore(int sco[][5],int avsco[5]) { int i,j,sum; for(i=0;i<5;i++){ sum=0; for(j=0;j<5;j++) sum=sum+sco[i][j]; avsco[i]=sum/5; } }

int avercourse(int (*psco)[5],int n) { int i,sum=0; for(i=0;i<5;i++) sum=(*psco+n)[i*5-1]+sum; return sum/5; }

void main() { int num[5]; int sco[5][5]; int avsco[5]; int i,j,sum,n; for(i=0;i<5;i++) num[i]=i+1; for(i=0;i<5;i++){ cout<<\请输入学号为\的学生的5门课程成绩(空格隔开):\\n\ for(j=0;j<5;j++) cin>>sco[i][j]; }

averscore(sco,avsco); for(i=0;i<5;i++){ cout<<\学号为\的学生的5门课程平均分为:\五门课程的成绩分别为:\ for(j=0;j<5;j++) cout<>n; sum=avercourse(sco,n); cout<<\第\门课程的5个学生的这门课程的总成绩的平均分为:\}

2.结论:初步熟悉指针对函数的调用。 3.思考题答案: (1)第二维需要足够的大小才可以接收二维数组的值,不指定第二维大小会造成空间不足。 (2)*(p+i)代表了i行的值,同理(*(p+i)+j)的j代表了j列,二级指针可调用二维数组的值。

三.题目:排序查找 1.源代码:

#include using namespace std; void sort(int *p,int n) { int i,k,index; for(k=0;k*(p+index)) index=i; swap(*(p+k),*(p+index)); } }

int half(int *p,int n,int m) { int k; k=n/2; if(*pm) return -1; while(1) { if(*(p+k)>m&&*(p+k+1)

n=k; k=k/2; } else if(*(p+k)>m) k=(n-k)/2+k; else return k+1; } }

void main() { int i,n,m,result; int *a; cout<<\请输入整数n:\ cin>>n; a=new int[n]; cout<<\请输入\个整数:\ for(i=0;i>a[i]; sort(a,n); cout<<\这\个数从大到小的排序如下所示:\ for(i=0;i>m; result=half(a,n,m); if(result==-1) cout<<\无此数!!!\\n\ else cout<<\这个数是数组的第\个数!\\n\ delete []a; }

2.结论:初步熟悉排序法和折半查找法的应用。 3.思考题答案:

(1)因为以上程序为例调用时相当于*p=a

(2)指针函数是用指针作为计算的变量,指针实际指向数组,而函数指针是在函数调用时通过函数指针调用数据。

搜索更多关于: C++指针实验五实验报告 的文档
C++指针实验五实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c86xtz19fqz4n7xz5ebb3_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top