编写一个函数随机生成元素为0到99的长度为n的数组

img


这是题目的要求,我在做第一个函数,题目说n是数组长度,可是我不知道怎么用到那个n。我用n=sizeof(a)/sizeof(a[0])会报错。
然后我直接不管n,定义了#define N 10,然后调用两次这个函数,生成的两个数组是一样的,这是为什么

img

img


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
void Sort(int *p,int n)
{
    int min,i,j,t;
    for(i=0;i<n-1;i++)
    {
        min=i;
        for(j=i+1;j<n;j++)
            if(p[min]>p[j])
                min=j;
        t=p[i];p[i]=p[min];p[min]=t;
    }
}

void Print(int *p,int n)
{
    int j=0;
    while(j<n)
    {
        printf("%d  ",p[j]);
        j++;
    }
    printf("\n");
}
void Init(int a[],int n)
{
    int j;
    srand((unsigned)time(NULL)); 
    for( j = 0; j < n; j++)
         { 
        a[j] = rand()%99;
         }
}
int main()
{
        int j=0;
        int n;
        printf("请输入n:");
        scanf("%d",&n);
        int a[n];
        Init(a,n);
        printf("原数组a[]:");Print(a,n);
        Sort(a,n);
        printf("排序后a[]:");Print(a,n);
        Sleep(1000); 
        int b[n];
        Init(b,n);
        printf("原数组b[]:");Print(b,n);
        Sort(b,n);
        printf("排序后b[]:");Print(b,n);
        int n2=n*2; 
        int c[n2];
        while(j<n)
        {
            c[j]=a[j];
            j++;
        }
        while(j<n2)
        {
            c[j]=b[j-n];
            j++;
        }
        printf("原数组c[]:");Print(c,n2);
        Sort(c,n2);
        printf("排序后c[]:");Print(c,n2);
        return 0;    
}




img

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

void Init(int a[], int n);
int a[N];
int main(void)
{
    int i;
    Init(a, N);
    
    for(i = 0; i < N; i++)
        printf("%d ", a[i]);
    return 0;
}

void Init(int a[], int n)
{
    time_t t;
    
    /* 初始化随机数发生器 */
    srand((unsigned)time(&t));
    
    while(n >= 0)
        a[--n] = rand() % 100;
}

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void Init(int a[],int n)
{
    int c;
    for (int i=0;i<n;i++)
    {
        c=rand()%100;
        a[i]= c;
    }
}

void Print(int *p,int n)
{
    for (int i=0;i<n;i++)
    {
        printf(" %2d", p[i]);
    }
    printf("\n");
}

int main()
{
    srand((unsigned int)time(NULL));

    int b[3];
    Init(b,3);
    printf("b:");Print(b,3);

    int a[5];
    Init(a,5);
    printf("a:");Print(a,5);

    return 0;
}
//b:  2  2 84
//a: 23 79 52 60 68
//