| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:关于 return 的问题 求解!
只看楼主 加入收藏
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:7 
关于 return 的问题 求解!
写了一个函数 输入一个int数组 和它的长度,输出里面最小数的序号,如果说里面有两个或以上的数相等且是最小值,有没有什么办法把他们的序号都输出呢


大体框架如下
main()
{
   ...
   ...
   ...
}

int getMin(int a[],int length)
{
   int i = 1,min = 0;
   for(i = 1;i < lenth;i++)
   {
       if(a[min] > a[i])
       {
           min = i;
       }
    }
    return min;
搜索更多相关主题的帖子: return 
2014-09-21 14:47
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:0 
可以!

我不是砖家,要努力成为砖家。
2014-09-21 16:17
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:0 
简单说说:

#include<stdio.h>
int * getmin(int a[],int length,int *p);
int N=0;
int main()
{
    int a[5]={0,0,2,1,5};
    int *p,i;
    p=getmin(a,5,p);

    for(i=0;i<N;i++)
        printf("%d ",*p);
    return 0;
}

int * getmin(int a[],int length,int *p)
{
   int i = 1,min = 0,k;

   for(i = 0 ; i < length ; i++)
   {
       if(a[i] < a[min])
       {
           min = i;
       }
    }

   for(i = 0 ; i < length ; i++)
   {
       if(a[i]==a[min])
        N++;
   }
   p=new int[N];
   k=0;
   for(i = 0 ; i < length ; i++)
   {

       if(a[i]==a[min])
       {
           p[k]=i;k++;
       }
   }
   return p;
}
2014-09-21 18:03
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:3 
加个补充:
主函数改成
int main()
{
    int a[5]={0,1,0,1,0};
    int *p,i;
    p=getmin(a,5,p);

    for(i=0;i<N;i++)
        printf("%d ",*(p+i));  //注意这里的变化
    return 0;
}
2014-09-21 18:30
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
收藏
得分:0 
明白了 谢谢
2014-09-21 21:22
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:2 
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
int main(void)
{
   int *array=(int *)malloc(sizeof(int)*10000);
   int i;
   int j=0;
   while(fscanf(stdin,"%d",&i)!=EOF)
    {
       array[j]=i;
       j++;
     }
    void output(int *, int );
    output(array, j);
    return 0;
}
void output(int *array, int j)
 {
    int i,n;
    for(n=0;n!=j;n++)
    {
       if(array[n]<i)
       i=array[n];
    }
    for(n=0;n!=j;n++)
    {
        if(array[n]==i)
        printf("%d ",n);
    }
   printf("\n");
  }

[ 本帖最后由 fl8962 于 2014-9-22 23:41 编辑 ]

想抽苏烟了。
2014-09-22 23:39
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
收藏
得分:0 
output() 里面i值未初始化
可能有点问题哦
2014-09-25 17:10
nixk
Rank: 2
等 级:论坛游民
帖 子:32
专家分:12
注 册:2014-9-10
收藏
得分:0 
回复 4 楼 erty1001
asdasda

[ 本帖最后由 nixk 于 2014-9-25 18:02 编辑 ]
2014-09-25 18:01
快速回复:关于 return 的问题 求解!
数据加载中...
 
   



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

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