| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1224 人关注过本帖
标题:有关于函数和指针的编程
只看楼主 加入收藏
几米的月亮
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2018-4-28
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
有关于函数和指针的编程
#include<stdio.h>
刚学指针和函数,大神可以帮忙看一下错在哪里了吗

int main()
{
    double fun(int a[], int n, int*max, int*min);
    int n,i;
    int a[1000];
    int *max = a, *min = a+1;
    double d;
    scanf_s("%d\n", &n);
    for (i = 0;i < n - 1;i++)
        scanf_s("%d,",&a[i]);
    scanf_s("%d", &a[n - 1]);//输入n个数
    fun(a[1000], n,*max,*min);
    printf("%d\n%d\n", *max, *min);//输出最大值和最小值
    d = fun(a[1000], n, *max, *min);//输出均值
    printf("%f",d);

}
double fun(int a[], int n, int*max, int*min)
{
    int i;double z=0.000000;
    for (i = 0;i < n;i++)
        z = z / n + a[i] / n;//求均值
    return z;
    int m, j, k, t;
    for (m = 0;m < n - 1;m++)
    {
        k = m;
        for (j = m + 1;j < n;j++)
            if (a[j] > a[k])k = j;
        if(k!=m)
        {
            t = a[m];a[m] = a[k];a[k] = t;
        }
    }//从大到小排序
    max = a;min = a + n - 1;
}
搜索更多相关主题的帖子: 函数 int fun max min 
2018-05-14 21:42
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:10 
提问你也要问清楚呀,你预期什么结果,得到了什么结果,如果可以你还可以说说你觉得问题可能在哪?

先纠正个简单的

程序代码:
int main()
{
    double fun(int a[], int n, int*max, int*min);
    int n,i;
    int a[1000];
    int *max = a, *min = a+1;
    double d;
    scanf_s("%d\n", &n);
    for (i = 0;i < n - 1;i++)
        scanf_s("%d,",&a[i]);
    scanf_s("%d", &a[n - 1]);//输入n个数

    /* fun参数表是(int*, int, int*, int*) 你传参有*max, *min,这是解引用,想想结果变成了啥呢?
    下面一次的调用也是一样的问题 */
    //    fun(a[1000], n,*max,*min);

    printf("%d\n%d\n", *max, *min);//输出最大值和最小值
    d = fun(a[1000], n, *max, *min);//输出均值

    printf("%f",d);
}


程序代码:
double fun(int a[], int n, int*max, int*min)
{
    int i;double z=0.000000;
    for (i = 0;i < n;i++)
        z = z / n + a[i] / n;//求均值
    return z;    /*这里函数就被返回了,在这种情况下意味着之后的代码永远不会被执行*/
    int m, j, k, t;
    for (m = 0;m < n - 1;m++)
    {
        k = m;
        for (j = m + 1;j < n;j++)
            if (a[j] > a[k])k = j;
        if(k!=m)
        {
            t = a[m];a[m] = a[k];a[k] = t;
        }
    }//从大到小排序
    max = a;min = a + n - 1;
}
2018-05-14 22:19
几米的月亮
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2018-4-28
收藏
得分:0 
这样可以运行出来,但是函数中没用到int *max和int *min,可以提供一下思路,怎么创建原来有四个参数的函数吗

#include<stdio.h>
int main()
{
    double fun(int a[], int n);
    int n,i;
    int a[1000];
    double d;
    scanf_s("%d\n", &n);
    for (i = 0;i < n - 1;i++)
        scanf_s("%d,",&a[i]);
    scanf_s("%d", &a[n - 1]);
    fun(a, n);
        d = fun(a, n);
        int *max = a;int *min = a+n-1;
        int *p=a;
        for (p = a+1;p < (a + n - 1);p++)
        {
            if (*p > max)
                *p = max;
        }
        printf("%d\n", *p);
        for (p = a + n-1;p >a;p--)
        {
            if (*p < min)
                *p = min;
        }
        printf("%d\n", *p);
        printf("%f\n",d);
}
double fun(int a[], int n)
{
    int i;double z=0.000000;
    for (i = 0;i < n;i++)
        z = z / n + a[i] / n;
    return z;
}
2018-05-14 23:30
几米的月亮
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2018-4-28
收藏
得分:0 
回复 2楼 随风飘荡
实在搞不清关系了
2018-05-14 23:31
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:10 
看似是求一个数组的最大值、最小值和平均值
2018-05-15 04:57
快速回复:有关于函数和指针的编程
数据加载中...
 
   



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

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