结构体数组定义乱序赋值方法
时间: 2023-07-08 13:12:03 浏览: 56
结构体数组定义时可以直接使用花括号进行初始化,如下:
```c
typedef struct {
int id;
char name[20];
} Student;
Student students[] = {
{1, "Student1"},
{2, "Student2"},
{3, "Student3"},
{4, "Student4"},
{5, "Student5"},
{6, "Student6"},
{7, "Student7"},
{8, "Student8"},
{9, "Student9"},
{10, "Student10"}
};
```
如果需要使用乱序赋值方法,可以使用上一条回答中的代码进行随机赋值,如下:
```c
Student students[N] = {0}; // 定义结构体数组并初始化为0
int i, j, k;
// 随机数生成器初始化
srand((unsigned)time(NULL));
// 乱序赋值
for (i = 0; i < N; i++) {
j = rand() % N; // 生成一个随机下标
if (students[j].id == 0) { // 判断该下标对应的元素是否已经赋值
students[j].id = i + 1;
sprintf(students[j].name, "Student%d", i + 1);
} else { // 如果已经赋值,则继续循环,直到找到未赋值的下标
k = j;
while (students[k].id != 0) {
k = (k + 1) % N;
}
students[k].id = i + 1;
sprintf(students[k].name, "Student%d", i + 1);
}
}
```
这样就可以在定义结构体数组时进行乱序赋值了。