C语言作业找出一个c语言动态二维数组组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。

> 求鞍点程序执行不了?什么原因?二维数组的鞍点即该位置上的元素在该行最大,在该列最小请问下面这个程序
求鞍点程序执行不了?什么原因?二维数组的鞍点即该位置上的元素在该行最大,在该列最小请问下面这个程序
tang068 & &
发布时间: & &
浏览:32 & &
回复:1 & &
悬赏:0.0希赛币
求鞍点程序执行不了?什么原因?二维数组的鞍点即该位置上的元素在该行最大,在该列最小!请问下面这个程序有什么错误执行不了:编译成功 & 但是输入明显有鞍点的二维数组却 & 没有反应!!
#include &stdio.h &
void & main()
int & a[5][5],i,j,
for(i=0;i &=4;i++)
for(j=0;j &=4;j++)
scanf( &%d, &,&a[i][j]);
& for(i=0;i &=4;i++)
& max=a[i][0];
for(j=0;j &=4;j++)
if(a[i][j]& max)
max=a[i][j];
for(i=0;i &=4;i++)
if(a[i][j] &max)
printf( &%d &,a[i][j]);
for(i=0;i &=4;i++)
max=a[i][0];
////////////////////
应该把大括号写在max的前面。否则整个for循环就只执行这一句。
for(i=0;i &=4;i++)
if(a[i][j] &max)
printf( &%d &,a[i][j]);
//////////////////////////
注意不要再用i了,否则整个大循环就会只执行一次。
if(a[i][j] &max)
printf( &%d &,a[i][j]);
////////////////////////
你不是要输出鞍点么?怎么都输出比鞍点小的数呢?另外这个查找方法也有点问题,你无法判断它究竟是不是鞍点。
还有.....不列举了。
修改如下:
#include &stdio.h &
void main()
int a[5][5],i,j,max,
for(i=0;i &=4;i++)
for(j=0;j &=4;j++)
scanf( &%d &,&a[i][j]);
for(i=0;i &=4;i++)
max=a[i][0];
tempj = 0;
for(j=0;j &=4;j++)
if(a[i][j]& max)
max = a[i][j];
for(int k=0;k &=4;k++)
if(a[k][tempj] &max)
printf( &%d
} tang123fei & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2- 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
2015年上学期C语言作业
下载积分:800
内容提示:2015年上学期C语言作业
文档格式:DOC|
浏览次数:1|
上传日期: 01:40:32|
文档星级:
该用户还上传了这些文档
2015年上学期C语言作业
官方公共微信共有 2153 人关注过本帖
标题:题目是:找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上 ...
等 级:新手上路
帖 子:17
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:6&&&
题目是:找一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
#include&stdio.h&
void main()
&&&&&&&&int max(int (*p)[4],int n);
&&&&&&&&int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
&&&&&&&&int s,t1,t2,t3;
&&&&&&&&t1=max(a[0],0);
&&&&&&&&t2=max(a[1],1);
&&&&&&&&t3=max(a[2],2);
&&&&&&&&s=t1+t2+t3;
&&&&&&&&if(s==3)
&&&&&&&&printf(&no&);
int max(int (*p)[4],int n)
{int i,t,s1,s2,q,g;
&&& for(i=0;i&4;i++)
&&& {&&&&&& if(*(*(p)+i)&t)
&&&&&&&&&&&&{t=*(*(p)+i);
&&&&&&&&&&&&q=i;
&&&&&&&&&&&&}
&&&&&&&&if(n==0)s1=1,s2=2;
&&&&&& else if(n==1)s1=0,s2=2;
&&&&&&&&else if(n==2)s1=0,s2=1;
&&&&&&&&if(*(*(p)+q)&*(*(p+s1)+q)&&*(*(p)+q)&*(*(p+s2)+q))
&&&&&&&&printf(&%d&,*(*(p)+q));
&&&&&&&&else
&&&&&&&&g=g+1;
&&&&&&&&return(g);
大虾们 这个那里错了哦
搜索更多相关主题的帖子:
等 级:新手上路
t1=max(a[0],0);
t2=max(a[1],1);
t3=max(a[2],2);
t1=max(&a[0],0);
t2=max(&a[1],1);
t3=max(&a[2],2);
函数调用错了!
等 级:新手上路
帖 子:17
t1=max(a[0],0);
t2=max(a[1],1);
t3=max(a[2],2);
t1=max(&a[0],0);
t2=max(&a[1],1);
t3=max(&a[2],2);
为什么是这个样子啊 我的书上写的 二维数组列标地址也可以用t1=max(a[0],0);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&t2=max(a[1],1);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&t3=max(a[2],2); 啊
等 级:新手上路
帖 子:17
不过&&我用了你的方法
你的方法是对的
是不是我的书错了啊
来 自:毅华
等 级:火箭侠
帖 子:720
专家分:3300
&&得分:15&
参数没问题,你进步多了,之前的错误都改好了,只剩下算法的问题。
if(n==0)s1=1,s2=2;
else if(n==1)s1=0,s2=2;&&& /*这里s1=0改成s1=-1*/
&&&&&&else if(n==2)s1=0,s2=1;&&& /*这里s1=0改成s1=-2&&s2=1改成-1*/
&&if(*(*(p)+q)&*(*(p+s1)+q)&&*(*(p)+q)&*(*(p+s2)+q)) /*这里的'&'小于号都改成'&'大于号*/
改完问题解决。
努力—前进—变老—退休—入土
等 级:新手上路
帖 子:17
等 级:新手上路
帖 子:17
版权所有,并保留所有权利。
Powered by , Processed in 0.025639 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++-中国学网-中国IT综合门户网站
> 编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++
编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++
转载 编辑:李强
为了帮助网友解决“编写程序,找出二维数组中的鞍点,即该位置”相关的问题,中国学网通过互联网对“编写程序,找出二维数组中的鞍点,即该位置”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:编写程序,找出二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。要求使用C语言,不是C++,具体解决方案如下:解决方案1:跪求,运行结果写出设计思路,源程序,流程图解决方案2:流程图发不了可以将答案发在邮箱解决方案3:}/ } else printf(&quot,n),arr[i][t]);;): juZhen[%d][%d]=%d\i++) { max=arr[i][0],&m; scanf(&拿去运行试试:&#92,i;j++) { if(max&m,n; if(have) { printf(&);n&n&quot,&n); free(arr);/ for(i=0; return 0;m;j&%d& printf(& } } printf(&quot,max,t; for(i=0; } } for(i=0.h&gt,t;m; for(i=0;* * 120题
*/n;i&lt,have=0;m;),m;i++) arr[i]=(int *)malloc(n*sizeof(int));m; for(j=0;arr[j][t])j&nOutput, char *argv[]){j++) { scanf(&j++) { if(arr[i][j]&;;n; t=j;n& int main(/;Please input a juZheng(%d hang#include &n&j& t=0:\i&lt,j,i++) { for(j=0;i&/i&lt.\*31 42 8 8832 57
45933 65 744 3 425 43 68 9 123 2134*/Pmax) { max=arr[i][j]; } } for(j=0, %d lie):&\%d%d&i++) free(arr[i]),*(arr+i)+j),i; printf(& } if(j==m) { have=1; int **arr=(int **)malloc(m*sizeof(int *));#include &lt.h&gt解决方案4:B; &#47,B - ) {(乐趣A] [B]&gt,B&gt。 ] [L]
INT A,&乐趣[A] [B]); &否则输出NO
printf的(“”);&gt,输出 {的printf(“%d月%d%d”的;} 其他 BR &#47,最大值;
= 1; {最大的乐趣[A] [B-1],B &}
(B = H-1; (A = 0,B&找到最大值的每一行 {(B = L-1;找到的最低值每列 {如果(乐趣[B] [N]乐趣[B-1] [N])分钟=乐趣[B] [N]; /
N = B-1,A + +)/ &#47,B + +) scanf的(“%d”?是平等的,发现= 0,N);乐趣[A] [B-1]) {最大的乐趣[A] [B]
N = B;H;&} (寻找== 0)&#47,B - ) &#47,最小值,N,A + +)(B = 0;& / &打破; 0;其他分钟=乐趣[B-1] [N];H;} } (== 1) BR / /初始化数组 (A = 0; &#47,分A;L;如果两个以上的值吗; 0; } (最大==分钟)/ &#47#中包含中包括 定义H 3 定义L 3 () {乐趣[H; 的getch()解决方案5:#define N 3#define M 4#include&stdio.h&void main(){int i,j,k,c,max,min,flag,a[N][M];for(i=0;i&N;i++){ for(j=0;j&M;j++)scanf(&%d&,&a[i][j]);}for(i=0;i&N;i++){max=a[i][0];k=0;for(j=0;j&M;j++) /*找第i行中的最大值位置(列)k*/{ if( a[i][j]&max) { max=a[i][j]; k=j; } }flag=1; /*判断max是否为第k列的最小值*/for(j=0;j&N;j++)if(a[j][k]&max) /*第i行最大位置k不是k列最小*/{ flag=0;} /*不是鞍点,令flag=0; 换行*/if (flag) /* 是鞍点,输出之;退出 */{ printf(&a[%d][%d]=%d\n&,i,k,a[i][k]);}}if (!flag) printf(& 没有鞍点 ! \n&);}解决方案6:这是C语言? 怎么是EXE程序。。。。不是.C文件解决方案7:.c是源程序文件,.exe是源程序编译连接后生成的,.c文件要变成.exe之后才能运行啊,大哥解决方案8:亲 你有看我的题吗。。。。只要一个鞍点的。。。你回答有问题通过对数据库的索引,我们还为您准备了:应该不难的,何必到这里来求助呢?你先建立数组来存储各行最大值,逐个查询他们是否属于各列最小值,或者有或者没有,不是很好处理嘛,不动脑筋。难道让大家帮你编写代码不成...=========================================== =========================================== 对每一行进行扫面 把该行上最大的值存起来 然后对于这个数字 判断是不是所在列最小的 如果是就保留 不是就删掉 这样最后有就输出 没有就给个no===========================================数组啊===========================================直接一个循环就可以了吧...n2然后用记录数组存下来分别输出。楼上应该是正确的...===========================================0; i 4; i++) { for (j = 0; j 4; j++) { k = a[i][0]; if (k a[i][j]) { m = k = a[i][j]; } } for (n = 0; n 4; n++) if (k a[n][m]) { flag = 0; } if (flag) { printf((%d,%d)%d是鞍点\n...===========================================鞍点可能不止一个,当然也有可能没有. 下例中: 133 255 789 第一行中的两个3,就都是鞍点.=========================================== 二维数组的鞍点是数组中的一个位置,这个位置上元素是所在行的最大值,同时是所在列的最小值。===========================================那个8不是鞍点!=========================================== 没分啊===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助7997人阅读
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 完成日期:2012 年 11 月 27 日
* 版 本 号:v1.0
* 输入描述:找出一个二维数组中的鞍点,即该位置上的元素在该行最大,在该列上最小(也可能没有鞍点)
* 问题描述:
* 程序输出:
* 问题分析:略
* 算法设计:略
#include&iostream&
#include&iomanip&
int main()
cout&&&请输入数组元素:&&&
const n=4,m=5;
//假设数组为4行5列
int a[n][m];
int i,j,max,
//定义布尔变量
for(i=0;i&n;i++)
//输入数组元素
for(j=0;j&m;j++)
cin&&a[i][j];
for(i=0;i&n;i++)
//输出矩阵
for(j=0;j&m;j++)
cout&&setw(5)&&a[i][j];
for(i=0;i&n;i++)
//开始时,假设a[i][0]最大,将列号(0)赋给maxj保存
max=a[i][0];maxj=0;
for(j=0;j&m;j++)
//找出第i行中的最大数
if(max&a[i][j])
max=a[i][j];
//将本行的最大数存放在max中
//将最大数所在的列号存放在maxj中
//先假设是鞍点,用flag为真来代表
for(int k=0;k&n;k++)
if(max&a[k][maxj])
//将最大数和其同分裂元素相比
//如果max不是同列最小,表示不是鞍点,令flag为假
//如果flag为真表示是鞍点
cout&&&a[&&&i&&&][&&&maxj&&&]=&&&max&&
//输出鞍点的值和其所在的行号和列号
//如果flag为假,表示鞍点不存在
cout&&&不存在鞍点!&&&
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:288130次
积分:4670
积分:4670
排名:第3129名
原创:182篇
评论:31条
(2)(10)(1)(5)(88)(75)(1)

我要回帖

更多关于 c语言二维数组鞍点 的文章

 

随机推荐