| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7239 人关注过本帖
标题:[求助]求数组A[10]中的最大值,次大值。谢谢啊
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
方法大家都差不多,像6楼等等都不是用全体排序的方法,我的程序也只是6楼的一个加强版本而已,根本没什么大不了的.



但,C语言玩的就是技巧,看的就是谁构思巧妙;

如果你仅仅满足能做出这道题目,嘿嘿~~~



而且这里如果用全体排序(冒泡法)还有个效率问题,如果要比较的不只10个,而是10000个或者更多.



那么全体排序无异于是找死.


[此贴子已经被作者于2005-4-3 0:55:36编辑过]



淘宝杜琨
2005-04-03 00:40
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
#define check(a,b) (a<b)?a+=b,b=a-b,a-=b:1
int main()
{
int m[10]={110,210,-2,3,4,50,6,70,8,190},i=3,max=m[0],sec=m[1];
    for(check(max,sec);i<10;sec<=m[i]?sec=m[i],check(max,sec):1,i++);
    printf("max=%d,sec=%d\n",max,sec);
}

淘宝杜琨
2005-04-03 00:43
84531933
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2005-4-2
收藏
得分:0 
22楼的程序果然精练
但是也有弊端
假如同一个最大值有2个,就不能找出次大的

2005-04-03 08:12
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
既然有两个就无所谓最大和次大的了吧,
全部输出

淘宝杜琨
2005-04-03 08:18
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
以下是引用神vLinux飘飘在2005-4-3 0:43:47的发言: #define check(a,b) (a<b)?a+=b,b=a-b,a-=b:1 int main() { int m[10]={110,210,-2,3,4,50,6,70,8,190},i=3,max=m[0],sec=m[1]; for(check(max,sec);i<10;sec<=m[i]?sec=m[i],check(max,sec):1,i++); printf("max=%d,sec=%d\n",max,sec); }
什么玩意????唉, 你试试 int m[10]={60000,50000,55000,..........}

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-04-03 08:40
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
你还不如去试int m[10]={1.1,2.2,3.3.....}
或者直接杀了我好了

淘宝杜琨
2005-04-03 08:53
七七
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-3-30
收藏
得分:0 
#define N 10 #include <stdio.h> int main() { int a[N],temp[N]; int i,m,n; printf("please enter 10 intergers:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); for(m=0;m<9;m++) { for(n=m+1;n<10;n++) { if(a[m]>a[n]) { temp[m]=a[m]; a[m]=a[n]; a[n]=temp[m]; } } } printf("max=%d,second=%d",a[9],a[8]); getch(); return; } 我第一反应是这样的程序 不过神vLinux飘飘 的话确实精辟,就象敲了我一棒 呵呵 这个问题只需要最大值和次大值,应该需要考虑有没有其他更简单的方法的

2005-04-03 11:46
jehovahxxx
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-1-26
收藏
得分:0 
a[10]
你排个顺序 不就都有了 排好了再引用

for(i=0;i&lt;10-1;i++)
for(j=1;j&lt;10;j++)
if(a[j]&gt;a[i]) {t=a[i]; a[i]=a[j]; a[j]=t;}
对不对啊  排好了就是 次MAX 次次MAX 都有了`

#include \"stdio.h\" main() {FILE *myMind; printf(\"Life is A rollercoaster\"); /*生活就像过山车*/ if(myMind=fopen(\"My Heart\",\"w+\")==NULL) printf(\"tomorrow never comes\"); fputs(\"YOU\",myMind); printf(\"U\'R the last things on my mind!\"); }
2005-04-03 12:18
skidea
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2005-3-15
收藏
得分:0 
void main()
{
int i,max,a[10];
printf("input 10 numbers:\n");
for(i=0;i&lt;10;i++)
scanf("%d",&amp;a[i]);
max=a[0];
for(i=1;i&lt;10;i++)
if(a[i]&gt;max) max=a[i];
printf("maxmum=%d\n",max);
}

书上的

2005-04-03 13:06
84531933
Rank: 1
等 级:新手上路
帖 子:31
专家分:2
注 册:2005-4-2
收藏
得分:0 
以下是引用神vLinux飘飘在2005-4-3 8:18:06的发言: 既然有两个就无所谓最大和次大的了吧, 全部输出
那假如有10、10、9、8、7、6、5、4、3、2,这样10个数 最大的是10,次大的是9 怎么无所谓了 按你的程序,最大和次大都是10

2005-04-03 13:29
快速回复:[求助]求数组A[10]中的最大值,次大值。谢谢啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017135 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved