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;
}
答
修改见注释处,供参考:
#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;
}