当前位置:文档之家› C++程序设计实验七_参考答案

C++程序设计实验七_参考答案

广东金融学院实验报告课程名称:C++程序设计实验编号实验7数组与指针练习系别参考答案及实验名称姓名学号班级实验地点新电403实验日期2011-11-24实验时数4指导教师曲政同组其他成员无成绩一、实验目的及要求1.学习C/C++数组和指针的概念和使用方法。

2.练习C++/CLI托管数组的创建方法和元素访问方法。

二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)硬件设备:联网的个人计算机操作系统:Windows XP编译系统:Visual Studio2005三、实验内容及步骤(包含简要的实验步骤流程)1.内容和步骤⑴仔细阅读本课件的知识点和例题,努力理解其中的文字阐述和源代码,必要时可将源代码拷入Visual Studio2005生成的C++/CLR框架编译和运行,将运行结果与源代码对照,加深对C/C++数组和指针的理解。

⑵在理解本课件内容的基础上,编写C/C++程序实现下列文字描述:a.声明一个int型变量x,并赋初值3;b.打印x的值;c.打印x的地址;d.声明一个指向int的指针p,并让其指向变量x;e.打印p所指变量的值f.打印p的值;g.声明一个有10个元素的一维本地整型数组A,并为其赋初值0~9;h.在一个循环中打印A的所有元素的值;i.打印A的值;j.打印A的第一个元素的地址;k.声明一个指向int的指针q,并让其指向A的第一个元素;l.在一个循环中通过q后跟下标,打印出A的所有元素的值;m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值;n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值;o.在一个循环中通过q的负增量,反序打印出A的所有元素的值;p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值3,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。

q.声明一个本地类Point(可以用包含2个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值3和4,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。

r.声明一个int型指针t,在堆中创建一个3个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。

s.声明一个本地类Point类的指针u,在堆中创建一个3个元素的Point类的对象数组(需在Point中添加无参数构造函数)并将数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素分量的值,然后删除该数组。

t.用基本语法声明并创建一个10个元素的一维托管整型数组B,并在一个循环中为元素赋值0~9;u.在另一个循环中打印B所有元素的值。

v.用初值表方式声明并创建一个10个元素的一维托管整型数组C,并为其元素赋初值10~19;w.在一个循环中打印C所有元素的值。

x.用数组C为数组B赋值。

y.在一个循环中打印B和C所有元素的值。

2.提示和要求⑴首先将上面的文字描述拷入Visual Studio2005生成的C++/CLR框架,在每条文字描述之前加“//”将其变为注释,并在其下留一个空行准备编写对应的程序。

⑵对应于逐条文字描述,在其下编写程序(可能是一个或一组语句),每编写一条文字描述对应的程序,就编译(运行)一次,以保证语法和算法的正确性。

⑶当全部文字描述所对应的程序编写完成,并编译、运行正确,将文字描述和源代码拷入实验报告。

⑷对C/C++的数组和指针做简要总结。

四、实验结果(源程序)#include"stdafx.h"#include<stdio.h>using namespace System;int main(array<System::String^>^args){//a.声明一个int型变量x,并赋初值;int x=3;//b.打印x的值;printf("x=%d\n",x);//c.打印x的地址;printf("&x=%x\n",&x);//d.声明一个指向int的指针p,并让其指向变量x;int*p=&x;//e.打印p所指变量的值printf("*p=%d\n",*p);//f.打印p的值;printf("p=%x\n",p);//g.声明一个有个元素的一维本地整型数组A,并为其赋初值0~9;int A[10]={0,1,2,3,4,5,6,7,8,9};//h.在一个循环中打印A的所有元素的值;for(int i=0;i<10;i++)printf("A[%d]=%d\n",i,A[i]);//i.打印A的值;printf("A=%x\n",A);//j.打印A的第一个元素的地址;printf("A=%x\n",&A[0]);//k.声明一个指向int的指针q,并让其指向A的第一个元素;int*q=A;//l.在一个循环中通过q后跟下标,打印出A的所有元素的值;for(int i=0;i<10;i++)printf("q[%d]=%d\n",i,q[i]);//m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值;for(int i=0;i<10;i++)printf("q+%d=%d\n",i,*(q+i));//n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值;for(int i=0;i<10;i++){printf("q=%d,q++\n",*q);q++;}//o.在一个循环中通过q的负增量,反序打印出A的所有元素的值;for(int i=0;i<10;i++){q--;printf("q--,q=%d\n",*q);}//p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。

int*r=new int(3);printf("指针r所指动态变量的值为:%d\n",*r);delete r;//q.声明一个本地类Point(可以用包含个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值和,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。

struct Point{int m_x,m_y;Point(int x,int y):m_x(x),m_y(y){}Point(){}};Point*s=new Point(3,4);printf("Point::m_x=%d,Point::m_y=%d\n",s->m_x,s->m_y);delete s;//r.声明一个int型指针t,在堆中创建一个个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。

int*t=new int[3];t[0]=3;t[1]=4;t[2]=5;for(int i=0;i<3;i++)printf("t[%d]=%d\n",i,t[i]);//s.声明一个本地类Point类的指针u,在堆中创建一个个元素的Point类的对象数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素各个分量的值,然后删除该数组。

Point*u=new Point[3];u[0].m_x=1;u[0].m_y=2;u[1].m_x=3;u[1].m_y=4;u[2].m_x=5;u[2].m_y=6;for(int i=0;i<3;i++)printf("u[%d].x=%d,u[%d].y=%d\n",i,u[i].m_x,i,u[i].m_y);//t.用基本语法声明并创建一个个元素的一维托管整型数组B,并在一个循环中为其元素赋值0~9;array<int>^B=gcnew array<int>(10);for(int i=0;i<10;i++)B[i]=i;//u.在另一个循环中打印B所有元素的值。

for(int i=0;i<10;i++)Console::WriteLine("B[{0}]={1}",i,B[i]);//v.用初值表方式声明并创建一个个元素的一维托管整型数组C,并为其元素赋初值10~19;array<int>^C=gcnew array<int>(10){10,11,12,13,14,15,16,17,18,19}; //w.在一个循环中打印C所有元素的值。

for(int i=0;i<10;i++)Console::WriteLine("C[{0}]={1}",i,C[i]);//x.用数组C为数组B赋值。

B=C;//y.在一个循环中打印B和C所有元素的值。

for(int i=0;i<10;i++)Console::WriteLine("B[{0}]={1},C[{0}]={2}",i,B[i],C[i]);return0;}五、实验总结(包括心得体会、问题回答及实验改进意见,可附页)程序的屏幕输出如下:x=3&x=12f374*p=3p=12f374A[0]=0A[1]=1A[2]=2A[3]=3A[4]=4A[5]=5A[6]=6A[7]=7A[8]=8A[9]=9A=12f34cA=12f34cq[0]=0q[1]=1q[2]=2q[3]=3q[4]=4q[5]=5q[6]=6q[7]=7q[8]=8q[9]=9q+0=0q+1=1q+2=2q+3=3q+4=4q+5=5q+6=6q+7=7q+8=8q+9=9q=1,q++q=2,q++q=3,q++q=4,q++q=5,q++q=6,q++q=7,q++q=8,q++q=9,q++q--,q=9q--,q=8q--,q=7q--,q=6q--,q=5q--,q=4q--,q=3q--,q=2q--,q=1q--,q=0指针r所指动态变量的值为:3 Point::m_x=3,Point::m_y=4 t[0]=3t[1]=4t[2]=5u[0].x=1,u[0].y=2u[1].x=3,u[1].y=4u[2].x=5,u[2].y=6B[0]=0B[1]=1B[2]=2B[3]=3B[4]=4B[5]=5B[6]=6B[7]=7B[8]=8B[9]=9C[1]=11C[2]=12C[3]=13C[4]=14C[5]=15C[6]=16C[7]=17C[8]=18C[9]=19B[0]=10,C[0]=10B[1]=11,C[1]=11B[2]=12,C[2]=12B[3]=13,C[3]=13B[4]=14,C[4]=14B[5]=15,C[5]=15B[6]=16,C[6]=16B[7]=17,C[7]=17B[8]=18,C[8]=18B[9]=19,C[9]=19六、教师评语。

相关主题