我正在复制一个程序,其目的是生成并冒泡排序随机数列表。这是代码:
#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);
}
我知道发布整件事情是冒犯的,但我不知道问题出在哪里。
答案 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;
}