| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 327 人关注过本帖
标题:如何改动。输出几个相同最小值。
只看楼主 加入收藏
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
如何改动。输出几个相同最小值。
/*4、 要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其
中确定最小值的下标的操作在fun函数中实现*/
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# define N 20

int min(int a[], int n)
{
    int i, j = 0;
    for (i=1; i<N; i++)
    {
        if (a[i]<a[j])
            j = i;
    }
    return j;
}

int main(void)
{
    int i, array[N];
    srand((unsigned)time(NULL));
    printf("输出随机数组:\n");
    for (i=0; i<N; i++)
    {
        array[i] = rand()%10 + 1;
        printf("%2d ", array[i]);
        if (!((i+1)%10))
            printf("\n");
    }
    printf("\n");
    i = min(array, N);
    printf("输出最小值:\n");
    printf("array[%d] = %2d\n", i, array[i]);

    return 0;
}
如何改动。当有几个相同的最小值时。也一并输出。而不是只输出一个。谢谢!
搜索更多相关主题的帖子: return 如何 include 
2011-07-05 00:05
西元前的D调
Rank: 2
等 级:论坛游民
帖 子:15
专家分:78
注 册:2011-6-20
收藏
得分:10 
很容易啊,你的程序中已经求出了最小值,记最小值为m,程序后面稍微改动加一个for循环,

for(i=0;i<N;i++)
{
if(a[i]==m)
printf("arry[%d]=%2d\n",i,m);
}
2011-07-05 03:30
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:10 
仅供参考。
程序代码:
#include <stdio.h>
#include <time.h>

int main (void) {
        srand((unsigned)time(NULL));

        int a[20],b[20],i,j;
        int fun(int *a,int *b); //返回重复下标的个数,即数组b的个数
//生成随机数组
        for(i=0;i<20;i++)
                a[i]=rand()%11;
//打印
        for(i=0;i<20;i++)
                printf("%i ",a[i]);

        printf("\n");
//调用fun
        j=fun(a,b);
//打印重复最小值的数组b
        for(i=0;i<j;i++)
                printf("%i ",b[i]);

        printf("\n");

        return 0;

}

int fun(int *a,int *b) {
        int i,j,min=*a,k;
        for(i=0;i<20;i++) {
                if(*(a+i)<min) {
                        min=*(a+i);
                }
        }
        for(i=0,j=0,k=0;i<20;i++) {
                if(*(a+i)==min) {
                        *(b+j)=*(a+i);
                        j++;
                        k++;
                }
        }
        return k;
}


[ 本帖最后由 ansic 于 2011-7-5 10:02 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-07-05 09:54
快速回复:如何改动。输出几个相同最小值。
数据加载中...
 
   



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

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