| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2961 人关注过本帖
标题:求助:求极大值问题
只看楼主 加入收藏
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
 问题点数:0 回复次数:18 
求助:求极大值问题
请教各位高手:下面这段代码,想求出数组a中的极大值,可是为什么只是显示前3个数据呢?就是说n的值最大为3,不明白为什么,望指教!
#include <stdio.h>
int find_max(float *a,float b[])
{int i,n=0;int M; int k; int c[]={0};
M=30;//sizeof(a);
for (i=2;i<M-2;i++)
{
   k=1;
   while (a[i-k]<a[i] && a[i+k]<a[i])
   {k++;
   if(k==3)
   {b[n]=a[i]; c[n]=i;n++;}
   }
}
for(i=0;i<n;i++)
printf("%d\n",c[i]);
printf("\n");
return (n);
    
}

void main()
{int n,i;  float a[30]={1,2,5,4,3,6,1,5,8,3,1,11,2,3,5,22,33,1,2,3,2,1,6,5,9,1,5,2}; float b[]={0};
n=find_max(a,b);
for(i=0;i<n;i++)
printf("%f\n",b[i]);
printf("%d",n);
}
搜索更多相关主题的帖子: int float void 
2007-12-25 12:27
万兽无缰
Rank: 1
等 级:新手上路
威 望:1
帖 子:296
专家分:0
注 册:2007-8-27
收藏
得分:0 
if(k==3)这句改成  if(k==30)看看

女朋友问我想怎么死~~~
             我说我想"爽死"
2007-12-25 17:18
shizhusz110
Rank: 1
等 级:新手上路
帖 子:307
专家分:0
注 册:2006-12-21
收藏
得分:0 
同意!
2007-12-25 17:27
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
得分:0 
这个n值 和k不相关啊?k值意思是和相邻k个值相比较。
2007-12-25 17:37
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
求最大值用这么真么麻烦么?
2007-12-25 17:41
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
得分:0 
我是想求极大值 不是最大值。如果你有好的代码,能不能给我?十分感谢。
2007-12-25 18:41
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
得分:0 
谁能帮帮忙啊?我实在弄不出来了,万分感谢!
2007-12-26 11:08
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你这个题目有点像今年下半年的软件设计师的考试题目啊,你自己找找看啊
2007-12-26 12:25
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include <stdio.h>
int find_max(int *a,int *b)
{
    int i,n=0;
    int M;
    int k;
    int c[30]={0};
    M=30;//sizeof(a);
for (i=2;i<M-2;i++)
{
   k=1;
   printf("%d,",a[i]);
   while (a[i-k]<a[i] && a[i+k]<a[i])
   {
       if(k==3)
       {
       b[n]=a[i];
       c[n]=i;
       n++;
       }
       k++;
   }
}
for(i=0;i<n;i++)
{
    printf("第%d是附近六项当中的最大值;\n",c[i]);
    printf("a[%d]得值是:%d\n",c[i],b[i]);
}
return (n);
   
}

void main()
{
    int n;  
    int a[30]={1,2,5,4,3,6,1,5,8,3,1,11,2,3,5,22,33,1,2,3,2,1,6,5,9,1,5,2};
    int b[30]={0};
    n=find_max(a,b);
   }
这个可以执行,而且也是对的.数组是要有确定大小的
2007-12-26 13:08
dumpling131
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-17
收藏
得分:0 
不对啊,我希望输出结果是5,6,8,11,33,3,6,9,可是我的程序只显示前边三个数,不知道为什么。
2007-12-26 18:04
快速回复:求助:求极大值问题
数据加载中...
 
   



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

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