| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:求问题在哪儿?
只看楼主 加入收藏
qgujinxin
Rank: 1
等 级:新手上路
帖 子:12
专家分:2
注 册:2010-11-23
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
求问题在哪儿?
/*找出任意个数中间的最大数和最小数,输出其位置和数值,提示:请使用动态内存管理函数结合课堂例程完成*/
#include<stdio.h>

#define ARR_SIZE 50

void findM(float num[],float *pmaxnum,*pminnum,int n,maxpos,minpos);/*函数申明*/

main()
{
    float num[ARR_SIZE],maxnum,minnum;
    int n,i,maxpos,minpos;

    printf("please enter total number:");
    scanf("%d",&n);
    printf("please enter the numbers:\n");
    for(i=0;i<n;i++)
    {
        scanf("%f",&num[i]);
    }
    findM(num,n,maxpos,minpos,&maxnum,&minnum);
        printf("maxnum=%d,maxpos=%d,minnum=%d,minpos=%d\n"maxnum,maxpos,minnum,minpos);
}

void findM(float num[],float *pmaxnum,*pminnum,int n,maxpos,minpos)
{
    int i;
    *pmaxnum=num[0];
    *pminnum=num[0];
    for (i=1;i<n;i++)
    {
        if(num[i]>*pmaxnum)
        {
            *pmaxnum=num[i];
                maxpos=i;
        }
        if(num[i]<*pminnum)
        {
            *pminnum=num[i];
                minpos=i;
        }
        
    }
}

运行很多次,就是不通过!求解!
搜索更多相关主题的帖子: 课堂 内存 include numbers please 
2010-12-14 20:09
夜猫
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-10-5
收藏
得分:0 
希望加点注释,很难读懂
2010-12-14 20:27
mengcong3959
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:113
注 册:2010-12-6
收藏
得分:5 
程序有点乱,,但首先你定义那个函数的实参和形参都不对应,怎么会编译成功呢,,然后不太明白你为什么要用这么多的参数,,你不觉得太乱了吗,其实你可以在你自己定义的那个函数里把你需要的信息输出就o了,没必要用这么多参数。这样更容易出错。其次,错误就是*pmaxnum=num[0];
 *pminnum=num[0];
 for (i=1;i<n;i++)
 {
 if(num[i]>*pmaxnum)
 i应该从0开始,其他就没什么问题了,,自己修改下吧
2010-12-14 22:08
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:5 
#include<stdio.h>

#define ARR_SIZE 50

void findM(float num[],int n,float *pmaxnum,float *pminnum,int *maxpos,int *minpos);/*函数申明*/

int main()
{
    float num[ARR_SIZE],maxnum,minnum;
    int n,i,maxpos,minpos;
    printf("please enter total number:");
    scanf("%d",&n);
    printf("please enter the numbers:\n");
    for(i=0;i<n;i++)
    {
        scanf("%f",&num[i]);
    }
    findM(num,n,&maxnum,&minnum,&maxpos,&minpos);
    printf("maxnum=%f,maxpos=%d,minnum=%f,minpos=%d\n",maxnum,maxpos,minnum,minpos);
    return 0;
}

void findM(float num[],int n,float *pmaxnum,float *pminnum,int *maxpos,int *minpos)
{
    int i;
    *pmaxnum=num[0];
    *pminnum=num[0];
    *maxpos=0;
    *minpos=0;
    for (i=1;i<n;i++)
    {
        if(num[i]>*pmaxnum)
        {
            *pmaxnum=num[i];
                *maxpos=i;
        }
        if(num[i]<*pminnum)
        {
            *pminnum=num[i];
                *minpos=i;
        }
        
    }
}

2010-12-14 22:10
mengcong3959
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:113
注 册:2010-12-6
收藏
得分:0 
还有,,你的要求是用动态内存管理,其实也就是一个动态数组,你也就没必要定义那个50的数组了,,只需定义一个指针,int *p;p=malloc(n*size(int));就行了,,实际上p也就相当于一个数组‘
2010-12-14 22:13
快速回复:求问题在哪儿?
数据加载中...
 
   



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

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