为什么C语言编译没问题,运行就出现遇到问题需要关闭大侠请指点下

#include <stdio.h>
#include <windows.h>
#define N 10
/******主函数给出一组数据从中查找出指定范围内的数据的个数*****/
main()
{int total;
int num(float p[],float*,float*);
float x[N]={1,22.2,11.3,12.4,12.5,23.6,32.7,8.9,17.7,22.5};
float *m1,*m2;
*m1=26.6;
*m2=16.6;
total=num(x,m1,m2); /*****调用函数*****/
printf("%d",total);
system("pause");
}
/****选取指定范围内的数据并返回记录个数****/
int num(float p[N],float*y1,float*y2)
{int i,n=0;
float u,v;
u=*y1;
v=*y2;
for(i=0;i<N;i++)
{while((p[i]<=u)||(p[i]>=v))
n++;
}
return (n);
}
那么如何申请,使用malloc?能不能给详细点的答案,我在追加10分一起给你,就这么多分了- -

#include <stdio.h>
#include <windows.h>
#define N 10
/******主函数给出一组数据从中查找出指定范围内的数据的个数*****/
main()
{int total;
int num(float p[],float*,float*);
float x[N]={1,22.2,11.3,12.4,12.5,23.6,32.7,8.9,17.7,22.5};
float m1=26.6,m2=16.6;
total=num(x,&m1,&m2); /*****调用函数*****/
printf("%d",total);
system("pause");
}
/****选取指定范围内的数据并返回记录个数****/
int num(float p[N],float*y1,float*y2)
{int i,n=0;
float u,v;
u=*y1;
v=*y2;
for(i=0;i<N;i++)
{if((p[i]<=u)&&(p[i]>=v))
n++;
}
return (n);
}
程序如上,已经修改可以运行。
主要问题有2个:
第一就是对为初始化的指针,进行解除引用操作。就是对未初始化的指针,对改指针指向的地方进行赋值。因为它没有初始化,所以它指向的地方,是不能赋值的。
记住指针,如果没有初始化,就不要直接使用它指向的地方,因为它指向的地方不确定,会出现访问的越权。
第二就是
int num(float p[N],float*y1,float*y2)
函数中的逻辑问题。
你要找到的是2个记录之间的。所以上面的程序修改了。
for(i=0;i<N;i++)
{while((p[i]<=u)||(p[i]>=v))
n++;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-13
*m1=26.6;
*m2=16.6;m1 m2没有申请空间 盲指针本回答被提问者采纳
相似回答
大家正在搜