作业 - 下标值既不是数组也不是指针也不是向量

时间:2016-08-22 07:47:22

标签: c

我正在复制一个程序,其目的是生成并冒泡排序随机数列表。这是代码:

    #include <stdio.h>

    #define MAX 10

    int a;
    int rand_seed=10;

    int rand()
    {
        rand_seed = rand_seed * 1103515245 + 12345;
        return (unsigned int)(rand_seed / 65536) % 32768;
    }

    void main()
    {
    int i,t,x,y;

//fill array
for (i = 0; i < MAX;i++)
    {
        a = rand();
        printf("%d\n",a);
    }
 /* bubble sort the array */


    for (x = 0; x < MAX-1; x++)
        for (y = 0; y < MAX -x - 1; y++)
            if (a > a[y+1]) {
            t = a;
            a = a[y+1];
            a[y+1] = t;
            }


printf("----------------\n");
for( i = 0; i < MAX;i++)
    printf("%d\n",a);
    }

我知道发布整件事情是冒犯的,但我不知道问题出在哪里。

2 个答案:

答案 0 :(得分:0)

我相信你的编译器已经指出了进攻线。在代码中

if (a > a[y+1])

您尝试将a用作数组,而它之前被定义为int

int a;

如果您希望a成为数组,则必须将其定义为数组,并使用rand()或类似内容填充每个成员。

答案 1 :(得分:0)

我很确定你希望a成为一个数组。在这种情况下试试这个:

int a[10];

for (i = 0; i < MAX;i++) {
    a[i] = rand();
    printf("%d\n",a[i]);
}

此部分也将改为:

if (a[y] > a[y+1]) {
    t = a[y];
    a[y] = a[y+1];
    a[y+1] = t;
}