数学建模社区-数学中国

标题: 【C讨论组】程序不能运行,求救 [打印本页]

作者: sea_star666    时间: 2011-4-7 22:42
标题: 【C讨论组】程序不能运行,求救
本帖最后由 sea_star666 于 2011-4-7 23:02 编辑

下面程序有个错误,谁能指点一下?
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int heads()
  4. {
  5.         return rand()<RAND_MAX/2;
  6. }


  7. int main(int argc,char *argv[])//抛硬币模拟正态分布图形
  8. {
  9.         int i,j,cnt;
  10.         int N=atoi(argv[1]),M=atoi(argv[2]);//这个地方有错
  11.         int *f=malloc((N+1)*sizeof(int));

  12.         for(j=0;j<=N;j++)
  13.                 f[j]=0;
  14.         for(i=0;i<M;i++,f[cnt]++)
  15.                 for(cnt=0,j=0;j<=N;j++)
  16.                         if(heads())
  17.                                 cnt++;
  18.         for(j=0;j<=N;j++)
  19.         {
  20.                 printf("%2d ",j);
  21.                 for(i=0;i<f[j];i++)
  22.                         printf("*");
  23.                 printf("\n");
  24.         }


  25. return 0;
  26. }
复制代码




作者: sea_star666    时间: 2011-4-7 22:45
在VC6.0 中显示错误:initializing' : cannot convert from 'void *' to 'int *'
作者: madio    时间: 2011-4-8 08:12
问题出在int *f=malloc((N+1)*sizeof(int));这一句上,因为malloc返回的是void *类型的指针,想要使用必须要强制类型转换,改成int *f=(int *)malloc((N+1)*sizeof(int));或者换用new,new返回的是具体类型的指针。
作者: 水木年华zzu    时间: 2011-4-8 13:59
ceo真牛
作者: sea_star666    时间: 2011-4-9 00:46
本帖最后由 sea_star666 于 2011-4-9 00:48 编辑

回复 madio 的帖子

madio 不行啊,程序不能运行,内存不能读啊
  1. int N=atoi(argv[1]),M=atoi(argv[2]);       / /这个地方有错
  2.         //int N=30,M=1000;                                   //如果换成这个就是对的
复制代码




atoi没怎么用过,看了MSDN也没明白哪里出错

昨天那个程序其他地方有点错误今天改了
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int heads()
  4. {
  5.         return rand()<RAND_MAX/2;
  6. }


  7. int main(int argc,char *argv[])//抛硬币模拟正态分布图形
  8. {
  9.         int i,j,cnt;
  10.         int N=atoi(argv[1]),M=atoi(argv[2]);               //这个地方有错
  11.         //int N=30,M=1000;                                  //如果换成这个就是对的
  12.         int *f=(int *)malloc((N+1)*sizeof(int));

  13.         for(j=0;j<=N;j++)
  14.                 f[j]=0;
  15.         for(i=0;i<M;i++,f[cnt]++)
  16.                 for(cnt=0,j=0;j<=N;j++)
  17.                         if(heads())
  18.                                 cnt++;
  19.         for(j=0;j<=N;j++)
  20.         {
  21.                 printf("%2d ",j);
  22.                 for(i=0;i<f[j];i+=10)
  23.                         printf("*");
  24.                 printf("\n");
  25.         }


  26. return 0;
  27. }
复制代码
















欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5