Fresh.587 2022-03-07 23:07 采纳率: 88%
浏览 31
已结题

c语言中,如何将方法的形参由数组改为指向数组的指针?

我讲方法里面的形参由数组改为了指向数组的指针,为什么运行的时候只能输入一个n值就结束了?代码如下,有点混乱,请求指点🙏

#include "stdio.h"
#define MAXNUM 20
typedef int ElemType;
void Create(ElemType *p,int *n){
    int i;
    printf("\nPlease input n=");
    scanf("%d",&*n);
    printf("Please input %d data:",*n);
    for(i=1;i<=*n;i++)    
           scanf("%d",*(p+i));


}
void Maxmin(ElemType *p,int n,int *max,int *min,double *average){
    int i,sum;
    sum=0;
    *average=0;
    *max=*min=*(p+1);
    for(i=1;i<=n;i++){
        if(*(p+i)>*max)        *max=*(p+i);
        if(*(p+i)<*min)        *min=*(p+i);
        sum+=*(p+i);
    }
    *average=sum/(n*1.0);
}
void main(){

    int i,n,max,min;

    ElemType a[MAXNUM+1];

    ElemType *p;
    double average;
    Create(p,&n);
    printf("\nCreate is completed!\nThe data is:");
    for(i=1;i<=n;i++)
           printf("%4d",*(p+i));
    Maxmin(p,n,&max,&min,&average);
    printf("\nmax=%d    min=%d\naverage=%f\n",max,min,average);
}
  • 写回答

3条回答 默认 最新

  • _GX_ 2022-03-08 00:10
    关注

    帮你修改好了

    #include <stdio.h>
    
    #define MAXNUM 20
    
    typedef int ElemType;
    
    void Create(ElemType *p, int *n)
    {
        int i;
        printf("Please input n=");
        scanf("%d", n);
        printf("Please input %d data:", *n);
        for (i = 1; i <= *n; i++)
            scanf("%d", p + i);
    }
    
    void Maxmin(ElemType *p, int n, int *max, int *min, double *average)
    {
        int i, sum = 0;
        *max = *min = *(p + 1);
        for (i = 1; i <= n; i++)
        {
            if (*(p + i) > *max)
                *max = *(p + i);
            if (*(p + i) < *min)
                *min = *(p + i);
            sum += *(p + i);
        }
        *average = (double)sum / n;
    }
    
    int main()
    {
    
        int i, n, max, min;
        ElemType a[MAXNUM + 1];
        ElemType *p = a;
        double average;
        Create(p, &n);
        printf("Create is completed!\nThe data is:");
        for (i = 1; i <= n; i++)
            printf("%4d", *(p + i));
        Maxmin(p, n, &max, &min, &average);
        printf("\nmax=%d    min=%d\naverage=%f\n", max, min, average);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 在误装Windows server2019 后如何利用Windows.old恢复?
  • ¥20 代码实现状态连接包过滤防火墙的设计与实现
  • ¥15 vscode的红色箭头爆红和has no default export报错
  • ¥15 关于#sql#的问题:#情况描述 在用vs对项目进行调试时,出现找不到网络路径,然后查看SQL配置工具,发现SQL服务显示远程调用过程失败(相关搜索:防火墙)
  • ¥15 eNSP中基于默认路由及浮动路由的公司与分部互联和校园网综合项目
  • ¥15 主要进行描述泥浆在管路不同区段泥浆的密度不相同,泥浆的密度有高有低,此时管路的摩阻分布需要怎么计算,(标签-matlab)
  • ¥40 通过编制程序计算圆管内层流充分发展对流换热,参数如图5-4,以及公式5-16所示,要求用表5-6对程序计算准确性进行验证
  • ¥20 该学习哪个编程语言? AI会取代程序员吗?
  • ¥15 ensp如何拼通IP地址
  • ¥15 saber软件导入Ibis模型报错