您的当前位置:首页C++实验7及参考答案

C++实验7及参考答案

来源:小侦探旅游网


上海电力学院

实验报告

课程名称 高级程序设计C++(1) 实验项目 实验七 数组1

姓名 学号 班级 专业

同组人姓名 无 指导教师姓名 实验日期

一、实验目的

1、掌握一维数组的定义、赋值和输入输出的方法;

2、掌握与数组有关的算法(特别是排序算法)。

二、实验内容和步骤

编程序并上机调试运行。

1、 按如下要求编程: 在第一个循环中给a数组的前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1;在最后一个循环中输出对称折叠以后的a数组的前10个元素。

 程序源代码(注意添加注释)

1

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

#include

using namespace std;

int main()

{

int a[10],i;

for(i=0;i<10;i++) a[i]=i+1;

for(i=5;i<10;i++) a[i]=a[9-i];

for(i=0;i<10;i++) cout<return 0;

}

 运行结果(直接截取结果图)

2、已知长度为10的数组a及其各个元素的值,对其按从大到小进行排序.

 程序源代码(注意添加注释)

//这里给出了另外一种排序算法.(采用课堂上讲的冒泡排序也可以实现,参见ppt)

2

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

#include

using namespace std;

int main()

{

int i,j,a[10]={3,32,6,2,67,9,21,45,23,8};

for(i=0;i<10;i++)

{

int p;

p=i;

for(j=i;j<10;j++)//该for循环找剩下j个元素里最大的那个元素的下标

if(a[p]p=j;

if(p!=i)

{ //把目前的最大值a[p]放到前面来(和a[i]交换)

3

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

int t;

t=a[p];

a[p]=a[i];

a[i]=t;

}

}

for(i=0;i<10;i++)

cout<return 0;

}

 运行结果(直接截取结果图)

3、有一个已经从小到大排好序的整数数组:a[30]={6,9,12,15,19,23,45,67,89,98},现输入一个整数 x ,要求按原来的升序规律将它插入到数组中。

 程序源代码(注意添加注释)

4

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

#include

using namespace std;

int main()

{

int i,ps,n,a[30]={6,9,12,15,19,23,45,67,89,98};

cout<<\"请输入一个整数:\";

cin>>n;

ps=10;

for(i=0;i<10;i++) //该循环找应插入的位置

{

if(n{

ps=i;

break;

5

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

}

}

for(i=10;i>=ps;i--)//把插入位置之后(包括该位置)的元素依次往后挪一位

a[i+1]=a[i];

a[ps]=n; //插入输入的元素

for(i=0;i<11;i++)

cout<return 0;

}

 运行结果(直接截取结果图)

4.请用户输入n个数(n的值不超过20,并由用户输入),每输入一个数据之后,按照由小到大顺序将其存入,然后显示当前已存储的数据的情况,直到最后一个数据。

 程序源代码(注意添加注释)

#include

6

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

using namespace std;

int main()

{

int a[20],n,i,m,tmp,position;

//输入在-20之间的数据个数

cout<<\"请输入数据的个数(最多不超过个):\";

cin>>n;

while(n>20||n<1)

{

cout<<\"输入错误,请重新输入:\";

cin>>n;

}

//依次输入每个数据,并进行处理

for(i=0;i<=n-1;i++)

7

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

{

//输入第i+1个数据

cout<<\"请输入第\"<cin>>tmp;

position=i;//初始化插入的位置为i

//查找该插入的位置

for(m=i-1;m>=0;m--)

{

if(a[m]>tmp)

{

a[m+1]=a[m];

position--;

}

else

8

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

break;

}

//将该数据插入到已排好序的数列中

a[position]=tmp;

//以下输出当前数列

cout<<\"目前的数据序列为:\";

for(m=0;m<=i;m++)

cout<cout<}

return 0;

}

//注:该题插入的实现和上一题插入的实现有些不同(但都可以实现同样目的),请自行比较。

 运行结果(直接截取结果图)

9

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

5. 求解一个23阶矩阵与一个32阶矩阵的乘积,并输出。

 程序源代码(注意添加注释)

 #include

 using namespace std;

 int main()

 {

 int a[2][3],b[3][2],c[2][2],i,j,m;

 //输入

 //输入数组a

 for(i=0;i<=1;i++)

 for(j=0;j<=2;j++)

 {

 cout<<\"a[\"< cin>>a[i][j];

10

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 }

 //输入数组b

 for(i=0;i<=2;i++)

 for(j=0;j<=1;j++)

 {

 cout<<\"b[\"< cin>>b[i][j];

 }

 //计算乘法

 for(i=0;i<=1;i++)

 for(j=0;j<=1;j++)

 {

 //计算c[i][j]

 c[i][j]=0;

11

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 for(m=0;m<=2;m++)

 c[i][j]+=a[i][m]*b[m][j];

 }

 //输出

 //显示数组a

 cout<<\"a=\"< for(i=0;i<=1;i++)

 {

 for(j=0;j<=2;j++)

 cout< cout< }

 //显示数组b

 cout<<\"b=\"<12

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 for(i=0;i<=2;i++)

 {

 for(j=0;j<=1;j++)

 cout< cout< }

 //显示运算结果

 cout<<\"运算结果为:\"< for(i=0;i<=1;i++)

 {

 for(j=0;j<=1;j++)

 cout< cout< }

13

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 return 0;

 }

 运行结果(直接截取结果图)

6. 请用户输入一个2*2的矩阵,将其按行和按列复制的遍数,输出结果矩阵。

如矩阵

1 2

3 4

按行复制1遍,按列复制2遍后,结果矩阵为:

1 2 1 2 1 2

3 4 3 4 3 4

1 2 1 2 1 2

3 4 3 4 3 4

 程序源代码(注意添加注释)

 #include

14

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 using namespace std;

 int main()

 {

 int a[2][2],b[20][20],i,j,repl,repr;

 //输入数组a和复制的行列数

 for(i=0;i<=1;i++)

 for(j=0;j<=1;j++)

 {

 cout<<\"a[\"< cin>>a[i][j];

 }

 cout<<\"请输入复制的行数和列数(不超过9):\";

 cin>>repl>>repr;

 //实现复制

15

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 for(i=0;i<=repl;i++)

 for(j=0;j<=repr;j++)

 {

 b[i*2+0][j*2+0]=a[0][0];

 b[i*2+0][j*2+1]=a[0][1];

 b[i*2+1][j*2+0]=a[1][0];

 b[i*2+1][j*2+1]=a[1][1];

 }

 //输出

 cout<<\"结果为:\"< for(i=0;i<=repl*2+1;i++)

 {

 for(j=0;j<=repr*2+1;j++)

 cout<16

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

 cout< }

 return 0;

 }

 运行结果(直接截取结果图)

三、实验中遇到的问题以及解决方法

四、实验结论与体会

1、 结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。

2、 添加适当注释,注意书写的层次结构。

3、 整理上机步骤,总结经验和体会。

17

注:实验报告内容包括:实验目的与要求、实验原理与内容、实验步骤与记录、实验分析与结论等。

因篇幅问题不能全部显示,请点此查看更多更全内容