鞍点问题实验报告
深 圳 大 学 实 验 报 告
课程名称: C++程序设计
实验项目名称: 求二维数组中的鞍点
学院: 计算机与软件学院
专业:
指导教师: 张小健
报告人:邓清津 学号: 2011150146 班级: 03
实验时间: 2011-12-2
实验报告提交时间: 2011-12-7
教务部制
实验目的:①熟悉for语句和多重循环。
②熟悉二维数组。
③熟悉最大最小值的判定。
实验要求: 熟悉VC语言
伪代码:
/*找出一个二位数组中的鞍点,即该位置上的元素在该行上最大,
在该列上最小,也可能没有鞍点*/
定义一个二维数组矩阵,为N=4行,M=5列
#define M 4
#define N 5
手动输入4行5列的矩阵int a[N][M]=
{
{},{},{},{},
};
在初值i=0,条件i
找到第i行第0列中的最大数定义为k=a[i][0]。列逐级递增j=j+1,若递增过程中有a[i][j] > k,则k = a[i][j];p = j;
t = a[0][p];int l;l
行逐级递增l=l+1,若递增过程中有a[l][p] < t,
则t = a[l][p];
if(k == t)
则输出鞍点printf("a[%d][%d]=%d\n",i,p,k);
源程序:
#include
#define M 4
#define N 5
void main()
{
int i,j;
intk,t,p,l;
int a[M][N] =
{
{1,2,3,6,7},{0,1,2,5,0},{4,5,5,6,8}, {3,0,0,7,9}
};
printf("数组a :\n");
for(i = 0;i < M;i++)
{
for(j = 0;j < N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
for( i = 0;i < M;i++)
{
k = a[i][0];
for(j = 0; j < N;j++)
{
if(a[i][j] > k)
{
k = a[i][j];
p = j;
}
}
t = a[0][p];
for(l = 0;l < M;l++)
if(a[l][p] < t)
t = a[l][p];
if(k == t)
printf("a[%d][%d]=%d\n",i,p,k);
}
}样本输入与对应的输出:
①输入{1,2,3,6,7},
{0,1,2,5,0},
{4,5,5,6,8},
{3,0,0,7,9}
输出
②输入{5,0,3,6,7},
{0,5,2,5,8},
{4,5,9,6,8},
{3,2,1,7,9}
输出
③输入{5,0,3,6,0},
{0,5,2,5,8},
{4,5,9,6,8},
{3,2,1,7,9}
输出
④输入{1,1,1,1,1},
{0,1,1,1,1},
{0,0,1,1,1},
{0,0,0,1,1}
输出
⑤输入{1,5,1,1,1},
{0,1,0,0,0},
{0,7,1,1,1},
{0,9,0,1,1}
输出
实验心得:
通过学习二维数组的使用编辑寻找二维数组中的鞍点程序,熟悉了对for循环的认识和变量代换,对C++又增长了一定的熟练度,希望通过多加练习之后能够大致掌握一些简单的程序编辑。
指导教师批阅意见:
成绩评定: