c语言编写函数提取数组里双精度的数,用新的数组保存并返回,输出不了

问题描述:


#include <stdio.h>
#include <stdlib.h>
#define N 10

double *getPart(double src[ ], int n, double x1, double x2, int *p){
    int i,j=0;
    double *a,*q;
    a=(double*)malloc(sizeof(double)*10);
    q=a;
    for(i=0;i<n;i++) {
        if(src[i]>x1&&src[i]<x2) {
            *q=src[i];
            q++;
            j++;
        }
    }
   *p=j;
    return a;
}

int main(){
    int m,n,i;
    double src[N],x1,x2;
    scanf("%d",&n);
    for(i=0;i<n;i++) {
        scanf("%lf",&src[i]);
    }
    scanf("%lf %lf",&x1,&x2);
    double str[N],*a;
    a=&str;
    //printf("%.2f",*a);
    a=getPart(src,n,x1,x2,m);
    for(i=0;i<m;i++) {
        printf("%.2lf",str[i]);
    }
    return 0;
}

img

修改见注释处,供参考:

#include <stdio.h>
#include <stdlib.h>
#define N 10
double *getPart(double src[],int n, double x1, double x2, int *p){
    int i,j=0;
    double *a,*q;
    a=(double*)malloc(sizeof(double)*10);
    q=a;
    for(i=0;i<n;i++){
        if(src[i]>x1 && src[i]<x2){
           *q=src[i];
           q++;
           j++;
        }
    }
    *p=j;
    return a;
}
int main(){
    int  m,n,i;
    double src[N],x1,x2;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%lf",&src[i]);
    }
    scanf("%lf %lf",&x1,&x2);
    double *a; //double str[N],*a; 修改
    //a=str;  //a=&str;       // 修改
    //printf("%.2f",*a);
    a=getPart(src,n,x1,x2,&m); //a=getPart(src,n,x1,x2,m); 修改
    for(i=0;i<m;i++){
        printf("%.2lf",a[i]);  //printf("%.2lf",str[i]); 修改
    }
    return 0;
}