| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 219 人关注过本帖
标题:这个程序哪里错了?请大家帮忙指出来
只看楼主 加入收藏
ilyff
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-11-14
结帖率:0
  已结贴   问题点数:1  回复次数:5   
这个程序哪里错了?请大家帮忙指出来
#include  <stdio.h>
#define  N  30
void FindMax(float income[], long num[], int n, float *pMaxIcome, long *pMaxNum);
int main()
{
    float  income[N], maxIncome;
    int    n, i;
    long   num[N], maxNum;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%ld%f", num[i] );
        scanf("%ld%f", income[i]);
    }
    FindMax( income, num, n, &maxIncome, &maxNum);
    printf("Maxincome=%.2f\tMnum=%ld\n", maxIncome, maxNum);
    return 0;
}
/*功能:计算职工的最高月收入及职工号
参数:  incomen 职工的月收入
     num 职工号
     n 职工数目
     pMaxIcome 指向最高月收入的指针
     pMaxNum 指向月收入最高的职工号的指针
*/
void FindMax(float income[], long num[], int n, float *pMaxIncome, long *pMaxNum)
{
    int i = 0;
    pMaxIncome = income ;
    pMaxNum = num ;
    for (i = 1; i < n; i++)
    {
        if (income[i] > *pMaxIncome)
        {
            *pMaxIncome = income[i];
            *pMaxNum = num[i];
        }
    }


}
2018-12-04 21:07
幻紫灵心
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:山咔咔里面
等 级:版主
威 望:24
帖 子:255
专家分:1674
注 册:2018-3-30
  得分:1 
scanf("%ld %f", &num[i], &income[i] );

.
*pMaxIncome = *income ;
    *pMaxNum = *num ;

saber,别哭.
2018-12-04 22:01
dpj149
Rank: 2
等 级:论坛游民
帖 子:11
专家分:28
注 册:2018-2-9
  得分:1 
//这个程序哪里错了?请大家帮忙指出来
#include  <stdio.h>
#include<stdlib.h>
#define  N  30
void FindMax(float income[], long num[], int n);
int main()
{
    float  income[N];
    int    n, i;
    long   num[N];
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%ld%f", &num[i],&income[i]);
    }
    FindMax(income, num, n);

    system("pause");
    return 0;
}
/*功能:计算职工的最高月收入及职工号
参数:  incomen 职工的月收入
num 职工号
n 职工数目
pMaxIcome 指向最高月收入的指针
pMaxNum 指向月收入最高的职工号的指针
*/
void FindMax(float income[], long num[], int n)
{
    int i = 0;
    float *pMaxIncome;
    long *pMaxNum;
    pMaxIncome = income;
    pMaxNum = num;
    for (i = 1; i < n; i++)
    {
        if (income[i] > *pMaxIncome)
        {
            *pMaxIncome = income[i];
            *pMaxNum = num[i];
        }
    }
    printf("Maxincome=%.2f\tMnum=%ld\n", *pMaxIncome, *pMaxNum);
}
你在主函数中声明了两个变量maxIncome和maxNum把他们的地址传递给函数FindMax()是不对的,因为主函数要从被调函数中得到最大收入和最大员工编号的值,需要使用返回机制的,你传递给被调函数两个未初始化的变量地址,把FindMax()计算出的结果给覆盖了,所以永远也得不到正确的值

[此贴子已经被作者于2018-12-4 22:40编辑过]

2018-12-04 22:31
幻紫灵心
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:山咔咔里面
等 级:版主
威 望:24
帖 子:255
专家分:1674
注 册:2018-3-30
  得分:0 
回复 3楼 dpj149
传地址返回参数是常用方法好吧?直接把我发那两个地方改了就可以用了。

saber,别哭.
2018-12-04 22:51
dpj149
Rank: 2
等 级:论坛游民
帖 子:11
专家分:28
注 册:2018-2-9
  得分:0 
回复 4楼 幻紫灵心
void FindMax(float income[], long num[], int n, float *pMaxIcome, *pMaxNum); //*pMaxIcome和*pMaxNum是形参
FindMax( income, num, n, &maxIncome, &maxNum);//在主函数中调用,&maxIncome和&maxNum是实际参数,要参与计算的,但是这两个都没初始化,没数值,两个地址里装的是随机的数字;按照他的思路应该是用这两个变量装FindMax()计算出的结果,应在FindMax()用return语句返回结果放入maxIncome和maxNum,但是函数只能返回一个结果,所以我改的把这两个变量删了
2018-12-05 12:48
幻紫灵心
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:山咔咔里面
等 级:版主
威 望:24
帖 子:255
专家分:1674
注 册:2018-3-30
  得分:0 
程序代码:
#include  <stdio.h>
#define  N  30
void FindMax(float income[], long num[], int n, float *pMaxIcome, long *pMaxNum);
int main()
{
    float  income[N], maxIncome;
    int    n, i;
    long   num[N], maxNum;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        scanf("%ld %f", &num[i], &income[i] );
    }
    FindMax( income, num, n, &maxIncome, &maxNum);
    printf("Maxincome=%.2f\tMnum=%ld\n", maxIncome, maxNum);
    return 0;
}
/*功能:计算职工的最高月收入及职工号
参数:  incomen 职工的月收入
     num 职工号
     n 职工数目
     pMaxIcome 指向最高月收入的指针
     pMaxNum 指向月收入最高的职工号的指针
*/
void FindMax(float income[], long num[], int n, float *pMaxIncome, long *pMaxNum)
{
    int i = 0;
    *pMaxIncome = *income ;
    *pMaxNum = *num ;
    for (i = 1; i < n; i++)
    {
        if (income[i] > *pMaxIncome)
        {
            *pMaxIncome = income[i];
            *pMaxNum = num[i];
        }
    }
}

5
111 1
222 2.3
333 1.4
444 4.5
555 2.2
Maxincome=4.50  Mnum=444

saber,别哭.
2018-12-05 15:10







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

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