Fresh.587 2022-03-07 15: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-07 16: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;
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    Fresh.587 2022-03-08 15:20

    谢谢你天使

    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月8日
  • 创建了问题 3月7日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部