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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效