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 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择