| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1827 人关注过本帖
标题:来帮我改进这程序
只看楼主 加入收藏
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
结帖率:90.63%
收藏
 问题点数:0 回复次数:29 
来帮我改进这程序
如何求次大值,我做出了一部分,但有漏洞,当第一个为最大值时,就求不到次大值了,求改进,我做的程序具体如下:
#include "stdio.h"
#define N 10
void main()
{
    int array[N], i, max, second_max;
    for(i=0; i < N; i++)
        scanf("%d", &array[i]);
    max=array[0];
    for(i=0; i < N; i++)
    {
        if(array[i] > max)
        {
            second_max=max;
            max=array[i];
        }
    }
    printf("second_max=%d\tmax=%d\n",second_max, max);
}
求改进!

[ 本帖最后由 chen1204019 于 2012-12-9 23:23 编辑 ]
搜索更多相关主题的帖子: max include 最大值 如何 
2012-12-09 23:22
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
for (i = 0;i < N;i++)
{
    if (array[i] >= max)
    {
        second_max = max;
        max = array[i];
    }
    else if (array[i] > second_max)
        second_max = array[i];
}


[fly]存在即是合理[/fly]
2012-12-09 23:42
lijiale1994
Rank: 2
来 自:湖北孝感
等 级:论坛游民
帖 子:22
专家分:21
注 册:2012-12-10
收藏
得分:0 
这样试试吧,不过会很麻烦
#include "stdio.h"
#define N 10
void main()
{
 int array[N],i,max,second_max;
 for(i=0;i<N;i++)
  scanf("%d",&array[i]);
 max=array[0];
 second_max=array[1];
 for(i=0;i<N;i++)
 {
   if(array[i]>=max)
     max=array[i];
   if(array[i]<max)
    if(array[i]>=second_max)
     second_max=array[i];
   }
 printf("second_max=%d\t max=%d\n",second_max,max);
}
没有加备注啊,自己看看啊

新人发言,多多谅解
2012-12-10 07:59
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
这种求最值得问题,完全可以由排序来解决的
楼主试下冒泡排序吧
两个for循环就好了
2012-12-10 09:56
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 2楼 azzbcc
你的改进还是不行,会出现次大值等于最大值!

新手发言,请多指教!
2012-12-10 13:01
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 4楼 daniel_
那样有点麻烦,我要的是一次求出来!

新手发言,请多指教!
2012-12-10 13:03
qq839431011
Rank: 4
来 自:河北
等 级:业余侠客
帖 子:105
专家分:296
注 册:2012-12-5
收藏
得分:0 
程序代码:
# include<stdio.h>
# define N 4
int main()
{
  int array[N],i,max,second_max;
  for(i=0;i<N;i++)
      scanf("%d",&array[i]);
     max=array[0];
     second_max=array[1];

     for(i=0;i<N;i++)
         {
           if(array[i]>=max)
               {               
                  max=array[i];
               }
            else if(array[i]>=second_max)
                second_max=array[i];
         }    
     printf("second_max=%d,max=%d\n",second_max,max);
}

穷则变,变则通,通则久 寂寞平淡
2012-12-10 13:07
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 3楼 lijiale1994
你的改进还是有问题,当你输入第一个为次大值, 第二个为最大值时,会出现次大值和最大值相等!

新手发言,请多指教!
2012-12-10 13:08
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 5楼 chen1204019
因为我代码前面两个数初始化为 -999,都初始化为最大数就不用比较了


[fly]存在即是合理[/fly]
2012-12-10 13:10
chen1204019
Rank: 1
来 自:广东
等 级:新手上路
帖 子:93
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 7楼 qq839431011
你的和三楼的一样错误,我记得老师说过怎么做,但是我忘记了!

新手发言,请多指教!
2012-12-10 13:11
快速回复:来帮我改进这程序
数据加载中...
 
   



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

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