关于将产生的随机数存入数组的几行代码

Troi 2013-09-08 08:23:29
自己写了几行代码,是用srand函数将产生的随机数存入数组,供下面的函数调用,可是不能执行,哪位大侠帮忙看一下
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 30000
int CreateArray()
{
int i,j;
int a[]={0};
srand((unsigned) time(NULL));
printf("请输入产生随机数的个数: ");
scanf_s("%d",&j);
for(i=0;i<j;i++)
{
a[i]=rand();
printf("%d",a[i]);
}
printf("\n");
return 1;
}
void main()
{
CreateArray ;
}
...全文
338 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cao_julians 2013-09-08
  • 打赏
  • 举报
回复
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 30000 int CreateArray(int a[], int n) { int i; if(n<0 || n>N) return 0; //随机数个数不合理 for(i=0;i<n;i++) { a[i]=rand(); printf("%d\t",a[i]); } printf("\n"); return 1; } int main() { int a[N]; int m; int i; srand((unsigned) time(NULL));//只初始化一次,但可以多次调用CreateArray函数生成不同的随机数序列 printf("请输入产生随机数的个数: "); scanf_s("%d",&m); if(CreateArray(a, m)) for(i=0; i<m; i++) { //检验或处理生成的随机数数组 } //......继续 return 0; }
cao_julians 2013-09-08
  • 打赏
  • 举报
回复
点评一下: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 30000 int CreateArray()//数组的大小应该作为参数由主函数传入, { int i,j; //编程习惯,i,j表示序号,n,m表示个数 int a[N]={0};//这个首元素初始化为0似乎没有意义,后面重新对a[0]赋值了 //另外,这是个局部数组,当本函数结束后它就不存在了,没有实际意义 srand((unsigned) time(NULL)); printf("请输入产生随机数的个数: ");//随机数个数即数组元素个数应该由主函数确定、传入 scanf_s("%d",&j); //前面说过个数不要用j for(i=0;i<j;i++) { a[i]=rand(); printf("%d\t",a[i]);//只能看到元素的值并不能传回主函数 } printf("\n"); return 1; //只能返回1,有什么意义?并且主函数 中也没有接受、使用这个返回值 } int main() { //应该在主函数中创建数组并确定元素的个数,并将它们传递成被调用函数 CreateArray(); //在这里检验生成的随数数组 return 0; }
Troi 2013-09-08
  • 打赏
  • 举报
回复
引用 1 楼 zyaiwx 的回复:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  N 30000
int CreateArray()
{
    int i,j;
    int a[N]={0};
    srand((unsigned) time(NULL));
    printf("请输入产生随机数的个数: ");
        scanf_s("%d",&j);
    for(i=0;i<j;i++)
    {
        a[i]=rand();
        printf("%d\t",a[i]);
    }
    printf("\n");
    return 1;
}
int main()
{
    CreateArray();
    return 0;
}
小改了一下,你这个设计风格不好
所以是返回值的问题是吧?我也觉得实际的不是很好,运行的时候还会有异常
zybjtu 2013-09-08
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define  N 30000
int CreateArray()
{
    int i,j;
    int a[N]={0};
    srand((unsigned) time(NULL));
    printf("请输入产生随机数的个数: ");
        scanf_s("%d",&j);
    for(i=0;i<j;i++)
    {
        a[i]=rand();
        printf("%d\t",a[i]);
    }
    printf("\n");
    return 1;
}
int main()
{
    CreateArray();
    return 0;
}
小改了一下,你这个设计风格不好
Troi 2013-09-08
  • 打赏
  • 举报
回复
引用 4 楼 cao_julians 的回复:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 30000 int CreateArray(int a[], int n) { int i; if(n<0 || n>N) return 0; //随机数个数不合理 for(i=0;i<n;i++) { a[i]=rand(); printf("%d\t",a[i]); } printf("\n"); return 1; } int main() { int a[N]; int m; int i; srand((unsigned) time(NULL));//只初始化一次,但可以多次调用CreateArray函数生成不同的随机数序列 printf("请输入产生随机数的个数: "); scanf_s("%d",&m); if(CreateArray(a, m)) for(i=0; i<m; i++) { //检验或处理生成的随机数数组 } //......继续 return 0; }
因为是想把写的这些代码可以模块化清楚一点,这样就容易添加更多的模块了,所以写的不是越碎片化越好,看来是这样
xiaohuh421 2013-09-08
  • 打赏
  • 举报
回复
你的问题是这句导致的: int a[]={0}; 这句话就限定的, 你的数组长度为1. 所以下面只要你随机数个数输入大于1, 程序就可能会出问题了. 因为写越界, 导致栈被破坏.

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧