首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一段简单代码,vc++上调试没有关问题,运行就停止工作

2012-08-22 
一段简单代码,vc++下调试没问题,运行就停止工作#include stdio.h#include stdlib.h#include time.h#

一段简单代码,vc++下调试没问题,运行就停止工作
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
typedef struct point {float x;float y;} ;
float randl(){return 1.0*rand()/(RAND_MAX+1) ;} ;
float dist(point p,point q){
  float dx = p.x-q.x;
float dy = p.y-q.y;
return sqrt(dx*dx + dy*dy) ;
}

int main(int argc,char *argv[]){
int i,j,cnt=0,N=atoi(argv[1]) ;
float d = atof(argv[2]);
srand(time(NULL));
point *a = (struct point *)malloc(N*sizeof(*a)) ;
for(i=0;i<N;i++){
a[i].x = randl();
a[i].y = randl();
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(dist(a[i],a[j])<d) cnt++;
}
}
printf("%d egdes shorter than %f\n",cnt,d) ;
return 0;
}

[解决办法]
N=atoi(argv[1]) ;
float d = atof(argv[2]);

需要从控制台启动 输入参数

可以修改成这样 

int i,j,cnt=0,N;
float d;
scanf("%d %f",&N,&d);
[解决办法]
写日志,看执行到哪了
[解决办法]
N=atoi(argv[1]) ;d = atof(argv[2]);这两个有问题
[解决办法]
有几个问题:
1.typedef struct point {float x;float y;} point;//缺少类型
2.point *a = (struct point *)malloc(N*sizeof(*a)) ;
改成
point *a = (struct point *)malloc(N*sizeof(point)) ;
3.内存泄漏,没有free

貌似可以执行了
D:\code\csdn_test\Debug>csdn_test.exe 3 6.5
9 egdes shorter than 6.500000

热点排行